繁体   English   中英

BeautifulSoup 未将预期标签返回为 Chrome

[英]BeautifulSoup doesn't return the expected tag as Chrome

我正在尝试解析一个页面来学习 beautifulSoup,这是代码

import requests as req
from bs4 import BeautifulSoup

page = 'https://www.pathofexile.com/trade/search/Delirium/w0brcb'
resp = req.get(page)

soup = BeautifulSoup(resp.content, 'html.parser')
res = soup.find_all('results')
print(len(res))

结果:0

目标是获得第一个价格。

我试图在 Chrome 中查找标签,它就在那里,但可能浏览器会发出另一个请求来获取结果。

有人可以解释我在这里缺少什么吗? 网站的源代码

代码问题

您的代码正在寻找“结果”元素。 您真正需要寻找的(根据您的屏幕截图)是具有 class “结果”的 div 元素。

所以试试这个:

soup.find_all("div", attrs={"class":"results"})

但是如果你想要价格,你必须更深入地挖掘包含价格的元素:

price = soup.find("span", attrs={"data-field":"price"}).text

网站问题

该站点似乎正在通过 Ajax 加载数据。 使用请求,您可以在 Ajax 数据调用之前/不获取页面。

在这种情况下,您应该从Requests更改为Selenium模块。 这将通过“真正的浏览器”导航,您可以等到数据最终加载后再开始抓取。

文档:Selenium

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM