python爬虫入门

Posted 临风而眠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫入门相关的知识,希望对你有一定的参考价值。

python爬虫入门(5)

​ 正则表达式

在线正则表达式测试网站

一.正则表达式

与一组字符串是等价关系

image-20210715233551563

1.简介

image-20210713235313967 image-20210714224439072 image-20210714224545883 image-20210714224626646 image-20210714224714982 image-20210714224848270

2.语法

image-20210714224939956

常用操作符

image-20210714225008504 image-20210714225211123

image-20210715234206251

image-20210716000834358

语法实例

image-20210714225432281

经典正则表达式

image-20210714225603749

匹配IP地址的正则表达式

粗略写法

image-20210714225743094

精确写法

image-20210714225818267

image-20210714225830653

二.使用re模块

1.findall

​ 查找所有,返回list

import  re

lst=re.findall(r"\\d+","匪警请拨110,火警请拨119,急救中心请拨120")
# 在字符串前加r可防止字符串转义
print(lst)

运行结果

['110', '119', '120']

2.search

​ 进行匹配,但是如果匹配到第一个结果,就会返回这个结果,若匹配不上就会返回None

​ 拿到数据需要.group()

s= re.search(r"\\d+","匪警请拨110,火警请拨119,急救中心请拨120")
print(s.group())

运行结果

110

3.match

​ 从字符串的开头进行匹配

s= re.match(r"\\d+","110匪警,火警请拨119,急救中心请拨120")
print(s.group())

运行结果

110

4.finditer

​ 返回迭代器

# 预加载正则表达式
# 把正则提前加载好,之后直接用,且可以在多个地方使用
obj = re.compile(r"\\d+")
ret=obj.finditer("匪警请拨110,火警请拨119,急救中心请拨120")
for i in ret:
    print(i.group())
ret2=obj.findall("s8j2das898")
print(ret2)

运行结果

110
119
120
['8', '2', '898']

5.正则中的内容单独提取

​ 单独获取到正则中的内容可以给分组取名字

#(?P<分组名字>正则表达式) 可以单独从正则匹配到的内容中进一步提取内容
#Python三引号:多用作注释、数据库语句、编写 html 文本
s="""
<div class='u'><span id='00'>猫猫</span></div>
<div class='v'><span id='11'>小猫咪</span></div>
<div class='w'><span id='007'>喵喵</span></div>
<div class='x'><span id='0214'>咪咪</span></div>
"""

obj=re.compile(r"<div class='.*?'><span id='(?P<id>\\d+)'>(?P<cat>.*?)</span></div>",re.S)#re.S让.能匹配换行
result = obj.finditer(s)
for it in result:
    # print(it.group())  #会把整个打印出来
    print(it.group('id'))
    print(it.group('cat'))

运行结果

00
猫猫
11
小猫咪
007
喵喵
0214
咪咪

image-20210716001252513

.*?尽可能少的匹配

image-20210716012225650

三.遇到的问题

1.吃一堑,未长一智

image-20210715135939546

之前bs4犯过了的错误,不能用那些包来命名文件

image-20210715140015837

以上是关于python爬虫入门的主要内容,如果未能解决你的问题,请参考以下文章

python爬虫入门

如何入门 Python 爬虫?

python网络爬虫入门

python爬虫入门

如何入门 Python 爬虫

python爬虫如何入门