【问题标题】:Web scrape with python | Limited objects用python抓取网页|有限的对象
【发布时间】:2017-12-20 20:46:50
【问题描述】:

我正在尝试从使用 pc 部件的网站获取数据,并且我有这个页面上有超过 3500 个部件的链接,问题是如果我使用干净的链接: https://www.komplett.no/search?q=pc

它只获取在我向下滚动之前存在的数据并加载新项目。

所以我把链接编辑成这样: https://www.komplett.no/search?q=pc&hits=1000

现在它从超过 1000 种产品中获取所有信息,但我无法对此进行详细说明,因为脚本只是不想工作,我没有收到错误或任何错误。 顺便说一句,我只得到打折的东西,所以它没有那么多数据。

我想要一种方法来浏览漏洞页面,而不必写下我想要浏览的产品数量的限制。

【问题讨论】:

    标签: python web web-scraping


    【解决方案1】:

    这是我将如何处理这个网络抓取任务:

    看起来当您滚动到底部时,页面中添加了 24 个新项目。因为当我们通过pc 过滤时我看到有 3919 个结果,所以让我们使用像 PhantomJS 这样的无头浏览器/JavaScript 引擎并告诉它滚动到页面底部,然后等待几秒钟以加载新结果,然后重复该过程 3919/24 次。为此,您需要安装像 PhantomJS 这样的网络驱动程序

    from selenium import webdriver
    
    driver = webdriver.PhantomJS()
    driver.get('https://www.komplett.no/search?q=pc')
    num_pages = int((3919/24) + 1)
    for _ in range(num_pages):
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(3)
     
    html = driver.page_source.encode('utf-8')
    

    完成循环后,您可以调用.driver.page_source.encode('utf-8') 来捕获当前加载到 DOM 树上的 html,然后使用该数据进行其余的网络抓取。

    顺便说一句,我前段时间做了一个 PC 抓取项目,here's the link 如果你想看看的话。

    【讨论】:

    • 你可以从komplett.no/search?q=pc&hits=1000开始节省时间
    • @EvenLauvrak 嘿没问题。如果解决方案对您有用,您可以将答案标记为已接受吗?否则,如果您需要更多帮助,请告诉我。谢谢!
    • 是的,我会接受的。如果还有什么我会告诉你的。
    猜你喜欢
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多