urllib库
urllib库是python标准库中用于网络请求的库。该库有4个模块,分别是urllib.request,urllib.error,urllib.parse,urllib.robotparser。其中第一个与第二个模块子爬虫程序中应用比较频繁。
urlopen() 模拟浏览器发出一个HTTP请求,需要用到urllib.request模块。urllib.request的作用不仅是发起请求,还能获取请求返回结果,还能获取请求返回结果。下面先来看一下urlopen()的API。
urllib.request.urlopen{
url,
data=None,
[timeout,]*,
cafile=None,
capatn=None,
cadefault=False,
context=None
}
(1)url参数是string类型的地址,也就是要访问的URL,如“http://www.baidu.com”。
(2)data参数是bytes类型的内容,可通过bytes()函数转化为字节流,它也是可选参数。使用data参数,请求方法变成以post方式提交表单。
(3)timeout参数用于设置请求超时时间,单位是秒。
(4)cafile和capath参数代表CA证书和CA证书路径,如果使用HTTPS则需要用到。
(5)context参数必须是ssl.SSLContext类型,用于指定SSL设置。
(6)cadefault参数已经被弃用,可以略去。
(7)该方法可以单独传入urllib.request.Request对象。
(8)改函数返回的结果是一个http.client.HTTPResponse对象。
实际在实际使用中用的最多的参数就只有url与data。
抓取网页源码的实例
import urllib.request
url="http://www.baidu.com"
s=urllib.request.urlopen(url)
html=s.read()
print(html.decode('utf-8'))
有时候在访问网页时常常会遇到计算机网络慢或网站服务器压力大崩溃等,导致请求迟迟无法响应。同样的在程序去请求时也会遇到同样的问题因此可以手动设置一下超时时间。当超时时可以采取进一步措施,如直接丢弃请求或再请求一次。
这时我们可以使用timeout参数设置超时时间,单位是秒。
requests库
requests库是一个简洁且简单的处理HTTP请求的第三方库,它的最大优点是程序编写过程更接近正常URL访问过程。这个库建立在Python语言的urllib3库的基础上。
有关requests库的更多介绍请访问http://docs.python-requests.org。
requests库解析
函数 | 描述 |
---|---|
get(url [,timeout=n]) | 对应与HTTP的GET方式,获取网页最常用的方法,可以增加timeout=n参数,设定每次请求超时时间为n秒。 |
post(url,data={‘key’:‘valve’}) | 对应于HTTP的POST方式,其中字典用于传递客户数据。 |
delete(url) | 对应于HTTP的DELETE方式。 |
head(url) | 对应于HTTP的HEAD方式。 |
options(url) | 对应于HTTP的OPTIONS方式。 |
put(url,data={‘key’:‘value’}) | 对应于HTTP的PUT方式,其中字典用于传递客户数据。 |
get()函数的参数url链接必须采用HTTP或HTTPS方式访问
代码
import requests
url="http://www.baidu.com"
r=requests.get(url)
r.encoding='utf-8'
print(r.text)