python爬⾍xpath菜鸟教程_python爬⾍学习笔记(⼀)python ⽹络爬⾍简介和表达式基础
⼀. ⽹络爬⾍
⽹络爬⾍是什么?
⽹络爬⾍是⼀种互联⽹信息的⾃动化采集程序
主要作⽤是代替⼈⼯对互联⽹中的数据进⾏⾃动采集和整理
快速、批量地获取⽬标数据
⽹络爬⾍可以做什么?
批量采集某个⾏业或领域的数据,进⾏分析从⽽辅助决策或后续营销
批量爬取视频、⽂章、漫画,实现脱⽹本地集中浏览
开发⽕车票抢票程序,实现⾃动抢票
⼆. 正则表达式
意义
⽹页爬下来之后,⼀般都存在很多⼲扰信息
需要对我们关注地信息进⾏提取
正则表达式是⽤于信息筛选提取的强⼤⼯具
1. 全局匹配函数使⽤格式
repile(正则表达式).findall(源字符串)
repile:
compile 函数⽤于编译正则表达式,⽣成⼀个正则表达式( Pattern )对象
语法格式为:
repile(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(repile(pattern_11).findall(string))
>>>['wo', 'wo']
print(repile(pattern_12).findall(string))
>>>['wo', 'w', 'woo']
print(repile(pattern_12, re.I).findall(string)) # 忽略⼤⼩写>>>['wo', 'WO', 'w', 'woo']
pattern_2 = "w.*o" # 贪婪模式
pattern_3 = "w.*?o" # 懒惰模式
print(repile(pattern_2).findall(string))
>>>['wo2three3fo', 'w1234owoo']
print(repile(pattern_2, re.S).findall(string)) # 让. 匹配包括换⾏在内的所有字符>>>['wo2three3four4\n\t\t\tWOw1234owoo']
print(repile(pattern_3).findall(string))
>>>['wo', 'w1234o', 'wo']
pattern_4 = "w.*(three3).*o" # 提取信息
print(repile(pattern_4).findall(string))
>>>['three3']
XPath表达式(补充):
常⽤匹配模式
描述
/
逐层提取
text()
提取标签下⾯的⽂本
//标签名**
提取所有名为**的标签
@属性名python菜鸟教程文档
提取某个属性值
学习链接:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论