我正在尝试遵循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
时,其中一些标签和类不存在。
我真的很想解决请求库问题,但是可以提供任何帮助或指导。
答案 0 :(得分:-1)
在教程中,您应该阅读:
抓取规则
在抓取之前,您应该查看网站的条款和条件 它。请仔细阅读有关合法使用数据的声明。 通常,您抓取的数据不应用于商业目的 目的。
现在或者a)本教程是在网站更新其服务条款之前写的,b)他们已经获得了刮除该网站的书面同意,或者c)本教程公然地忽略了它的建议。我会怀疑,自从2年前撰写本文以来,服务条款已发生更改,或者获得了他们的书面许可,但如果您阅读了网站的服务条款,则会看到以下内容:
...您不得使用或尝试使用任何 “抓取器”,“机器人”,“机器人”,“蜘蛛”,“数据挖掘”,“计算机代码” 或任何其他自动化设备,程序,工具,算法,过程或 访问,获取,复制或监视任何部分的方法 服务,在服务上找到或通过服务访问的任何数据或内容, 或任何其他未经事先明确书面同意的服务信息 BLP的同意。您不得伪造标题或进行其他操作 标识符以掩盖任何其他内容的来源。
所以我建议您找到一个不同的网站进行练习,它遵循相同的过程。