python - (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)
谢谢阅读。
解决方案
您正在抓取的网站不是服务器端呈现的,而是在客户端呈现的,可能使用一些 Javascript 库/框架,如 React.js 或 Angular。
如果您想抓取这样的网站,则需要使用无头浏览器。最流行的无头浏览器是Puppeteer,还有一个 Python 端口。
Puppeteer 启动了一个真正的 chromium 实例,从而解析/呈现网站上所有 Javascript 驱动的内容。显然,这需要更长的时间。
推荐阅读
- string - 返回一个数组
? 在科特林 - javascript - 处理 document.location (href) 更改
- django - django rest框架访问和编辑嵌套模型
- python - 如何使用 python 绘制带有形状文件和纬度长网格线的 geoTiff 文件?
- c# - 使用 System.Text.Json 将 JSON 反序列化为对象
- sql - 如何在 SQL Server 中使用 where 子句计算行数?
- java - 一个 Glassfish3 实例发生异常,但另一个实例没有:“java.lang.String 无法转换为 org.slf4j.Marker”
- html - 仅当鼠标悬停在图像中心时,在图像顶部显示链接并降低图像不透明度?
- python - ** 或 pow() 不支持的操作数类型:“list”和“int”错误
- c# - 将 .xaml 文件引用到另一个文件夹中的 .cs 文件