【问题标题】:request.get() not getting entire domrequest.get() 没有得到整个 dom
【发布时间】:2016-04-21 01:09:52
【问题描述】:

我正在抓取一个网站,但除非您向下滚动,否则某些产品不会出现在 DOM 中。例如看看this page

当我将 DOM 存储在一个变量中并尝试获取与产品对应的 div 时:

req = requests.get(*url*,verify=False)
soup = BeautifulSoup(req.text,'html.parser')
product_list = soup.findAll("div",class_="product-block")

product_list 仅包含 24 个元素(如果您完全向下滚动,则该页面中的产品数量不是 91 个)。 如何将完整的 DOM 存储在 req 中?

注意。 我不确定这是否是产品未出现在 product_list 中的原因,但这是我给出的解释,因为当我用 firefox 检查 DOM 时,如果我不向下滚动,我只会看到 24 <div class="product-block ..."> ,而不是 91。

【问题讨论】:

  • requests 库在 JavaScript 关闭的情况下加载 HTML 内容。您需要使用浏览器自动化工具,例如selenium
  • ...或者你需要自己做 xhr 请求

标签: python beautifulsoup python-requests


【解决方案1】:

该解决方案非常特定于页面,但它应该可以工作。在检查加载过程时发现,只要您向下滚动,浏览器就会向https://www.project6ny.com/collections/all-childrens-accessories?page=2 执行 AJAX 请求。如果您访问该 URL,您实际上会看到目录的第二页。

由于您可以确定最大页数(它在元素中,倒数第二个元素中),您可以申请the solution here 报废分页目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2018-05-20
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    相关资源
    最近更新 更多