如何使用Python从网址获取HTML?

时间:2019-05-21 02:46:43

标签: python beautifulsoup python-requests urllib

我正在尝试遵循this tutorial来了解有关网络抓取的信息。因为我使用的是Python3,所以我一直在使用urllib而不是urllib2来尝试正确地请求URL:

from urllib import request
# tried import urllib
# tried import urllib.request

url = "http://www.bloomberg.com/quote/SPX:IND"
raw_html = request.urlopen(url)

似乎没有正确打开URL的信息,我将收到此错误:

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed. 

我发现了一个可能的解决方案,但帖子中没有提到这样的错误。

最终,我真的很想使用Python requests library

import requests

url = "http://www.bloomberg.com/quote/SPX:IND"
raw_html = requests.get(url)

# get in BeautifulSoup format
processed_html = BeautifulSoup(raw_html.content, "html.parser")
# print('processed_html = ', processed_html)
h1 = processed_html.findAll("h1")
print('h1 = ', h1)

问题是我只会拿回“彭博” h1标签,但是网页上还有其他h1标签。当我查看processed_html时,其中一些标签和类不存在。

我真的很想解决请求库问题,但是可以提供任何帮助或指导。

1 个答案:

答案 0 :(得分:-1)

在教程中,您应该阅读:

  

抓取规则

     

在抓取之前,您应该查看网站的条款和条件   它。请仔细阅读有关合法使用数据的声明。   通常,您抓取的数据不应用于商业目的   目的。

现在或者a)本教程是在网站更新其服务条款之前写的,b)他们已经获得了刮除该网站的书面同意,或者c)本教程公然地忽略了它的建议。我会怀疑,自从2年前撰写本文以来,服务条款已发生更改,或者获得了他们的书面许可,但如果您阅读了网站的服务条款,则会看到以下内容:

  

...您不得使用或尝试使用任何   “抓取器”,“机器人”,“机器人”,“蜘蛛”,“数据挖掘”,“计算机代码”   或任何其他自动化设备,程序,工具,算法,过程或   访问,获取,复制或监视任何部分的方法   服务,在服务上找到或通过服务访问的任何数据或内容,   或任何其他未经事先明确书面同意的服务信息   BLP的同意。您不得伪造标题或进行其他操作   标识符以掩盖任何其他内容的来源。

所以我建议您找到一个不同的网站进行练习,它遵循相同的过程。