我写了很多刮板,但我不知道如何处理无限滚动。这些天大部分网站等,Facebook,Pinterest有无限的滚动。scle网站无限滚动
回答
你可以使用硒来取消像twitter或facebook这样的无限滚动网站。
步骤1:使用PIP
pip install selenium
步骤2安装硒:使用下面的代码来自动无限滚动和提取源代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import sys
import unittest, time, re
class Sel(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://twitter.com"
self.verificationErrors = []
self.accept_next_alert = True
def test_sel(self):
driver = self.driver
delay = 3
driver.get(self.base_url + "https://stackoverflow.com/search?q=stckoverflow&src=typd")
driver.find_element_by_link_text("All").click()
for i in range(1,100):
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(4)
html_source = driver.page_source
data = html_source.encode('utf-8')
if __name__ == "__main__":
unittest.main()
步骤3:如果需要,打印这些数据。
循环是否意味着我们向下滚动100次?其中100是随机选择的数字。是对的吗? –
@satarupa你是对的循环向下滚动100次 –
大多数无限滚动的网站(如Lattyware笔记)也具有适当的API,并且您可能会更好地使用这种方式,而不是通过抓取。
但是如果你必须凑...
这类网站都使用JavaScript,当您到达页面的底部,要求从网站的附加内容。所有你需要做的是找出额外的内容的URL,你可以检索它。找出所需的URL可以通过检查脚本,使用Firefox Web控制台或使用debug proxy来完成。
例如,打开Firefox Web控制台,关闭除Net之外的所有过滤器按钮,然后加载要擦除的站点。您将在加载时看到所有文件。在浏览Web控制台的同时滚动页面,您将看到用于其他请求的URL。然后你可以自己请求这个URL,看看数据是什么格式(可能是JSON),然后把它放到你的Python脚本中。
你能举一个具体的例子来说明如何去做吗? – tatsuhirosatou
我已经添加了一些更多的细节,希望它有帮助! – kindall
找到ajax源代码的网址将是最好的选择,但对某些网站来说可能很麻烦。或者,您可以使用QWebKit
之类的无头浏览器从PyQt
发送键盘事件,同时从DOM树中读取数据。 QWebKit
有一个不错的和简单的API。
- 1. 访问使用无限动态滚动的网站元素
- 2. 在网站中无限重复背景的视差滚动
- 3. JS React网站的最佳无限滚动工具/组件?
- 4. 使用python无限滚动的抓取网站
- 5. 在网站上为无限滚动修剪图像
- 6. 如何用'无限'滚动空间创建一个网站?
- 7. Jquery从其他网站无限滚动加载内容
- 8. 无限滚动无网格上的滚动条
- 9. 无限滚动
- 10. JQUERY - 滚动网站
- 11. 如何下载无限滚动网页
- 12. 无限滚动网格和MVC
- 13. 网页无限滚动下来
- 14. 手机网站将无法滚动
- 15. 移动网站滚动
- 16. 无限滚动+ iphone
- 17. Vue.js无限滚动
- 18. RelayJS无限滚动
- 19. Yii无限滚动
- 20. UIScrollView无限滚动?
- 21. React无限滚动
- 22. 无限滚动QListWidget
- 23. ViewPager - 无限滚动?
- 24. UIScrollView无限滚动
- 25. jQuery - 无限滚动
- 26. CellList无限滚动
- 27. 无限滚动UIPageViewController
- 28. Laravel无限滚动
- 29. NodeJS - 无限滚动
- 30. Onsenui - 无限滚动
这里最好的选择就是使用这些网站的API--到目前为止,这将是最简单和最可靠的选择。除此之外,你将不得不处理JavaScript,这基本上意味着运行一个完整的浏览器 - 这样的库确实存在。 –
听起来像一个模拟,你可以指向一些处理jscript的例子 –