Python 作为一种功能强大的编程语言,提供了许多用于爬取网页内容的库。
其中,Requests 用于发送 HTTP 请求,而 BeautifulSoup 则用于解析 HTML 页面。
如何使用 Python 的 Requests 和 BeautifulSoup 库来爬取网站视频链接,让你能够获取你感兴趣的搜索信息。
首先,需要安装 Python 以及以下两个库:
pip install requests beautifulsoup4
示例代码:
1.先定义一个函数来从视频页面中提取视频链接,这个函数将使用正则表达式来匹配视频链接,并返回匹配的结果。
2.接下来,定义一个函数来获取指定关键词的视频信息,这个函数将发送一个HTTP请求到指定的网站,然后解析返回的HTML内容以获取视频链接。
import requests # 导入用于发送HTTP请求的库
from bs4 import BeautifulSoup # 导入用于解析HTML内容的库
import re # 导入正则表达式模块
def get_video_info(video_page):
"""
从视频页面中提取视频链接的函数
"""
# 定义正则表达式模式,用于匹配视频链接
pattern = r'"url":"(.*?)"'
# 使用正则表达式模式在页面内容中寻找匹配项
matches = re.findall(pattern, str(video_page))
# 如果匹配项数量大于1,获取第二个匹配项(通常是高清视频链接)
if len(matches) > 1:
# 将匹配到的链接中的转义字符替换为正常字符
video_url = matches[1].replace('\\/', '/')
# 打印视频链接
print(video_url)
def get_video(word):
"""
获取指定关键词的视频信息的函数
"""
# 发送HTTP请求到指定网站,搜索指定关键词的视频
response = requests.get(f"https://yoyys1.com/vodsearch/-------------.html?wd={word}")
# 使用BeautifulSoup解析HTML内容
soup = BeautifulSoup(response.content, 'html.parser')
# 查找所有视频项
module_card_items = soup.find_all('div', class_='module-card-item')
# 遍历每个视频项
for item in module_card_items:
# 获取视频链接
link = item.find('a')['href']
# 获取视频标题
text = item.find('strong').get_text()
# 从视频链接中提取视频ID
video_id = re.search(r'\d+', link).group()
# 构造视频播放页面的URL
video_url = f"https://yoyys1.com/vodplay/{video_id}-1-1.html"
# 发送HTTP请求到视频播放页面
response = requests.get(video_url)
# 使用BeautifulSoup解析视频播放页面的HTML内容
soup = BeautifulSoup(response.content, 'html.parser')
# 查找所有视频播放链接
Jis = soup.find_all('a', class_='module-play-list-link')
# 打印视频标题
print(text)
# 遍历每个播放链接
for Ji in Jis:
# 获取播放链接
H = Ji['href']
# 如果播放链接不为空
if H is not None:
# 构造完整的视频播放链接
video_url = f"https://yoyys1.com{H}"
# 发送HTTP请求到视频播放链接
response = requests.get(video_url)
# 使用BeautifulSoup解析视频播放页面的HTML内容
video_page = BeautifulSoup(response.content, 'html.parser')
# 调用函数提取视频链接信息
get_video_info(video_page)
# 打印分隔线
print("******")
if __name__ == "__main__":
# 在主函数中调用get_video函数,并传入想要搜索的关键词
# 以“我亲爱的祖国”为例
get_video("我亲爱的祖国")
```
通过这个简单的Python程序,可以轻松地获取视频信息。