其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

正则表达式返回结果为空列表,请问怎么解决?

GG网络技术分享 2025-03-18 16:14 3


问题描述:

请问我这段代码哪里错了,使用正则表达式返回的结果为空列表,怎么回事
import requests

import re
headers = {\"User-Agent\": \"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36\"}
url = \"http://www.aiimg.com/\"
res = requests.get(url=url,headers=headers)
response = res.content.decode(\'gb2312\')
print(response)
img_url = re.findall(r\'img\\ssrc=\"(.*?)\"\',response,re.M)
print(img_url)
for photos in img_url:
print(photos)
photo_response = requests.get(url=photos,headers=headers).content.decode(\'gb2312\')
for photo in photo_response:
for numbers in range(1,len(img_url)):
with open(\"imgs_\"+str(numbers)+\".jpg\",\"wb\") as fp:
fp.write(photo_response)
print(\"OK\")

我的解答思路和尝试过的方法
爬取http://www.aiimg.com/上的图片

网友观点:

import requests

import re

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}

url = "http://www.aiimg.com/"

res = requests.get(url=url,headers=headers)

response = res.content.decode('gb2312')

img_url = re.findall(r'<img[^>]+src=[\\'"](http://[^\\'"]+)[\\'"]+', response, re.M)

#print('get image urls:')

print(img_url)

numbers = 1

for photos in img_url:

print(photos)

photo_response = requests.get(url=photos,headers=headers).content

with open("imgs_"+str(numbers)+".jpg","wb") as fp:

fp.write(photo_response)

numbers += 1

正则没写对,将s改成.*?即可

正则表达式的正确写法应该是,因为img和src之间并不一定是单个空白符,所以需要加上.*?,由于这里也有可能是换行符,所以最后加上re.DOTALL从而表示.(点)也可以用来表示换行符:

img_url = re.findall(r'img.*?src="(.*?)"',response, re.DOTALL)

「Python ​正则」专题总结

我的施工之路

1我的施工计划

2数字专题

3字符串专题

4列表专题

5流程控制专题

6编程风格专题

7函数使用

8面向对象编程(上篇)

9面向对象编程(下篇)

10十大数据结构

11包和模块使用总结


今天开始Python进阶模块总结之正则专题,目录结构如下:

  • 1 学习正则的价值
  • 2 正则学习前的几个准备
    • Q1 字符 `r`是干啥的?
    • Q2 什么是一个原子操作?
    • Q3 怎么理解正则中的转义?
  • 3 掌握最常用规则
    • 情况1:最普通查找
    • 情况2:使用通用字符
    • 情况3:使用元字符
  • 4 有个棘手的场景
  • 5 学会提取子串的技能
  • 6 使用捕获的注意事项

1 学习正则的价值

正则应用广泛。不仅在Python语言中使用,其他语言也都在用,并且不同语言间的正则语法极为相似。同时主流操作系统,尤其linux系统的命令窗口中,也会经常使用到正则。还有,Python的常用包如Pandas,也经常遇到正则。

不仅使用广泛,正则功能也很强大,还有书写简便,因此这项技能值得我们仔细研究和掌握。

2 正则学习前的几个准备

Q1 字符 r是干啥的?

经常见过正则表达式前有一个字符 r,它的作用是告诉解释器后面的一串是原生字符串,按照字面意思解释即可。如:

标签:

提交需求或反馈

Demand feedback