在伴随学习爬虫的过程中学习了解的一些基础库和方法总结扩展
1. urllib 在urllib.request module中定义下面的一些方法
urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=False,context=None)
打开一个url地址,这个url地址可以是一个字符串或者一个request对象
I 请求打开一个字符串地址
1 from urllib.request import urlopen 2 3 html = urlopen('https://www.baidu.com/') 4 print(html.read())
II 请求打开一个request对象
1 from urllib import request 2 3 req = request.Request('https://www.baidu.com/') 4 html = request.urlopen(req) 5 print(html.read())
如果需要向服务端发送特定的附件数据信息,数据必须是一个字节对象指定额外的数据发送到服务器,当数据参数被提供的时候HTTP请求将会执行Post请求而不是Get请求
数据应该是一个缓冲的标准应用程序以 x-www-form-urldecoded的格式。urllib.parse.urlencode()函数接受一个映射或序列集合,并返回一个ASCII文本字符串的格式。
III 返回值,urlopen这个函数的返回值包含上下文环境,使用with语句来进行操作。这个对象包含了下面的几个常用方法
1. geturl() 返回当前资源的url地址,也就是请求的url地址
2. info() 返回当前资源的meta-information 包括:headers等等
3. getcode() 返回请求的状态 200为成功 404为未找到
对于http和https的url请求,这个方法返回http.client.HTTPResponse类型的对象
对于ftp file 和data urls这个请求被URLOpener和FancyURLopener两个类型处理,并且返回urllib.response.addinfourl 对象。
2. urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)
将网站上的内容下载到本地的方法,如果这个url为本地地址,如果本地文件不支持就不会发生下载
函数的返回值为(filename,headers)组成的元组,filename为本地文件,headers和urlopen方法返回的info()方法返回一样
第二个参数filename,如果给定本地地址,会将临时文件保存到给定的地址中
第三个参数为一个钩子对调函数,一旦和请求网络建立连接每次传入都会讲传输的信息通过这个函数返回