鱼C论坛

 找回密码
 立即注册
查看: 449|回复: 13

[已解决]正则表达式中的subtitle

[复制链接]
发表于 2023-10-23 18:21:31 | 显示全部楼层 |阅读模式

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

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

x
爬虫获取网页播放量的正则表达式中的subtitle,是啥意思啊?subtitle具体指的哪个参数啊?在网页源码中并没有找到,详解一下
  1. import requests
  2. import re


  3. def get_old_view_count(video_url):
  4.     for i in range(5):
  5.         try:
  6.             res = requests.get(
  7.                 url=video_url,
  8.                 headers={
  9.                     "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",
  10.                     "referer": "https://m.yangshipin.cn/"
  11.                 }
  12.             )
  13.             match_object = re.findall(r'"subtitle":"(.+)次观看","', res.text)
  14.             if not match_object:
  15.                 return True, 0
  16.             return True, match_object[0]
  17.         except Exception as e:
  18.             pass
  19.     return False, 0


  20. if __name__ == '__main__':
  21.     # count = get_old_view_count("https://w.yangshipin.cn/video?type=0&vid=y000088hru8")
  22.     count = get_old_view_count("https://w.yangshipin.cn/video?type=0&vid=f0000711h22")
  23.     print(count)
复制代码
最佳答案
2023-10-23 18:30:17
谁说网页源码中找不到的,不要过于相信自己的肉眼,CTRL+F 查找一下

Snipaste_2023-10-23_18-29-00.png

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-23 18:21:51 | 显示全部楼层
在这段代码中,正则表达式的目的是从网页源码中提取出视频的播放量。其中, subtitle  是指视频的字幕,具体指的是网页中的哪个参数。

在这段代码中, re.findall(r'"subtitle":"(.+)次观看","', res.text)  表示使用正则表达式来匹配以  "subtitle":"  开头,以  "次观看","  结尾的字符串,并提取其中的内容。

在这里, subtitle  是一个自定义的字符串,用于匹配网页源码中的特定字符串。根据代码中的正则表达式, subtitle  后面的  (.+)  表示匹配任意字符(除换行符外)的一个或多个实例,并将其捕获为一个分组。因此, match_object  中存储的是匹配到的  subtitle  后面的内容,即视频的播放量。

需要注意的是,这段代码中使用了异常处理来处理请求失败的情况,并在尝试了5次后返回一个默认值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-23 18:21:52 | 显示全部楼层
在给定的代码中,subtitle 是指正则表达式中的一个文本模式或匹配项。在这个特定的正则表达式中,它用于提取网页源码中的视频播放量。

具体来说,该正则表达式是 re.findall(r'"subtitle":"(.+)次观看","', res.text)。它通过查找网页源码中以 "subtitle":" 开头、以 "次观看"," 结束的字符串,提取出括号中的内容作为匹配项。

在提供的代码示例中,并没有明确说明 subtitle 的含义或参数,因此我们无法确定它代表了什么具体的信息。可能需要进一步查看代码中的其他部分或参考相关文档来了解更多细节。
请注意,本回答来自GPT-3.5
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-23 18:22:33 | 显示全部楼层
微信图片_20231023181910.png


1698056327751.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-23 18:22:51 | 显示全部楼层
在给定的代码中,subtitle 是一个正则表达式中的一个子模式,它指的是匹配网页源代码中播放量信息的部分。具体来说,re.findall(r'"subtitle":"(.+)次观看","', res.text) 用于从 res.text(即网页源代码)中提取出包含 次观看 文本的内容,并将其作为匹配结果返回。

在该正则表达式中,"subtitle":"(.+)次观看"," 表示要匹配的模式,它包含了以下几个部分:
- "subtitle":":表示匹配以 "subtitle":" 开头的字符串。
- (.+):表示匹配任意字符(除换行符外)一次或多次,并将匹配的部分作为捕获组。
- 次观看",":表示匹配包含 次观看"," 的字符串。

因此,使用这个正则表达式可以提取出包含播放量信息的部分,并将其作为列表返回。在代码中,match_object 就是这个匹配结果的列表。

需要注意的是,正则表达式是根据给定的模式来进行匹配的,所以它应该与要解析的网页源代码的结构相匹配才能正确提取目标信息。如果无法找到匹配的内容,可能是因为模式不匹配或者网页源代码的结构发生了变化。

希望这个解释对你有帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-23 18:30:17 | 显示全部楼层    本楼为最佳答案   
谁说网页源码中找不到的,不要过于相信自己的肉眼,CTRL+F 查找一下

Snipaste_2023-10-23_18-29-00.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-23 18:31:57 | 显示全部楼层
是不是多了一个引号呢,我看网页中并没有subtitle
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-23 18:34:07 | 显示全部楼层
isdkz 发表于 2023-10-23 18:30
谁说网页源码中找不到的,不要过于相信自己的肉眼,CTRL+F 查找一下

果然哈哈,CTRL+F找到了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-23 18:35:46 | 显示全部楼层
isdkz 发表于 2023-10-23 18:30
谁说网页源码中找不到的,不要过于相信自己的肉眼,CTRL+F 查找一下

总感觉正则里面怪怪的,是不是多了一个引号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-23 18:35:52 | 显示全部楼层
mingmei123 发表于 2023-10-23 18:31
是不是多了一个引号呢,我看网页中并没有subtitle

subtitle在 script 标签中呀,js代码在控制台运行的,不会显示到web界面中,你在源代码中搜索就找得到了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-23 18:37:15 | 显示全部楼层
mingmei123 发表于 2023-10-23 18:35
总感觉正则里面怪怪的,是不是多了一个引号

没多呀,正则哪里怪了,除了(.+)其它都是照搬下来的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-23 19:15:21 | 显示全部楼层
isdkz 发表于 2023-10-23 18:37
没多呀,正则哪里怪了,除了(.+)其它都是照搬下来的

按照什么模板照搬的啊,求指路
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-23 20:04:37 From FishC Mobile | 显示全部楼层
mingmei123 发表于 2023-10-23 19:15
按照什么模板照搬的啊,求指路

不是按模板呀,就是原来的字符串就是这样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-23 21:55:25 | 显示全部楼层
isdkz 发表于 2023-10-23 20:04
不是按模板呀,就是原来的字符串就是这样的

https://www.yangshipin.cn/#/vide ... cid=ys5bodxz7l2efua这个网页中是不是查不到观看次数前的字符串啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 22:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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