python正则表达式—匹配图片地址

python入坑两周小萌新,在跟视频练习时,发现对应的正则方法好像无法使用,但是在CSDN上面参考了几个好像也没发现有什么问题。

但是:results = 【】 ,这是什么原因呢?

请大佬指教:

 

正则表达式在不同的网站上不是通用的,我看了下糗事百科那个网址,没有符合你那个正则的文本。你可以具体描述下你要做些什么。

所写的正则表达式没有匹配项,所以返回空列表。可用

pat = re.compile(r'<img src="(.*?)"')匹配页面所有图片地址。

您使用16 和 18 行的代码也是results=[]吗

# 导入相关模块
import requests
import re
import os

# 获取响应信息
url = 'https://www.qiushibaike.com/imgrank/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}
suju = requests.get(url=url, headers=headers).text
#print(suju)


# 用正则表达式提取图片地址
#ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
pat = re.compile('<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>', re.S)
img_scr = re.findall(pat, suju)
#pat = re.compile(r'<img src="(.*?)"')
#results = re.findall(pat, suju)

print(img_scr)

问题已解决,正则没问题,因为粗心,

pat = re.compile('<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>', re.S)

这段代码写成了

pat = re.compile('<div class="thumb">.*?<img src="(.*?)"alt=.*?</div>', re.S)

“alt="前面缺少了一个空格,得出结论,规范的代码习惯真的很重要,毕竟越小的问题,越容易被忽略