这篇内容就简单给大家写个如何从网页上爬取某B主 主页 页面上所有的视频链接和视频标题。
这篇是基础好好看,下篇会根据这篇的结果做一个批量爬取视频的教程(先提前给大家展示个效果图)。
首先,电脑浏览器(最好用火狐或谷歌浏览器)打开某B主的某音主页,复制其网页地址栏的地址。
其次,将复制的网页输入到下面的程序的这个代码里面。
最后,运行程序,需要等待一两分钟,程序会自动列出博主网页上视频的链接。
—
代码如下:
import re
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 创建一个对象实例,用来表示用哪个浏览器爬取
driver = webdriver.Firefox()
# 某个视频的地址
driver.get()
# 等待一下,等打开网页
time.sleep(8)
# 页面打开会弹出一个登录窗口
close = driver.find_element(by=By.CSS_SELECTOR, value='.dy-account-close')
# 等登录窗口弹出来
time.sleep(5)
# 关闭弹出的登录窗口
close.click()
time.sleep(2)
这里我用的是火狐浏览器所以是Firefox(),建议使用火狐浏览器。
当程序执行的时候会自动弹出网页窗口,这个时候不要动它,让程序泡,它自动做完上面代码写的操作。
注释写的很清楚,这里我就不多做解释了。
代码如下:
url_list = []
# 获视频地址所在的位置
right_url_list = driver.find_elements(by=By.CSS_SELECTOR, value='a.hY8lWHgA.SF0P5HVG.h0CXDpkg')
for url in right_url_list:
# 获取此位置下的视频链接
aaa = url.get_attribute('href')
url_list.append(aaa)
print(url_list)
# 获取视频的标题位置
title_list = []
video_name_list = driver.find_elements(by=By.CSS_SELECTOR, value='.Ja95nb2Z')
for video_name in video_name_list:
# 获取视频标题元素的内容
video_name = str(video_name.text)
# 正则表达式处理。只保留中文汉字
video_ = re.findall(r'[\u4e00-\u9fff]+', video_name)
# 把每个标题匹配到的汉字分别组装起来
title_list.append(''.join(video_))
print(title_list)
这里面主要涉及到了两个重要的知识点。
一个是 driver.find_elements() 方法;二是正则表达式的相关的东西。大家一定要去百度看一下。要知其然,更要知其所以然。
此程序是在Python 3.11.6 版本的环境,注意哦要不然程序可能运行不起来。
很简单,代码不多,大家好好学技术,你X我也X!!!哈哈哈哈哈哈