mingmei123 发表于 2023-10-23 18:21:31

正则表达式中的subtitle

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


def get_old_view_count(video_url):
    for i in range(5):
      try:
            res = requests.get(
                url=video_url,
                headers={
                  "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",
                  "referer": "https://m.yangshipin.cn/"
                }
            )
            match_object = re.findall(r'"subtitle":"(.+)次观看","', res.text)
            if not match_object:
                return True, 0
            return True, match_object
      except Exception as e:
            pass
    return False, 0


if __name__ == '__main__':
    # count = get_old_view_count("https://w.yangshipin.cn/video?type=0&vid=y000088hru8")
    count = get_old_view_count("https://w.yangshipin.cn/video?type=0&vid=f0000711h22")
    print(count)

isdkz 发表于 2023-10-23 18:21:51

在这段代码中,正则表达式的目的是从网页源码中提取出视频的播放量。其中, subtitle是指视频的字幕,具体指的是网页中的哪个参数。

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

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

需要注意的是,这段代码中使用了异常处理来处理请求失败的情况,并在尝试了5次后返回一个默认值。

陶远航 发表于 2023-10-23 18:21:52

在给定的代码中,subtitle 是指正则表达式中的一个文本模式或匹配项。在这个特定的正则表达式中,它用于提取网页源码中的视频播放量。

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

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

mingmei123 发表于 2023-10-23 18:22:33




Mike_python小 发表于 2023-10-23 18:22:51

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

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

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

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

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

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 2023-10-23 18:30:17

谁说网页源码中找不到的,不要过于相信自己的肉眼,CTRL+F 查找一下

mingmei123 发表于 2023-10-23 18:31:57

是不是多了一个引号呢,我看网页中并没有subtitle

mingmei123 发表于 2023-10-23 18:34:07

isdkz 发表于 2023-10-23 18:30
谁说网页源码中找不到的,不要过于相信自己的肉眼,CTRL+F 查找一下

果然哈哈,CTRL+F找到了

mingmei123 发表于 2023-10-23 18:35:46

isdkz 发表于 2023-10-23 18:30
谁说网页源码中找不到的,不要过于相信自己的肉眼,CTRL+F 查找一下

总感觉正则里面怪怪的,是不是多了一个引号

isdkz 发表于 2023-10-23 18:35:52

mingmei123 发表于 2023-10-23 18:31
是不是多了一个引号呢,我看网页中并没有subtitle

subtitle在 script 标签中呀,js代码在控制台运行的,不会显示到web界面中,你在源代码中搜索就找得到了

isdkz 发表于 2023-10-23 18:37:15

mingmei123 发表于 2023-10-23 18:35
总感觉正则里面怪怪的,是不是多了一个引号

没多呀,正则哪里怪了,除了(.+)其它都是照搬下来的

mingmei123 发表于 2023-10-23 19:15:21

isdkz 发表于 2023-10-23 18:37
没多呀,正则哪里怪了,除了(.+)其它都是照搬下来的

按照什么模板照搬的啊,求指路

isdkz 发表于 2023-10-23 20:04:37

mingmei123 发表于 2023-10-23 19:15
按照什么模板照搬的啊,求指路

不是按模板呀,就是原来的字符串就是这样的

mingmei123 发表于 2023-10-23 21:55:25

isdkz 发表于 2023-10-23 20:04
不是按模板呀,就是原来的字符串就是这样的

https://www.yangshipin.cn/#/video/home?vid=y000037ons0&cid=ys5bodxz7l2efua这个网页中是不是查不到观看次数前的字符串啊。
页: [1]
查看完整版本: 正则表达式中的subtitle