报错原因:返回的是一个空列表,有哪位知道是哪里错了吗?
返回空列表很大因素是没有完全匹配到,但是我都匹配了,也不知道究竟是哪里出了问题
默认的正则匹配不支持多行匹配,需要你手动设置re.S
参数才可以匹配多行
如果设置后还是不行,可以找个在线正则匹配网站测试一下你的正则表达式是否与目标文本对应
有帮助望采纳~
正则表达式 的字符串 前面要加 r
并且要设置re.S参数让 点“.”可以匹配 \n 换行符,
或者“.” 改成 [\s\S]
html = '''
<li><a target="_blank" href="https://news.sina.com.cn/c/x1/2020-11-04/doc-iiznezxr9742645.shtml" class="linkNewsTopBold">海纳百川共杨帆
</a> <a target="_blank"
href="https://www.gstheory.cn/zt2020/11xji/index.htm"
class="1inkNewsTopBold">理上网来</a></1i>
'''
import re
result=re.findall(r'.+?href="(.+?)".*?class=".*?">\s*([\u4e00-\u9fa5]+)\s*</a>',html,re.S)
print(result)
如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮
正则表达式这样写试试:
import re
html='''<li><a target="_blank" href="https://news.sina.com.cn/c/xl/2020-11-04/doc-iiznezxr9742645.shtml" class="linkNewsTopBold">海纳百川</a> <a target="_blank" href="https://news.sina.com.cn/c/xl/2020-11-05/doc-iiznezxr9742645.shtml" class="linkNewsTopBold">理上米来</a>'''
res=re.findall('href="(.*?)" class=".*?">([\u4e00-\u9fa5]+)</a>',html,re.S)
print(res)
输出结果为:
F:\2021\qa\ot2>t3
[('https://news.sina.com.cn/c/xl/2020-11-04/doc-iiznezxr9742645.shtml', '海纳百川'),
('https://news.sina.com.cn/c/xl/2020-11-05/doc-iiznezxr9742645.shtml', '理上米来')]
如有帮助,请点采纳