栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

爬虫python入门教程_python爬虫教程(非常详细)?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

爬虫python入门教程_python爬虫教程(非常详细)?

python爬虫学习22

这里写目录标题

python爬虫学习22

三、正则表达式

3.search方法

三、正则表达式 3.search方法

之前我们学习了正则表达式中的match方法,请大家回想一下match方法的前提,没错match方法是从字符串开头开始匹配,那么一旦开头不匹配,意味着整个匹配就废了:

# match 的局限性
import re

content = 'Extra strings Hello 1234567 World_this is a Regex Demo Extra    stings'
result = re.match('Hello.*?(d+).*?Demo', content)
print(result)

运行结果:表达式没有问题,但是却没有匹配到任何内容

由此可以得出,match在使用时我们必须知道待匹配字符串的开头部分,此方法才可以使用。所以在实际应用中它更适合检测某个字符串是否符合某个正则表达式规则。

这时候,要想要解决问题就要靠 search 方法了,它在匹配时会先扫描整个字符串然后匹配字符串中第一个匹配成功的结果,如果没有扫描到符合第一个正则表达式的结果就会返回None。此时我们写出的正则表达式就可以是字符串的某一部分:

# search 简单应用
import re

content = 'Extra strings Hello 1234567 World_this is a Regex Demo Extra    stings'
result = re.search('Hello.*?(d+).*?Demo', content)
print(result.group(1))

运行结果:

那么我们用search方法来尝试一下:现在有一段html

		

			

首页 我的书架 玄幻小说 修真小说 都市小说 穿越小说 网游小说 科幻小说 排行榜单 完本小说 全部小说

可以观察到ul节点中有很多li节点,这些li节点中有的包含a节点,有的不包含a节点。a节点又有其相应的属性。现在我们想要用search方法成功匹配到其中的小说类别:

在经过细致的观察,我们发现小说的类别前面都会出现相同的字符串 ‘xiaoshuo/"’,所以我们在写正则表达式时就要记得在匹配时吧他写进去:

import re

html = """

			

首页 我的书架 玄幻小说 修真小说 都市小说 穿越小说 网游小说 科幻小说 排行榜单 完本小说 全部小说 """ # 由于html中有很多换行所以别忘了使用修饰符 result = re.search('href.*?xiaoshuo/">(.*?)<', html, re.S) print(result.group(1))

运行结果:

这样就获取成功了

如果不写入之前的字符串而是

'herf.*?>(.*?)<'

会出现什么结果呢?大家不要往下看,先仔细的想一想

。。。

。。。

import re

html = """

			

首页 我的书架 玄幻小说 修真小说 都市小说 穿越小说 网游小说 科幻小说 排行榜单 完本小说 全部小说 """ result = re.search('href.*?>(.*?)<', html, re.S) print(result.group(1))

运行结果:

没有写入‘xiaoshuo/"’时,search就会寻找第一个符合条件的字符,它找啊找啊就找到了>首页<这里

运用我们所学的知识还是很容易得出答案的。

今天我们学习了正则表达式中的search方法,但是这种方法一次只能匹配第一种符合情况的结果,如果我们想要获取全部的结果就我能为力了,那么如何解决呢?

今日结束,下篇继续

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783141.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号