- 字符串方法:
函数 | 作用 |
---|
对象.split(‘符号’) | 通过指定的符号 分隔字符串 |
对象.replace(‘目标’,‘替换’) | 指定将字符串中目标改为替换 |
对象.strip(‘符号’) | 返回除去两侧指定符号的字符串 |
对象.format(‘内容’) | 替换字符串中{}的部分 |
- 文件操作:
函数 | 作用 |
---|
open(‘地址’) | 打开地址指定文件( ‘r’ 读模式 ‘w’ 写模式’a’ 追加模式 ‘b’ 二进制模式 ‘+’ 读/写模式 ) |
对象.write() | 写入数据 |
对象.read() | 读取数据 |
对象.close() | 关闭文件 |
- 爬虫三大库:
[1]
Requests:
关键步骤 | 用处 |
---|
get() | 分析获取网页内容 |
post() | 同上(比较好用) |
text() | 返回文本 |
headers | 取值于网页的 user-agent ( F12->network->XHR) |
[2]
BeautifulSoup:
一、四种解析器:
1.ltml.parser(Python 标准库)。
2.lxml(lxml HTML解析器)。(推荐 快,容错强)
3.xml(Lxml Xml解析器)。
4.html5lib(html5lib)。
函数 | 作用及用法 |
---|
BeautifulSoup(requests对象.text,解析方式) | 解析对象 |
对象.prettify() | 查看解析结果 |
对象.find(tag,attibutes,recursive text,limit,keywords) | 返回一个符合的值 对象.find_all(‘div’,‘item’)#查找div标签,class=“item” |
对象.find_all(tag,attibutes,recursive,text,keywords) | 返回所有符合的值 |
对象.select() | 括号内容通过Chrome复制得到(点击想要的地方 检查->copy select(右键copy) |
**get_text() 获取文字信息
**zip(参数) 将参数打包成元组 返回元组列表
**li:nth-child(1)在Python中会报错!改为li:nth-of-type(1)
[3]
re模块:
基础字符 | 作用 |
---|
. | 匹配任意单个字符(不包括\n) |
\ | 转移字符(和c++差不多) |
[] | 字符集 (a[bs]:ab as) |
预定义字符 | 作用 |
---|
\d(\D) | 匹配一个数字(非数字)字符 |
\s(\S) | 匹配任何空白(非空白)字符 |
\w(\W) | 匹配任何单词(非单词)字符 |
数量词 | 匹配前一个字符的次数 |
---|
* | 0或无限 |
+ | 1或无限 |
? | 0或1 |
[m] | m |
[m,n] | m至n |
常用符 | 作用 |
---|
() | 表示括号的内容作为返回结果 |
.*? | 表示匹配任意字符 |
相关函数 | 作用 | 实例 |
---|
search()函数 | 匹配并提取第一个符合规律的内容 | re.search(pattern(匹配正则算法),string(目标字符串),flags(匹配方式)) |
sub()函数 | 替换字符串中的匹配项 | re.sub(pattern,rep1(替换字符串),string,count(替换次数 0:全部),flags=0) |
findall()函数 | 匹配所有符合的内容,以 列表 的形式返回结果 收集数据找到相同的格式 搜索!!! | 对象.content.decode(‘utf-8’) :将文本转化为该编码形式 |
[4]
re匹配模式修饰符
修饰符 | 作用 |
---|
re.I | 是匹配对大小写不敏感 |
re.L | 做本地化识别(locale-aware)匹配 |
re.M | 多行匹配,影响^和$ |
re.S | 使匹配包括换行在内的所有字符(在它眼中没有换行) |
re.U | 根据Unicode字符集解析字符,影响 \w,\W,\b,\B |
re.X | 该标志通过给予更灵活的格式,以便正则表达式写得更易理解,利用正则方式更容易获取网页文档中爬取的内容 |
[5]
Xpath语法
- 父节点
- 子节点
- 同胞节点
- 先辈节点
- 后代节点
结点选择表达 | 作用 | 案例 |
---|
对象节点名字 | 选取此节点的所有子节点 | user_database |
/ | 从根节点选取 | /user_database |
// | 选取匹配当前节点的所有子节点(忽视位置) | //user |
. | 选取当前结点 | |
… | 选取当前结点的父节点 | |
@ | 选取属性 | //li[@atrribute=‘属性’] 选取所有li含atrtibute属性 |
[6]
三大爬虫操作示范
import requests
import re
from bs4 import BeautifulSoup
from lxml import etree
import time
header={''}
url='网址'
r=requests.get(url,headers=header)
#正则 爬取信息
content=re.findall(html标头查找+正则表达式,r.text,re.格式)
#BeautifulSoup 爬取信息
s=BeautifulSoup(r.text,'lxml'(解析方式可以更换))
content=s.select('copy selector修改路径')
#lxml
e=etree.HTML(r.text)
#会运用到一些正则的方法获取 例:'//div[@class=""]'
content=e.xpath('copy Xpath修改路径/text()(获取文本)')