requests和xpath笔记
Requests库和xpath笔记
Requests安装
pip install requests -i https://mirrors.aliyun.com/pypi/simple
核心函数
-
requests.requests()所有请求方法的基本方法- method:str 指定请求方法, GET, POST, PUT, DELETE
- url:str 请求的资源接口(API),在RESTful规范中即是URI
- params:dict, 用于GET请求的查询参数(Query String Params)
- data:dict, 用于POST/PUT/DELETE请求的表单参数(Form Data)
- json:dict, 用于上传json数据的参数, 封装到body(请求体)中。请求头的Content-Type默认设置为 application/json
- files:dict, 结构{'name':file-like-object|tuple},如果是tuple,则有三种情况:
- ('filename', file-like-object)
- ('filename', file-like-object, content_type)
- ('filename', file-like-object, content_type, custom-headers)
指定files用于上传文件,一般使用POST请求, 默认请求头的Content-Type为multipart/form-data类型
- headers/cookies:dict
- proxies:dict, 设置代理
- auth:tuple, 用于授权的用户名和口令,形式
-
requests.get()发起GET请求, 查询参数- 可用参数
- url
- params
- json
- headers/cookies/auth
- 可用参数
-
requests.post()发起POST请求, 上传/添加数据- 可用参数:
- url
- data/files
- json
- headers/cookies/auth
- 可用参数:
-
requests.put()发起PUT请求, 修改或更新数据 -
requests.patch()HTTP幂等性的问题,可能会出现重复,不推荐使用 -
requests.delete()发起delete请求,删除数据
requests.Response
以上的请求方法返回的对象类型是Response,对象常用的属性如下
- status_code 响应状态码
- url 请求的url
- headers:dict, 响应的头,对应于urllib的响应对象的getheaders(), 但不包含cookie
- cookies:可迭代的对象, 元素是Cookie类对象 (name, value, path)
- text: 响应的文本信息
- content: 响应的字节数据
- encoding:响应数据的编码字符集, 如utf-8, gbk, gb2312
- json():如果响应数据类型为application/json, 则将响应的数据进行反序列化python得List或者dict对象(javascripte序列化和反序列化是JSON.stringify(obj)和JSON.parse(text))
数据解析方法之xpath
xpath 属于xml/html解析数据的一种方式,基于元素的树形结构(Node > Element)。选择某一元素时,根据元素的路径选择, 如
/hmtl/head/title获取<title>标签。安装包pip install lxml
绝对路径
从根标签开始,按照tree结构依次向下查询
如/html/body/table/tbody/tr。
相对路径
相对路径可以有以下写法
- 相对于整个文档
//img
查找出文档中所有的<img>标签
- 相对于当前节点
//table
假如当前节点是<table>,查找他的<img>的路径的写法
.//img
数据提取
- 提取文本
//title/text()
- 提取属性
//img/@href
- 提取指定位置的元素
获取网页中的数据类型与字符集,获取第一个<meta>标签
//meta[1]/@content
获取最后一个<meta>标签
//meta[last()]/@content
获取倒数第二个<meta>标签
//meta[position()-2]/@content
获取前三个<meta>标签
//meta[position()<3]/@content
指定属性条件
查找class为circle-img的<img>标签
//img[@class="circle-img"]
在python 中的应用
安装包pip install lxml

浙公网安备 33010602011771号