我正在抓取一个网站,但有些产品不会出现在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
?
NB。
我不确定这是否是产品没有出现在product_list中的原因,但这是我给出的解释,因为当我用firefox检查DOM时,如果我不向下滚动,我只看到24 <div class="product-block ...">
,而不是91。
答案 0 :(得分:2)
解决方案非常适合页面,但它应该可行。在检查加载过程时,事实证明,只要向下滚动,浏览器就会向https://www.project6ny.com/collections/all-childrens-accessories?page=2
执行AJAX请求。如果您访问该URL,您将实际看到该目录的第二页。
由于您可以确定最大页数(它在元素中,倒数第二个元素),您可以应用the solution here来删除分页目录。