【发布时间】:2019-05-21 02:46:43
【问题描述】:
我正在尝试关注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)
问题是我只能取回“Bloomberg”h1 标签,但网页上还有其他 h1 标签。当我查看processed_html 时,有些标签和类不存在。
我真的很喜欢请求库问题的解决方案,但感谢任何帮助或指导。
【问题讨论】:
-
替代解析器是
lxmlstackoverflow.com/questions/11465555/… -
是什么让你说有不止一个 h1 元素?查看包含快速 Ctrl-F 的链接的来源,这就是预期的结果
-
尝试使用此标头获取请求
{'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'} -
@HunterLiu 我能够重现这一点,并且返回的 html 似乎表明彭博服务器正在检测“异常行为”,因此提供的页面与您访问时看到的页面不同浏览器。这是我在 HTML 中看到的错误“我们从您的计算机网络中检测到异常活动。要继续,请单击下面的框,让我们知道您不是机器人。”可能有助于查看 Selenium chrome webdriver 以规避此问题,但不能保证。
标签: python beautifulsoup python-requests urllib