[英]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模块。 这将通过“真正的浏览器”导航,您可以等到数据最终加载后再开始抓取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.