python----urllib模块

urllib

官方文档:https://docs.python.org/3/library/urllib.html

Py2.x:

  • Urllib
  • Urllin2

Py3.x:

  • Urllib

变化:

  • 在Pytho2.x中使用import urllib2——-对应的,在Python3.x中会使用import urllib.requesturllib.error
  • 在Pytho2.x中使用import urllib——-对应的,在Python3.x中会使用import urllib.requesturllib.errorurllib.parse
  • 在Pytho2.x中使用import urlparse——-对应的,在Python3.x中会使用import urllib.parse
  • 在Pytho2.x中使用import urlopen——-对应的,在Python3.x中会使用import urllib.request.urlopen
  • 在Pytho2.x中使用import urlencode——-对应的,在Python3.x中会使用import urllib.parse.urlencode
  • 在Pytho2.x中使用import urllib.quote——-对应的,在Python3.x中会使用import urllib.request.quote
  • 在Pytho2.x中使用cookielib.CookieJar——-对应的,在Python3.x中会使用http.CookieJar
  • 在Pytho2.x中使用urllib2.Request——-对应的,在Python3.x中会使用urllib.request.Request

urlopen(url,data,timeout) 函数

打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作

1 import urllib.request
2 req = urllib.request.urlopen('http://www.baidu.com')
3 print(req.read())

  read() , readline() , readlines() , fileno() , close() 

  info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息。

  getcode():返回Http状态码,如果是http请求,200表示请求成功完成;404表示网址未找到。

  geturl():返回请求的url。

urlretrieve(url,filename,reporthook,data)函数 

下载url定位到的html文件,不写路径filename则会被存为临时文件可以用 urllib.urlcleanup() 来清理缓存

 1 file_name = urllib.request.urlretrieve('http://www.baidu.com','%s/baidu.html'%BASE_DIR) 

urlencode和parse_qs函数   

参数的解码和编码函数

1 import urllib.parse
2 dic = {'name':'melon','age':18}
3 data = urllib.parse.urlencode(dic)
4 
5 print(data)    

urlparse和urlsplit函数

将urlstr解析成各个组件

1 import urllib.request
2 import urllib.parse
3 url = "http://www.baidu.com"
4 parsed = urllib.parse.urlparse(url)
5 print(parsed)
6 #输出:ParseResult(scheme='http', netloc='www.baidu.com', path='', params='', query='', fragment='')

urljoin(baseurl,newurl,allowFrag=None)函数  

将url的根域名和新url拼合成一个完整的url

1 import urllib.parse
2 url = "http://www.baidu.com"
3 new_path = urllib.parse.urljoin(url,"index.html")
4 print(new_path)
5 #输出:http://www.baidu.com/index.html

*******************************************************

原文地址:https://www.cnblogs.com/garrett0220/p/9456055.html