urllb 的常见变化有:
在Python2.x中使用import.urllib2 -----------对应的,在Python3.x中会使用import.urllib.request,urllib.error
在Python2.x中使用import.urllib -----------对应的,在Python3.x中会使用import.urllib.request,urllib.error,urllib.parse
在Python2.x中使用import.urlparse -----------对应的,在Python3.x中会使用import.urllib.parse
在Python2.x中使用import.urlopen-----------对应的,在Python3.x中会使用import.urllib.request.urlopen
在Python2.x中使用import.urlencode-----------对应的,在Python3.x中会使用import.parse.urlencode
在Python2.x中使用import.quote -----------对应的,在Python3.x中会使用import.urllib.request.quote
在Python2.x中使用cookielib.CookieJar -----------对应的,在Python3.x中会使用http.CookieJar
在Python2.x中使用urllib2.Request -----------对应的,在Python3.x中会使用urllib.request.Request
以上,总结了Urllib相关模块中从Python2.x到python3.x的常见的一些变动,如果之前用的是python2.x版本的,依据这个变动关系,可以快速写出Python3.x的程序.
简单使用urllib方法:
import urllib.request #如果使用urllib方法,先导入urllib.request
file = urllib.request.urlopen(‘http://www.baidu.com’) #需要使用urllib.request.urlopen打开并爬取一个网页
html = file.read() #读取全部内容
html = file.readline()#读取一行内容
注:读取内容常见的有3种方法:
1> file.read()读取文件的全部内容,与readlines不同的屙屎,read会把读取到的内容赋予一个字符串变量
2> flie.readlines() 读取文件的全部内容,与read不同的是,readlines会把读取到的内容赋给一个列表变量,若要读取全部内容,推荐使用这种方式。
3> Flie.readline() 读取文件的一行内容
我们可以使用urllib.request 里面的urlretrieve()函数直接将对应信息写入本地文件,
格式为:urllib。reqeuest。urlretrieve(url,filename=本地文件地址)
注:使用urlretrieve保存,在执行过程中,会产生一些缓存,如果想清除这些缓存信息,可以使用urlcleanup()进行清除,输入一下代码即可清除urlretrieve执行所造成的缓存:
urllib.request.urlcleanup()
获取状态码:
file.gecode() 如果返回是200说明此响应正确
file.geturl() 获取当前爬取url地址
如果,url输入中文或者不符合标准的字符,需要编码:
urllib.request.quote(‘http://www.baidu.com’)
返回:
‘http%3A//www.baidu.com’
那么响应的,需要解码,使用:
urllib.request.unquote(‘http%3A//www.baidu.com’)
返回:
‘http://www.baidu.com’
如何使用代理服务器:
def use_proxy(proxy_addr,url):
import uellib.request
proxy = urllib.request.ProxyHandler({'http':proxy_addr})
opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
urllib.request.install_opener(opener)
data = urllib.reqeuet.urlopen(url).read().decode('utf-8')
return data
proxy_addr ='202.7.210.22:5555' #输入有效ip
data = use_proxy(proxy_addr,'http://www.baidu.com')
print(len(data))