正则表达式爬取视频评论
import requests
import re
from bs4 import BeautifulSoup as bs
headers={'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.95 Safari/537.36"}
r=requests.get("https://www.bilibili.com/video/BV1YV4y1u75o/?spm_id_from=333.337.search-card.all.click&vd_source=9dd8cff38385df03103af6cc27c15471",headers=headers) #发起网络请求
text=r.text
pattern=re.compile(('<span class="reply-content">(.*?)</span>'),re.S)
results=re.findall(pattern,text)
results
问题
为什么爬出来是空集
我的建议是,先用菜鸟的正则测试测一下,然后测出来之后对代码做一些调整
比如说,re.compile
改为re.match
可能对你这个需求会更好一些。
你好,根据你提供的代码,我看到有几个可能的问题:
而不是 ,那么你的正则表达式无法匹配到内容,会返回空列表。你需要检查网页源代码,找到正确的标签。
针对问题:如何使用Python正则表达式爬取视频评论?
首先,需要了解问题出现的原因。如果爬虫程序运行时只得到了空集,有可能是正则表达式本身出了问题,也有可能是爬虫程序的平台版本和所处理的视频文件格式不匹配导致的。因此,我们可以通过以下方式进行优化和调整:
检查正则表达式的代码。可以将代码进行单元测试,分析是否捕捉到了目标区域。如果未能捕捉到目标区域,需要检查正则表达式的代码是否正确。
确认爬虫程序的平台版本和所处理的视频文件格式。不同的平台版本和视频文件格式可能会影响网页结构和评论区域的样式,需要确保程序适用于所处理的视频文件格式和版本号。
选择正确的评论区域。需要针对具体的视频,选择正确的评论区域。可以在网站上查看HTML结构,确认评论区域的标签ID或Class,然后在程序中使用正则表达式匹配相应的区域。
确认期望获得的评论格式并附上一个或多个实际的评论示例。可以先手动抓取几条评论,分析评论的格式和特点,并编写适当的正则表达式来匹配评论信息。
检查目标网站是否允许爬虫访问评论区。有些目标网站可能会禁止爬虫访问评论区,需要先检查相关规定,以避免因此而导致的爬虫失效。
最后,推荐使用Python的Beautiful Soup等第三方库来代替正则表达式爬取网页内容。相对于正则表达式,Beautiful Soup更易于使用和维护,能够有效地处理复杂的HTML解析问题,可以提高爬虫程序的效率。