网页数据获取有python自带的urllib,也有第三方库requests
requests.request(url) | 构造一个请求 |
requests.get(url,params=None) | 发送get请求,结果为response对象 |
requests.post(url,data=None,json=None) | 发送post请求 |
requests.put() | 发送put请求 |
requests.head() | 获取html的头信息 |
requests.delete() | 提交删除请求 |
requests.patch() | 提交局部修改的请求 |
requests.session() 返回session对象,可以用session对象发起带有session信息的请求,如
import requests
url='www.baidu.com'
data={'username':'zhangsan','password':'123'}
#获取session对象
s=requests.session()
#session发起post请求获取响应
resp=s.post(url,data=data)
#此时的session对象带有session信息
url1='www.baidu.com/xxx'
resp1=s.get(url1)
response对象的常用属性或方法
response对象是requests.get()的返回结果
response.status_code | 响应状态码 |
response.content | 二进制数据(图片、视频等) |
response.text | 字符串数据 |
response.encoding | 定义response对象的编码 |
response.cookies | 获取请求后的cookie |
response.url | 获取请求网址 |
response.json() | 内置的JSON解码器 |
response.headers | 以字典对象存储服务器响应头,键不区分大小写 |
requests获取到响应后,需要其他工具对响应数据进行解析,常用有xpath、beautifulsoup、正则表达式、pyquery等
nodename | 选取此节点的所有子节点 |
/ | 根节点 |
// | 匹配选择的节点,不考虑其位置 |
. | 当前节点 |
.. | 当前节点的父节点 |
/text() | 获取当前节点下的文本内容 |
/@xx | 获取当前节点下标签的属性xx |
| | 或 |
xpath('/body/div[1]') | 选取body下第一个div节点 |
xpath('/body/div[last()]') | 选取body下最后一个div节点 |
xpath('/body/div[last()-1]') | 选取body下倒数第二个div节点 |
xpath('/body/div[position()<3]') | 选取body下前两个div节点 |
xpath('/body/div[@class]') | 选取body下带有class属性的div节点 |
xpath('/body/div[@class=main]') | 选取body下class属性值为main的div节点 |
xpath('/body/div[price>35.00]') | 选取body下price元素大于35的div节点 |