使用Python下载网页的完整HTML时出现的问题
我正在做一个项目,我需要在的“当前分数”部分中找到的所有游戏ID来下载每个游戏的内容/解析统计数据。我希望能够一次性获得所有当前游戏ID,但由于某些原因,我无法下载页面的完整HTML,无论我如何尝试。我正在使用使用Python下载网页的完整HTML时出现的问题,python,html,beautifulsoup,python-requests,Python,Html,Beautifulsoup,Python Requests,我正在做一个项目,我需要在的“当前分数”部分中找到的所有游戏ID来下载每个游戏的内容/解析统计数据。我希望能够一次性获得所有当前游戏ID,但由于某些原因,我无法下载页面的完整HTML,无论我如何尝试。我正在使用请求和beautifulsoup4 我的问题是: 我已经确定我感兴趣的特定标记是div,其中CSS类='scrblk'。因此,我编写了一个传递到BeautifulSoup.find_all()的函数,具体地说,它为我提供了带有该CSS类的块。看起来是这样的: def find_sc
请求
和beautifulsoup4
我的问题是:
我已经确定我感兴趣的特定标记是div
,其中CSS类='scrblk'。因此,我编写了一个传递到BeautifulSoup.find_all()
的函数,具体地说,它为我提供了带有该CSS类的块。看起来是这样的:
def find_scrblk(css_class):
return css_class is not None and css_class == 'scrblk'
因此,当我真的在Firefox中访问网页并保存它,然后在beautifulsoup4
中加载保存的文件时,我做了以下操作:
>>>soup = bs(open('nhl.html'))
>>>soup.find_all(class_=find_scrblk)
[<div class="scrblk" id="hsb2015010029"> <div class="defaultState"....]
>soup=bs(打开('nhl.html'))
>>>soup.find_all(类=find_scrblk)
[随着对你问题的评论,你必须重新思考你的方法。你在浏览器中看到的并不是回答所包含的内容。网站使用JavaScript加载你所需的信息,因此你应该更仔细地查看结果,以找到你要找的内容
将来要处理这些问题,请尝试Chrome的开发者控制台,禁用JavaScript并以这种方式打开一个站点。然后,您将看到您是否面对JS,或者该站点是否包含您要查找的值
顺便说一句,您所做的是违反NHL网站的服务条款(根据第2节禁止的内容和活动)
未经授权对内容或信息进行爬网、刮取或收集,或使用任何其他未经授权的自动方式编译信息
页面使用Javascript和AJAX加载数据。您应该使用浏览器的开发者控制台查看请求,也许您可以复制它们。当然,您首先需要获得nhl.com的许可才能使用它们的数据。顺便说一句,根据您的情况,去掉find_scrblk
函数,只需使用soup.find_all即可(class='scrblk')
您需要知道发送的是什么请求。您可以手动执行,然后复制,也可以使用。然后您还可以尝试使用进行报废。您好,谢谢您提供的信息。我肯定应该查看他们的服务条款。我想我只需要手动执行这一部分即可>\uu>