本文介绍了一个较为简单的Python爬虫,可以获取网页上的特定信息并保存在文件中。
本文同步发表于个人博客–弋江畔
写在前面
B站主页右侧有一在线列表链接,可查看网站当前在线观看人数前20的视频,但其手机app并无此功能,故写此爬虫来获取并发送在线列表里有哪些视频到个人邮箱。
思路分析
- 获取视频信息
- 将信息保存到txt文件中
- 发送文件到邮箱中
代码部分
- 观察网页
在网页右键点击检查,可观察到视频信息都放在一个div标签内,含有视频名称,up昵称,播放量等等等等。
2. 获取信息
请求页面,获取页面信息。
url = 'https://www.bilibili.com/video/online.html?spm_id_from=333.851.b_7265706f7274466972737432.13'
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/80.0.3987.106 Safari/537.36'}
response = requests.get(url=url, headers=header)
response.encoding = 'utf-8'
print(response.text)
观察到返回的是网页源码,用lxml进行解析。
soup = BeautifulSoup(response.text,"lxml")
我们需要的是视频的名称和up主昵称,再次观察网页元素,发现这两个信息都存放在a标签中。
这样我们直接获取返回数据中的a标签内容。
titles = soup.find_all("a")
打印测试后我们发现返回的列表中偶数位对应着视频名称,奇数位对应着up主昵称
print(titles[0].text)
#【 钉 钉 本 钉 ,在 线 求 饶 】
print(titles[1].text)
#钉钉DingTalk
遍历整个列表,获取 视频名称--------up主昵称 形式的列表。
while i <= 39:#名称和昵称加起来一共有40个
name = titles[i].text
up = titles[i+1].text
nameup.append(name+"--------"+up)
i