Requests库
Requests请求常用
r=requests.get(url)
- url:请求的 url 地址,接口文档标注的接口请求地址。
- params:请求数据中的链接,常见的一个 get 请求,请求参数都是在 url 地址中。
- data:请求数据,参数表单的数据格式。
- json:接口常见的数据请求格式。
- headers:请求头信息,http 请求中,比如说编码方式等内容添加。
- cookie:保存的用户登录信息,比如做一些充值功能,但是需要用户已经登录,需要 cookie 信息的请求信息传输。
Requests响应内容
- r.encoding:获取当前编码。
- r.encoding = 'utf-8':设置编码
- r.text:以 encoding 解析返回内容。字符串方式的响应体会自动根据响应头部的字符编码进行解码。
- r.cookies:返回 cookie。
- r.headers:以字典对象存储服务器响应头,但是这个字典键名不区分大小写,若键不存在则返回 None。
- r.json():requests 中内置的 json 解码器,以 json 形式返回。如果返回的内容不是 json 格式的,则解析时会出错。
- r.content:以字节形式返回。字节形式的响应体,会自动解码 gzip 和 deflate 压缩。
爬虫选择器
css选择器
1. 元素选择器
语法:标签名{},选中对应标签中的内容,例:p{},div{},ul{},span{}
2. 类选择器
语法:.class属性值{},选中对应class属性值的元素
.A{}选中class="A"的元素,一个class里面可以有多个属性值
3. id选择器
语法:#id属性值{},选中对应id属性值的元素
#A{}选中id="A"的元素,id的属性值只能有1个
4. 后代元素
- 元素1>元素2,元素2是元素1直接子元素
- 元素1 元素2,元素2是元素1的后代
5. 兄弟元素
- 标签1+标签2:选择标签1前后相邻中后面的标签2
- 标签1~标签2:选择标签1后面所有的为标签2的兄弟标签
6. 伪类选择器
- :first-child 第一个子元素
- :last-child 最后一个子元素
- :ntf-child(n) 第n个子元素,参数为even或2n为选中偶数位的元素,odd或2n+1为选中奇数位的元素
- ntf-last-child(n) 倒数第n个子元素
- 标签1:ntf-child(n) 选中标签在父标签中是第n个子标签的那个标签1(div:ntf-child(3),选中在父标签中是第三个子标签的div标签,就是div在父标签中是第三个子标签)
- 标签1 :ntf-child(n) 选中标签1下的第n个子标签
7.
| 标题 | 指定属性 |
| --- | --- |
| div[class] | 标签包含的属性 |
|div[class="div_test"]|class="div_test"的div标签|
|div[class ^= "div"]|开关指定值|
|div[class $= "test"]|结尾指定值|
|div[class $= "test"]| 包含指定值|
xpath选择器
相对路径 //
绝对路径 /
查找父节点 ..
当标签存在多个相同时,last()可以定位到最后一个 //标签名[last()] //span//ul//li[last()]
定位到倒数第二个//span//ul//li[last()-1]
属性查找 @ //标签名[@元素名称='元素值']
定位到id元素: //input[@id='kw']
and表达式定位同一标签下多个元素
//标签名[@元素名称='元素值' and @元素名称='元素值']
or元素满足其中一个条件就可以定位到
//标签名[@元素名称='元素值' or @元素名称='元素值']
查找元素值不等于某个值的内容
//标签名[@元素名称!='元素值']
模糊匹配
//标签名[contains(text(),"xxx")]匹配text()包含xxx
使用position位置定位
定位到th标签下的第一个
//th[@class='c-id' and position()=1]
或者//th[@class='c-id' and position()<2]
选取若干路径
//book/title | //book/price 获取book元素的所有title和price元素
Python爬虫-爬取多页数据
1.利用"固定网址"+"下页"
完整代码为:
2.利用"固定网址"+"不同数字码"