求助!关于python爬虫中正则表达式re.compile()的问题
最近在做大作业时碰到了问题,大作业的内容是爬取全校老师的个人信息,遭遇的问题如下大部分老师的主页html中是这样写的
<p>毕业院校:某某大学<p\>
但是有的老师是这么写的
<p><small>毕业院校:某某大学<small><p\>
我在re.compile()中应该如何表示<small>这个整体出现一次或零次?一般的正则表达式中可以用(<small>)?表示,但是compile中()代表要取的元素。。。我就不知道该用什么符号表示了,查了一圈也没查到相关信息,所以我现在是这么写的
大佬们帮帮忙吧,谢谢啦 import re
s = '''
111
<p>毕业院校:A大学</p>
<p>毕业院校:B大学</p>
<p><small>毕业院校:C大学</small></p>
<p>毕业院校:D大学</p>
222
<p>毕业院校:E大学</p>
<p><small>毕业院校:F</small></p>
<p>毕业院校:G大学</p>
333
'''
result = re.findall(r'<p>(?:<small>)?(.*?)(?:</small>)?</p>', s)
print(result)
另外html结束标签是斜杠,且在元素前头。 这是"有的老师"写的?HTML标签都写错了,{:10_312:}
>>> s = '<p><small>毕业院校:某某大学</small></p>'
>>> print(re.search('<p><small>(.*?)</small></p>', s).group(1))
毕业院校:某某大学
>>> suchocolate 发表于 2021-12-11 15:42
另外html结束标签是斜杠,且在元素前头。
啊抱歉抱歉,没学过html,我只记得个大概,标签写错了,我想再问问(?:<small>)?中的(?:是什么意思?学校没教过爬虫,都是自学,学艺不精{:10_266:} 标签是我记错了{:10_247:} 本帖最后由 suchocolate 于 2021-12-11 17:17 编辑
LLLLoik 发表于 2021-12-11 16:32
啊抱歉抱歉,没学过html,我只记得个大概,标签写错了,我想再问问(?:)?中的(?:是什么意思?学校没教过爬 ...
import re
s = '''aaabbbccc
aaaeeeccc
aaahhhccc'''
result = re.findall(r'aaa(eee)ccc', s)# ()是组,这样匹配后默认只显示组内内容,不显示组外的内容
print('捕获组:', result)
result = re.findall(r'aaa(?:eee)ccc', s)# 非捕获组,组外也显示
print('非捕获组:', result)
小甲鱼的帖子,非捕获组:https://fishc.com.cn/thread-57317-1-3.html
页:
[1]