鱼C论坛

 找回密码
 立即注册
查看: 3119|回复: 6

[已解决]正则问题

[复制链接]
发表于 2022-12-5 20:24:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 xyh2695368537 于 2022-12-5 20:28 编辑

想要抓取这个网页里的评分(下图灰底部分),我这样写正则为啥返回是空列表
这个网址没有反爬
我的代码如下:
import re,requests
url = 'https://ssr1.scrape.center/detail/1'
txt = requests.get(url).text
r = re.findall('<p.*?score.*?>(.*?)</p>',txt)
print(r)
最佳答案
2022-12-5 20:57:10
本帖最后由 hrpzcf 于 2022-12-5 20:58 编辑

因为返回的内容换行位置是十分随机的,所以需要 re.S 让点号可以匹配换行符(你理解成加了 re.S 标志,不管有没有换行符,re 都把字符串视作一行也可以)
r = re.findall(r"<p.*?score.*?>\s*(.*?)</p>", txt, re.S)
# ['9.5']
QQ浏览器截图20221205201950.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-5 20:44:58 | 显示全部楼层
本帖最后由 lxping 于 2022-12-5 20:59 编辑

1、你可以打印你的txt看一下抓取文件内容是不是跟网页上的有出入,正则公式匹不匹配;
2,用正则表达式爬取网页内容最好加上 re.S 让 . 号可以匹配换行符,还有就是在正则表达式前面加上r,表示原字符。
3、我改了一下试了一下,可以抓取到一个
r = re.findall(r'<p.*?score.*?sm">(.*?)</p>', txt, re.S)
r
['\n              9.5']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-5 20:57:10 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hrpzcf 于 2022-12-5 20:58 编辑

因为返回的内容换行位置是十分随机的,所以需要 re.S 让点号可以匹配换行符(你理解成加了 re.S 标志,不管有没有换行符,re 都把字符串视作一行也可以)
r = re.findall(r"<p.*?score.*?>\s*(.*?)</p>", txt, re.S)
# ['9.5']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-5 21:01:02 | 显示全部楼层
hrpzcf 发表于 2022-12-5 20:57
因为返回的内容换行位置是十分随机的,所以需要 re.S 让点号可以匹配换行符(你理解成加了 re.S 标志,不管 ...

okok,感谢!!!解决了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-5 21:02:56 | 显示全部楼层
浏览器开发者模式中,元素和网站响应源码是两回事,不能等同哦。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-6 12:29:59 | 显示全部楼层
cflying 发表于 2022-12-5 21:02
浏览器开发者模式中,元素和网站响应源码是两回事,不能等同哦。

好的好的,感谢大佬!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-7 10:21:46 | 显示全部楼层
r = re.findall(r'<p.*?score.*?sm">(.*?)</p>', txt, re.S)
r
['\n              9.5']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 19:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表