python爬虫

74 阅读3分钟

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的属性值只能有14. 后代元素

    - 元素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个子元素,参数为even2n为选中偶数位的元素,odd2n+1为选中奇数位的元素
    - ntf-last-child(n) 倒数第n个子元素
    - 标签1:ntf-child(n) 选中标签在父标签中是第n个子标签的那个标签1div: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.利用"固定网址"+"下页"

image.png

image.png

完整代码为:

image.png

2.利用"固定网址"+"不同数字码"

image.png

image.png