正则表达式去提取网页标题内容,为什么会报错

正则表达式去提取网页标题内容,为什么会报错, 跟着B站上面的教程一模一样写的, 到底哪里错了, 我找不到原因, 请大家告诉我原因和思路;
只知道是【title = re.findall('"title":"(.*?)","pubdate"',response.text)[0]】这一行错了
请问如何更改才能提取到我想要的标题(还是用正则表达式),谢谢各位!!

import requests
import re

headers伪装 模拟浏览器

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"}

确定发送请求网址

url='https://www.bilibili.com/video/BV19F411c74i'

通过requests模块里面get请求方法

response=requests.get(url=url,headers=headers)
print(response.text)
title = re.findall('"title":"(.*?)","pubdate"',response.text)[0]
print(title)

img


试着把[0]取消,得到的列表里是空的

img


print(response.text)输出的内容有我想要的标题啊,为什么列表会为空呢

img

这个是正则没有匹配到结果,返回了空列表,空列表没有[0]下标的元素,所以报错,

因为response.text中并没有符合你写的正则条件,所以匹配结果为空列表,空列表加[0]的话就会报错,可以检查一下,response.text内容,然后再确认一下正则表达式是否有结果

这是你的正则表达式没有爬取到相应内容导致的,建议去掉末尾的[0]直接打印出来看看

网站变了,之前的教程不适用了

正则没有匹配到任何内容也就是空列表,正常用正则匹配带得都是非空得列表,空列表引用[0]表示取第一个元素,但是空列表没有元素所以报错说超出列表索引,你把代码贴出来帮你改改正则表达式

网页源代码可能变了

网站源代码改变,之前的代码失效

说明response.text里面是空值 网站可能有反爬虫手段 加点请求头user-agent和cookie试一下 如果还不行说明需要带data参数 还不行说明data里面可能有加密数据 没办法爬