python 网络爬虫简介和表达式基础
一. 网络爬虫
网络爬虫是什么?
网络爬虫是一种互联网信息的自动化采集程序
主要作用是代替人工对互联网中的数据进行自动采集和整理
快速、批量地获取目标数据
网络爬虫可以做什么?
批量采集某个行业或领域的数据,进行分析从而辅助决策或后续营销
批量爬取视频、文章、漫画,实现脱网本地集中浏览
开发火车票抢票程序,实现自动抢票
二. 正则表达式
意义
网页爬下来之后,一般都存在很多干扰信息
需要对我们关注地信息进行提取
正则表达式是用于信息筛选提取的强大工具
1. 全局匹配函数使用格式
re.compile(正则表达式).findall(源字符串)
re.compile:
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象
语法格式为:
re.compile(pattern[, flags])
pattern : 一个字符串形式的正则表达式
flags : 可选,表示匹配模式,比如忽略大小写,多行模式等
常用匹配模式
描述
re.I
忽略大小写
re.M
多行模式
re.S
让. 也能匹配多行
re.X
为了增加可读性,忽略空格和 # 后面的注释
findall:
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
语法格式为:
findall(string[, pos[, endpos]])
string : 待匹配的字符串。
pos : 可选参数,指定字符串的起始位置,默认为 0。
endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度。
2. 正则表达式模式
模式
描述
模式
描述
n
匹配换行符
.
匹配除换行符外的任意字符
t
匹配制表符
^
匹配开始位置
w
匹配字母、数字、下划线
$
匹配结束位置
W
匹配非字母、数字、下划线
*
前一个匹配字符出现0/1/多次
d
匹配任意数字,[0-9]
?
前一个匹配字符出现0/1次
D
匹配非数字
+
前一个匹配字符出现1/多次
s
匹配空白字符
{n}
前一个匹配字符恰好出现n次
S
匹配非空白字符
{n,}
前一个匹配字符至少出现n次
[...]
一组字符,匹配组内任意字符
{n,m}
前一个匹配字符出现至少n次,至多m次,贪婪模式
[^...]
匹配非组内字符的其他字符
()
想要提取的内容
贪婪模式:尽可能多地匹配,默认贪婪
懒惰模式:尽可能少地匹配,精准模式
例如:
import re
string = '''one1two2three3four4
WOw1234owoo''' # 源字符串
pattern_11 = "wo" # 字符串形式的正则表达式
pattern_12 = "wo*"
print(re.compile(pattern_11).findall(string))
>>>['wo', 'wo']
print(re.compile(pattern_12).findall(string))
>>>['wo', 'w', 'woo']
print(re.compile(pattern_12, re.I).findall(string)) # 忽略大小写
>>>['wo', 'WO', 'w', 'woo']
pattern_2 = "w.*o" # 贪婪模式
pattern_3 = "w.*?o" # 懒惰模式
print(re.compile(pattern_2).findall(string))
>>>['wo2three3fo', 'w1234owoo']
print(re.compile(pattern_2, re.S).findall(string)) # 让. 匹配包括换行在内的所有字符
>>>['wo2three3four4ntttWOw1234owoo']
print(re.compile(pattern_3).findall(string))
>>>['wo', 'w1234o', 'wo']
pattern_4 = "w.*(three3).*o" # 提取信息
print(re.compile(pattern_4).findall(string))
>>>['three3']
XPath表达式(补充):
常用匹配模式
描述
/
逐层提取
text()
提取标签下面的文本
//标签名**
提取所有名为**的标签
@属性名
提取某个属性值
学习链接: