【发布时间】:2016-06-19 06:21:27
【问题描述】:
我正在使用 python 3.4,我的脚本如下所示:
import urllib
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
from bs4 import BeautifulSoup
url = "http://www.embassy-worldwide.com/"
headers={'User-Agent': 'Mozilla/5.0'}
#req = Request(url, headers)
try:
req = urllib.request.Request(url, headers)
#print (req)
except HTTPError as e:
print('Error code: ', e.code)
except URLError as e:
print('Reason: ', e.reason)
else:
print('good!')
print (req)
#html = urllib.request.urlopen(req)
with urllib.request.urlopen(req) as response:
html = response.read()
print(html)
上面的代码导致错误:
ValueError: Content-Length 应该为 {'User-Agent': 'Mozilla/5.0'} 类型的可迭代数据指定
如何获取 html 代码,然后迭代标签以获取所有国家/地区的列表?
【问题讨论】:
-
请,请,请使用
urllib3。 -
urllib 有什么不好?你能举个例子作为解决方案吗?
-
urllib有许多已知的缺陷,这些缺陷在urllib2和urllib3(以及基于urllib3的requests)中得到了修复。urllib可能会随机失败(尤其是在具有池化的高负载上),而没有任何好的迹象。此外,有了这个库,在社区中,使用最新版本来防止旧的重复出现的问题可能会自动使用新版本解决。 -
好的,谢谢你的信息。切换到 urllib3,但仍在努力获取 HTML 内容并将其传递给 BeautifulSoup。
-
req = requests.get(url, headers)和soup = BeautifulSoup(req.content)
标签: python-3.x web-scraping beautifulsoup urllib