网站首页 > 技术文章 正文
前情回顾
前面章节,我们通过抓取电影榜单数据,获取到了电影名称的列表,这些数据我们该怎么用?所以我们梳理了手动搜索单个资源时的流程:
- 我们会将电影名称作为查询条件,在资源网站中进行搜索
- 如果在搜索结果页面有数据(即:电影名称查询到了资源),我们将点击进入详情界面
- 在详情界面复制获取资源的下载链接
Python实现
将上述手动过程通过程序化思维的方式转换为函数。
首先:我们需要一个函数,通过传入电影名称,就能类似搜索一般,返回搜索的结果。只不过这里我们返回的是一个详情界面的网址,因为手动过程中我们可以看到,搜索出来的电影信息都是可以点击打开另一个页面。如图红框:
代码实现:
def get_movie_detail_url(url, movie_name):
'''
获取电影详情页链接
:param url: 电影资源网站url
:param movie_name: 电影名称
:return: 返回电影详情页链接
'''
# post荷载的参数
data = {
'wd' : movie_name,
'p' : 1,
't': 'MIfVRL7daDheqyB0HbsPPw==', # 从浏览器调试工具中获取
}
# 拼接搜索url
search_url = url + '/search/'
# 通过requests库发送POST请求,进行电影搜索
response = requests.post(search_url, headers=headers, data=data, timeout=(5, 10))
# 对搜索结果进行网页解析
soup = BeautifulSoup(response.content, 'html.parser')
# 搜索结果网页中,是否查询到电影
movies = soup.find_all('div', class_='text_info')
# 如果没有查询到电影,返回空
detail_url = None
# 如果查询到电影
if len(movies) > 0:
# 取出第一个电影的链接,格式为 /detail/451.html
detail = movies[0].find('a').get('href')
if len(detail) > 0:
# 拼接完整的电影详情页链接
detail_url = url + detail
# 返回电影详情页链接
return detail_url
测试运行:
我们传入站点地址和一个电影的名称,结果如图:
这个链接就是电影详情页的地址
然后,需要将电影详情页中的下载链接获取到。我们对详情页的地址再通过requests发起一次,并通过bs4解析。就可以得到资源的下载链接。代码如下:
def get_movie_download_url(detail_url):
'''
获取电影资源的下载链接
:param detail_url: 电影详情页链接
:return: 返回电影资源的下载链接
'''
# 老样子,发起请求
detail_response = requests.get(detail_url, headers=headers, timeout=(5, 10))
if detail_response != None:
# 解析网页内容
detail_soup = BeautifulSoup(detail_response.content, 'html.parser')
# 分析网页html结构,找出下载链接对应的页面元素
downlist = detail_soup.find_all('div', class_='url-left')
# 过滤出ed2k 开头,且1080p的资源
download_link = ''
if len(downlist) > 0:
for item in downlist:
link = item.find('a').get('href')
if link.startswith('ed2k'):
if link.find('1080p') != -1:
download_link = link
break
return download_link
测试看一下效果:
至此,根据手动流程抽象出来的函数,功能正常。
最后
单条电影数据的流程测试通过。我们可以着手开始编写完整代码了。下一篇我们将串连整个流程,提供从抓取电影榜单数据,到获取下载链接的完整代码
猜你喜欢
- 2025-05-08 使用Python爬取给定网页的所有链接(附完整代码)
- 2025-05-08 python爬取电子课本,送给居家上课的孩子们
- 2025-05-08 Python爬虫实战,selenium模拟登录,Python实现抓取某东商品数据
- 2025-05-08 「2022 年」崔庆才 Python3 爬虫教程 - aiohttp 的基本使用
- 2025-05-08 Python爬虫实战:爬取动态网页数据
- 2025-05-08 python爬虫怎么副业接单(python爬虫在哪接单)
- 2025-05-08 「2022 年」崔庆才 Python3 爬虫教程 - 网页解析利器 XPath 初体验
- 2025-05-08 惊呆了!Python还能这样用?爬取网页数据并存储至本地数据库
- 2025-05-08 Python爬虫:如何实现异步加载爬取图片?
- 2025-05-08 使用ChatGPT编码抓取网页数据成功
- 263℃Python短文,Python中的嵌套条件语句(六)
- 262℃python笔记:for循环嵌套。end=""的作用,图形打印
- 261℃PythonNet:实现Python与.Net代码相互调用!
- 255℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 255℃Python实现字符串小写转大写并写入文件
- 113℃原来2025是完美的平方年,一起探索六种平方的算吧
- 94℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 87℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)