刮与无限滚动网站(scrape websites with infinite scrolling)

2019-06-18 05:35发布

我已经写了很多,但铲运机我真的不知道如何处理无限滚动条。 这些天,大多数网站等,Facebook和Pinterest的有着无穷的滚动条。

Answer 1:

您可以使用硒报废无限滚动网站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 + "/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:如果需要打印的数据。



Answer 2:

有无限滚动DO(如Lattyware音符)大多数网站有一个适当的API,以及,你可能会使用这个而不是拼抢得到更好的服务。

但是如果你必须凑...

这类网站都使用JavaScript,当您到达页面的底部,要求从网站的附加内容。 所有你需要做的是找出的附加内容的URL,你可以找回。 搞清楚所需要的URL可以通过检查脚本,使用Firefox的Web控制台来完成,或者通过使用调试代理 。

例如,打开Firefox的Web控制台,关闭除净的所有过滤器按钮,并加载你想刮的部位。 你会看到所有的文件,因为它们被加载。 滚动页面边看Web控制台,你会看到正在使用的其他请求的URL。 然后你就可以自己请求URL和看到的数据是(很可能是JSON)是什么格式,并让它进入你的Python脚本。



Answer 3:

寻找AJAX源的URL将是最好的选择,但它可以为某些站点繁琐。 另外,您可以使用模拟浏览器像QWebKitPyQt发送键盘事件,同时从DOM树中读取数据。 QWebKit有一个很好的和简单的API。



文章来源: scrape websites with infinite scrolling