【发布时间】:2014-04-03 06:15:27
【问题描述】:
我正在尝试从数字游戏分发网站 Steam (store.steampowered.com) 上列出的游戏中抓取“游戏标签”数据(与 HTML 标签不同)。据我所知,此信息无法通过 Steam API 获得。
一旦我获得了页面的原始源数据,我想将其传递到 beautifulsoup 中进行进一步解析,但我有一个问题 - urllib2 似乎没有读取我想要的信息(请求 em> 也不起作用),即使在浏览器中查看时它显然在源页面中。 例如,我可能会下载游戏“7 Days to Die”的页面 (http://store.steampowered.com/app/251570/)。在Chrome中查看浏览器源码页面时,可以看到以下关于游戏“标签”的相关信息 接近尾声,从第 1615 行开始:
<script type="text/javascript"> $J( function() { InitAppTagModal( 251570, {"tagid":1662,"name":"Survival","count":283,"browseable":true}, {"tagid":1659,"name":"Zombies","count":274,"browseable":true}, {"tagid":1702,"name":"Crafting","count":248,"browseable":true},...
在 initAppTagModal 中,有“生存”、“僵尸”、“制作”等标签,其中包含我想要收集的信息。
但是当我使用urllib2获取页面源时:
import urllib2 url = "http://store.steampowered.com/app/224600/" #7 Days to Die page page = urllib2.urlopen(url).read()
我感兴趣的源页面部分没有保存在我的“页面”变量中,而是在第 1555 行以下的所有内容都只是空白,直到结束正文和 html 标记。导致这个(包括回车):
</div><!-- End Footer --> </body> </html>
空白处是我需要的源代码(以及其他代码)应该在的位置。
我已经在几台安装了不同 python 2.7(Windows 机器和 Mac)的不同计算机上进行了尝试,并且在所有计算机上都得到了相同的结果。
如何获取我正在寻找的数据?
感谢您的考虑。
【问题讨论】:
-
他们可能会根据用户代理返回不同的页面。尝试将其欺骗到浏览器。
-
您通过浏览器查看源代码时是否已登录?我在浏览器中访问了该页面,但没有看到游戏标签。
标签: python web-scraping beautifulsoup urllib2 steam