Python爬虫学习1-静态网页部分
今天继续进行Python网络爬虫的学习,主要的学习内容是静态网页的Python爬虫抓取。
·静态网页:纯粹HTML格式的网页,所有的数据都呈现在网页的HTML代码中——相对而言,使用AIAX动态加载的网页不一定会出现在HTML代码中,因此将抓取静态网页作为初始的Python爬虫学习过程更为合适。
·静态网页抓取的过程中,常常使用功能强大的requests库发送http请求到服务器
Requests的使用
①基础
使用cmd命令 -pip3 install requests 安装requests库以便后续的调用;
②requests响应对象的内容
r.text 服务器响应的内容
r.encoding 服务器使用的文本编码
r.status_code 检测响应的状态码(200-请求成功 4xx-客户端出现错误 5xx-服务器端响应错误)
r.json() Requests库自带的内置解码器
③使用Requests传递URL参数(这里使用的是http功能测试网站http://www.httpbin.org/)
在URL的查询字符串中加入某些数据,以从Server请求特定的数据。
(数据通常是以键/值的形式在URL中的’?'之后)
(数据的表示实例:https://www.baidu.com/baidu?wd=1)百度的查询文本为1的情况
可以将查询的参数保存在Python字典中,并通过params构建到URL中进行操作。
import requests
key_dict={'key1':'value1','key2':'value2'}
r=requests.get('http://httpbin.org/get',params=key_dict)
print("URL编码式如图所示",r.url)
print("字符串方式的响应体:\n",r.text)
④使用Requests定制请求头
对Python爬虫而言,请求头十分重要,使用正确的请求头才能返回正确的结果。
请求头header中的指定信息可以被用户根据自身需求进行修改以满足部分特性与具体要求;
User-Agent:用户访问信息
Host:访问网站地址
#coding=utf-8
import requests
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML,like Gecko) Chrome/52.0.2743.82 Safari/537.36 ',
'Host':'www.sina.com.cn'
}
r=requests.get ('https://www.sina.com.cn/',headers=headers)
print("响应状态码:",r.status_code)
⑤使用POST请求
使用POST请求来发送编码为表单形式的数据,并实现数据的保密操作(如过程中的登录操作)
实现POST请求,只需要简单地传递一个包含数据的字典给Requests中的data参数
在传递了这个参数之后,在发出请求时,传递的数据会被自动编码为表单形式(post)
import requests
key_dict={'key1':'value1','key2':'value2'}
r=requests.post('http://www.httpbin.org/post',data=key_dict)
print(r.text)
从执行结果中可见,post传递的信息在header的form变量中存储(key_dict字典中的值)
⑥Timeout参数
Python爬虫程序在Server端返回信息之前能等待的最长时间;
若过程中的等待时间超过了timeout,Python爬虫程序的执行将返回错误信息。
import requests
link='http://www.httpbin.org/'
r=requests.get(link,timeout=1)
关于静态网页爬取的基本信息就到这里,明天的学习内容将包含静态网页的爬取实战练习。