蟒蛇 - 网页抓取BeautifulSoup和urllib的
我使用python 3.4和我的脚本是这样的:蟒蛇 - 网页抓取BeautifulSoup和urllib的
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异常:内容长度应指定可以迭代的数据{'User-Agent':'Mozilla/5.0'}
如何获取html代码然后遍历标签以获取所有国家的列表?
尝试这种风格在urllib3:
import sys
import re
import time
import pprint
import codecs
import unicodedata
import urllib3
import json
urllib3.disable_warnings()
cookie = '_session_id=29913b5f1b8836d2a8387ef4db00745e'
header = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17'
url = 'https://yoururl.com/'
m = urllib3.PoolManager(num_pools = 15)
r = m.request('GET', url, None, {'User-Agent' : header, 'Cookie' : cookie})
print(r.data)
的进口超过需要。这只是我使用的刮刀的一大部分的片段。我使用一些正则表达式,因为我需要的小片段在正则表达式中比完整的优化器实现更快。
谢谢,通过使用url:* http://www.embassy-worldwide.com*,你会怎么样该页面的HTML,所以我可以用它来刮页面? –
'r.data'包含HTTP Response主体的原始转储。 – 2016-03-05 12:55:19
为一个请求简化代码。如果不需要,请删除Cookie条目。 – 2016-03-05 13:00:21
请使用'urllib3'。 – 2016-03-05 12:47:34
urllib有什么不好?你能举一个例子作为解决方案吗? –
'urllib'有许多已知的缺陷,它们在'urllib2'和'urllib3'(以及'request',它基于'urllib3')中被修复。如果没有任何好的指示,urllib可能会随机失败(特别是在高负载的情况下)。此外,在这个库中,在社区中,使用最新版本来防止旧版本可能会自动解决的问题是很常见的。 – 2016-03-05 12:53:26