访问网页、爬取html页面
要想爬取网页第一步就要访问网页。
由于机器访问网页会加大服务器的负荷,所以一般服务器会通过user-agent的http头部信息、robots.txt排除网络爬虫协议、访问频率、提交表单、验证码的手段来限制非人类的访问。
前三者还可以解决轻松应对,但是对于提交表单和验证码暂时只能通过cookie来维持登录状态来进行爬取,没有更好地手段来应对这方面限制。
Request库
凡是使用第三方库,我们首先要安装好python 包管理工具(pip),安装方法详见pip官网,安装好后就可以在cmd或者anaconda prompt使用pip命令安装其它python第三方库了。
requests库给出了7种向服务器提交请求的方法各自对应着http请求方法
方法 | 说明 |
---|---|
requests.request() | 构造一个请求,支撑以下各方法的基础方法 |
requests.get() | 获取html网页的主要方法,对应于http的GET |
requests.head() | 获取html网页头信息的方法,对应于http的HEAD,response对象使用headers内置方法返回头部信息。 |
还有post、put、patch、delete方法由于我们一般较少使用且从**kwargs可变参数来看,每个方法需要的参数都差不多的只是http请求方法不同,在这里就不进行详细介绍了,在此重点介绍经常使用的get方法
requests.get(url,params=None,**kwargs)
-
url 拟获取页面的url链接
-
params 向url添加额外参数,要求输入字典或者字节流格式
-
**kwargs:12个控制访问的参数,其中介绍七个常用的参数。
timeout:规定允许请求超时的时间,以秒为单位,超过规定时间则抛出TimeoutError异常;
headers:定制request的头部信息,躲避封杀;
cookies:添加cookies状态信息,避免再次提交表单
data:输入字典、字节序列或文件对象,作为Request的内容
json:输入JSON格式数据,作为Request的内容
files:以字典形式来传输文件
proxies:以字典形式设定代理服务器或ip地址(例如:{ “http”: “http://10.10.1.10:3128”, “https”: “