所以我想用beautifulsoup从我的steam愿望列表中删除游戏。理想情况下,我想游戏的名称,链接到蒸汽商店网页的游戏和目前上市的价格。问题是,当我调用soup.find_all("div", {"class": "wishlist_row"})
时,它返回一个空列表,尽管我能够在inspector中看到每个游戏的愿望列表上都应该有几个div。以下是我当前代码的精简版本:
from bs4 import BeautifulSoup
import requests
profile_id = "id/Zorro4"
url_base = "https://store.steampowered.com/wishlist/"
r = requests.get(url_base + profile_id + "#sort=order", headers=header)
data = r.text
soup = BeautifulSoup(data, features="lxml")
# find divs containing information about game and steam price
divs = soup.findAll("div", {"class": "wishlist_row"})
print(divs)
>>> []
如果我转到https://store.steampowered.com/wishlist/id/zorro4/#sort=order,我可以在检查器中清楚地看到这些div 我试过了
.find("div", {"class": "wishlist_row"})
我注意到一些奇怪的事情可能有助于解决这个问题,但我不知道该怎么办。你知道吗
soup.find(id="wishlist_ctn") # The div which should contain all the wishlist_row divs
>>> <div id="wishlist_ctn">\n</div>
据我所知,这应该返回<div id="wishlist_ctn">...</div>
,因为div包含更多嵌套的div(我正在寻找的那些)。我不知道为什么它只返回换行符。这几乎就好像当你把愿望清单上的东西都弄丢了一样。任何帮助都将不胜感激,过去几天我一直试图解决这个问题,但都没有成功。你知道吗
您在网页上看到的数据是通过Javascript/JSON动态加载的。 加载数据的URL位于HTML页面内—我们可以使用
re
模块来提取它。你知道吗此示例打印wishlist的JSON数据:
印刷品:
问题是wishlist实际上是由AJAX请求填充的。靓汤不具备这种功能。你需要一个网络驱动程序。幸运的是,这里的捷径是只使用为wishlist发出的API调用并解析JSON响应。在这种情况下,请求是:
https://store.steampowered.com/wishlist/profiles/76561198068616380/wishlistdata/?p=0
相关问题 更多 >
编程相关推荐