首页 > 解决方案 > (Python) 尝试在初始加载后更新的网页上使用 beautifulsoup 进行解析

问题描述

例如,如果你去这里:https ://www.basspro.com/shop/en/herters-hunting-rifle-ammo/

您会在第一次加载时注意到,它会显示库存中的所有内容。然后,页面将再次更新并显示所有缺货的东西。

有没有办法使用beautifulsoup 来解决这个问题?我开始认为我需要使用不同的策略来提取更新的 HTML 代码。

就目前而言,我的代码没有返回任何内容,因为 beautifulsoup 提取的代码中没有“缺货”文本。

content_wrapper = soup.find('div', class_='col2 gridCell StoreAvail editable anchored', id='StoreAvail_7')
cheese = content_wrapper.find('div', class_='sublist instore_inventory_section nodisplay',
                              id='WC_InStore_Inventory_Section_3074457345618960372')

print(cheese)

谢谢阅读。

标签: pythonhtmlwebweb-scrapingbeautifulsoup

解决方案


您正在抓取的网站不是服务器端呈现的,而是在客户端呈现的,可能使用一些 Javascript 库/框架,如 React.js 或 Angular。

如果您想抓取这样的网站,则需要使用无头浏览器。最流行的无头浏览器是Puppeteer,还有一个 Python 端口

Puppeteer 启动了一个真正的 chromium 实例,从而解析/呈现网站上所有 Javascript 驱动的内容。显然,这需要更长的时间。


推荐阅读