Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python下载网页的完整HTML时出现的问题_Python_Html_Beautifulsoup_Python Requests - Fatal编程技术网

使用Python下载网页的完整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

我正在做一个项目,我需要在的“当前分数”部分中找到的所有游戏ID来下载每个游戏的内容/解析统计数据。我希望能够一次性获得所有当前游戏ID,但由于某些原因,我无法下载页面的完整HTML,无论我如何尝试。我正在使用
请求
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>