python2.x 和python3.x 中urllib的区别,并简单使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38934189/article/details/83024012

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))

猜你喜欢

转载自blog.csdn.net/qq_38934189/article/details/83024012
今日推荐