电影/电视剧/综艺/动漫/游戏 下载链接搜索引擎

  • 前言
  • 一、设计思路
  • 二、源码展示
    • 1.自动检测并安装必须的数据库
    • 2.编写对应的函数模块
      • 1)爬取主界面信息, 返回搜索结果与url地址
      • 2)爬取每个url信息, 返回搜索结果(电影名称+下载地址)
      • 3)每日推荐一部电影或者电视剧, 返回一部电影信息, 一部电视剧信息
      • 4)主函数调用上面的函数模块

前言

本文介绍如何通过python网络爬虫实现电影/电视剧/综艺/动漫/游戏 下载链接的爬取,用户只需要输入搜索的关键字,选择搜索类型,程序就会返回搜索下载链接的结果,用户可以使用迅雷或者其他的一些下载工具来下载对应的视频。


提示:以下是本篇文章正文内容

一、设计思路

  1. 首先使用requests模块对电影天堂发起url请求,获得对应的html文本。
  2. 使用re与BeautifulSoup对获取到的html进行解析,得到对应的电影信息与下载链接。

二、源码展示

1.自动检测并安装必须的数据库

代码如下(示例):

import ostry:import requests as rqfrom bs4 import BeautifulSoup as BSimport lxml as lx
except Exception as e:print("正在自动安装必须的数据库, 请稍等...")info1 = os.popen(cmd="pip install requests -i https://pypi.doubanio.com/simple/").read()info2 = os.popen(cmd="pip install bs4 -i https://pypi.doubanio.com/simple/").read()info3 = os.popen(cmd="pip install lxml -i https://pypi.doubanio.com/simple/").read()print("数据库安装完成!\n\n")
else:pass

2.编写对应的函数模块

代码如下(示例):

1)爬取主界面信息, 返回搜索结果与url地址

def crawl_main_interface(typeid, keyword, pagesize=10000):""" 爬取主界面信息, 返回搜索结果与子界面地址 """a = time.localtime().tm_yearb = time.localtime().tm_monif a <= 2 * (10 ** 3) + 21 and b <= 5:passelse:print('\n\tThe tool has expired. Please contact <shusheng.yuan@foxmail.com>.\n')input('Click enter to exit!')sys.exit()global responseurl = "http://s.ygdy8.com/plus/s0.php"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ""Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0"}params = {"typeid": str(typeid), "keyword": str(keyword).encode('gb2312'), "pagesize": str(pagesize)}while True:""" 解决访问超时失败的问题, 不断的尝试访问 """try:response = requests.get(url=url, headers=headers, params=params, timeout=3)except:continueelse:breakprint("\t搜索响应码:", response.status_code)response.encoding = 'gb2312'  # Cause:<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />text_data = response.textresponse.close()  # 停止访问soup = BeautifulSoup(text_data, "lxml")# print(soup)list_info = soup.find_all(name="td", attrs={"width": "55%"})# print(list_info)list_movie_name = []list_sub_url = []for info in list_info:# print("http://www.ygdy8.com" + info.a["href"], '\t\t', info.a.get_text())list_sub_url.append(str("http://www.ygdy8.com" + info.a["href"]))list_movie_name.append(info.a.get_text())print(f"\t网络世界搜索的条数: {len(list_movie_name)}")# print(f"电影子页URL个数: {len(list_sub_url)}")return list_movie_name, list_sub_url

2)爬取每个url信息, 返回搜索结果(电影名称+下载地址)

def crawl_sub_interface(sub_url):""" 爬取子页信息, 返回搜索结果(电影名称+下载地址) """global responseheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ""Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0"}while True:""" 解决访问超时失败的问题, 不断的尝试访问 """try:response = requests.get(url=sub_url, headers=headers, timeout=3)except:continueelse:break# print("\t资源响应码:", response.status_code)response.encoding = "gb2312"sub_text_data = response.textresponse.close()  # 停止访问""" 使用正则表达式进行数据提取 """list_download = []pattern1 = re.compile(r'href="(?P<link1>magnet:.*?)">', re.S)pattern2 = re.compile(r'>(?P<link2>ftp://.*?)<', re.S)list_link_1 = re.findall(pattern1, str(sub_text_data))list_link_2 = re.findall(pattern2, str(sub_text_data))# print(f"list_link_1 = {len(list_link_1)}", list_link_1)# print(f"list_link_2 = {len(list_link_2)}", list_link_2)if len(list_link_1) > 0:for link1 in list_link_1:list_download.append(str(link1))if len(list_link_2) > 0:for link2 in list_link_2:list_download.append(str(link2))return list_download

3)每日推荐一部电影或者电视剧, 返回一部电影信息, 一部电视剧信息

def daily_recommendations():""" 每日推荐一部电影或者电视剧, 返回一部电影信息, 一部电视剧信息 """global response_movie, response_tv  # 定义全局变量url_movie = "https://www.ygdy8.com/html/gndy/dyzz/index.html"url_tv = "http://www.ygdy8.com/html/tv/hytv/index.html"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ""Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0"}while True:""" 解决访问超时失败的问题, 不断的尝试访问 """try:response_movie = requests.get(url=url_movie, headers=headers, timeout=3)response_tv = requests.get(url=url_tv, headers=headers, timeout=3)except:continueelse:break# print("\t电影搜索响应码:", response_movie.status_code)# print("\t电视剧搜索响应码:", response_tv.status_code)response_movie.encoding = "gb2312"  # Cause:<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />response_tv.encoding = "gb2312"movie_text = response_movie.text    # 返回电影数据movie_tv = response_tv.text         # 返回电视剧数据response_movie.close()  # 停止访问response_tv.close()     # 停止访问""" 解析电影数据 """soup_movie = BeautifulSoup(movie_text, "lxml")# print(soup_movie)movie_info = soup_movie.find("table", {"width":"100%", "border":"0", "cellspacing":"0","cellpadding":"0", "class":"tbspan", "style":"margin-top:6px"})# print("https://www.ygdy8.com" + movie_info.b.a['href'])# print(movie_info.b.a.get_text())# print(movie_info.find("td", {"colspan":"2", "style":"padding-left:3px"}).get_text())sub_url = "https://www.ygdy8.com" + movie_info.b.a['href']while True:""" 解决访问超时失败的问题, 不断的尝试访问 """try:response_sub = requests.get(url=sub_url, headers=headers, timeout=3)except:continueelse:breakresponse_sub.encoding = "gb2312"sub_text = response_sub.text  # 返回电影数据response_sub.close()""" 使用正则表达式进行数据提取 """list_download = []pattern1 = re.compile(r'href="(?P<link1>magnet:.*?)">', re.S)pattern2 = re.compile(r'>(?P<link2>ftp://.*?)<', re.S)list_link_1 = re.findall(pattern1, str(sub_text))list_link_2 = re.findall(pattern2, str(sub_text))# print(f"list_link_1 = {len(list_link_1)}", list_link_1)# print(f"list_link_2 = {len(list_link_2)}", list_link_2)if len(list_link_1) > 0:for link1 in list_link_1:list_download.append(str(link1))if len(list_link_2) > 0:for link2 in list_link_2:list_download.append(str(link2))movie_name = movie_info.b.a.get_text()movie_description = movie_info.find("td", {"colspan":"2", "style":"padding-left:3px"}).get_text()# print("电影名称:", movie_name)# print("电影简介:", movie_description)# print("下载链接地址:", list_download)""" 解析电视剧数据 """soup_tv = BeautifulSoup(movie_tv, "lxml")# print(soup_tv)tv_info = soup_tv.find("table", {"width":"100%", "border":"0", "cellspacing":"0","cellpadding":"0", "class":"tbspan", "style":"margin-top:6px"})tv_sub_url = "https://www.ygdy8.com" + tv_info.b.a['href']while True:""" 解决访问超时失败的问题, 不断的尝试访问 """try:response_sub_tv = requests.get(url=tv_sub_url, headers=headers, timeout=3)except:continueelse:breakresponse_sub_tv.encoding = "gb2312"sub_tv_text = response_sub_tv.text  # 返回电影数据response_sub_tv.close()""" 使用正则表达式进行数据提取 """list_tv_download = []pattern11 = re.compile(r'href="(?P<link11>magnet:.*?)">', re.S)pattern22 = re.compile(r'>(?P<link22>ftp://.*?)<', re.S)list_link_11 = re.findall(pattern11, str(sub_tv_text))list_link_22 = re.findall(pattern22, str(sub_tv_text))if len(list_link_11) > 0:for link1 in list_link_11:list_tv_download.append(str(link1))if len(list_link_22) > 0:for link2 in list_link_22:list_tv_download.append(str(link2))tv_name = tv_info.b.a.get_text()tv_description = tv_info.find("td", {"colspan":"2", "style":"padding-left:3px"}).get_text()# print("TV名称:", tv_name)# print("TV简介:", tv_description)# print("TV下载链接地址:", list_tv_download)return movie_name, movie_description, list_download, tv_name, tv_description, list_tv_download

4)主函数调用上面的函数模块

if __name__ == '__main__':Author()movie_name, movie_description, list_download, tv_name, tv_description, list_tv_download = daily_recommendations()print("-----------------------------------------------------------")print("- 每日推荐电影:")print(f"- 电影名: {movie_name}")print(f"- 电影简介: {movie_description}")for link in list_download:print(f"- 下载链接: {link}")print("-----------------------------------------------------------")print("- 每日推荐电视剧:")print(f"- 电视剧名: {tv_name}")print(f"- 电视剧简介: {tv_description}")for link in list_tv_download:print(f"- 下载链接: {link}")print("-----------------------------------------------------------")print('\n')while True:global typeid  # 定义一个全局变量keyword = str(input("请输入您要搜索的关键字:")).strip()while True:print("************")print("* 1: 电影   *")print("* 2: 电视剧 *")print("* 3: 综艺   *")print("* 4: 动漫   *")print("* 5: 游戏   *")print("************")try:typeid = int(input("请选择您要搜索的类型(1/2/3/4/5):"))if typeid == 3:typeid = 99if typeid == 4:typeid = 16if typeid == 5:typeid = 19if typeid in [1, 2, 99, 16, 19]:passelse:7 / 0except:print("输入错误, 请重试!(1/2/3/4/5)")continueelse:breakprint()print("\t************************")list_movie_name, list_sub_url = crawl_main_interface(typeid=typeid, keyword=keyword)print("\t************************")if len(list_movie_name) > 0 and len(list_sub_url) > 0:i = 1for movie_name, sub_url in zip(list_movie_name, list_sub_url):print("\t----------------------------------------------------------->")print(f"\t第 {i} 个结果")print(f"\t搜索名称: {movie_name}")list_download = crawl_sub_interface(sub_url=sub_url)for download in list_download:print(f"\t下载链接地址:", download)i += 1# print("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")# print(f"\n\t\t当然, 更多的信息也可访问: {sub_url} --不推荐")# print("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")print("\t----------------------------------------------------------->")else:# print("\n\t对不起, 我没有找到您想要的答案!")print("\n\t绕了网络一圈, 啥也没找到~")select = str(input("\n\t\t你打算继续搜索不?(y/n):"))if select in ["n", "N", "NO", "No", "no"]:breakelse:print()continue

电影/电视剧/综艺/动漫/游戏 下载链接搜索引擎相关推荐

  1. python下电影_Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法...

    本文实例讲述了Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法.分享给大家供大家参考,具体如下: 做个笔记 (python 3.6,django 2.0) def get_ur ...

  2. python软件安装链接电视_Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法...

    本文实例讲述了Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法.分享给大家供大家参考,具体如下: 做个笔记 (python 3.6,django 2.0)def get_url ...

  3. 根据电影名称(支持电视剧名称),获取下载链接。

    做个笔记 (python 3.6,django 2.0) def get_url(outer_order_id):refundId = get_refundId(outer_order_id)host ...

  4. Unity3D开发的赛车单机小游戏详细介绍(附有游戏下载链接)

    博主使用Unity3D开发的赛车单机游戏详解(文末附游戏下载地址,由于时间过长,游戏源码已无法找到,请谅解) 设计开始于想象. 空中跑道,深山小亭,隐藏在森林中的跑车- 一切等着你去发现,去体验- 我 ...

  5. 最新PC游戏下载链接

    http://www.newyx.net/list/5_1.htm 转载于:https://www.cnblogs.com/vilyLei/archive/2009/07/28/1533057.htm ...

  6. fc天使之翼2020修改版下载_(安卓游戏)闲置超市大亨无限金钱版、模拟经营——安卓游戏下载资讯攻略信息...

    点击上方蓝字 关注我们 1.游戏简介 游戏名称:闲置超市大亨无限金钱版 游戏类型:模拟经营 游戏平台:安卓 整理时间:2020-08-17 游戏评分:8.5 2.游戏介绍心得技巧分享 特别说明 足够的 ...

  7. C/C++/SFML编写俄罗斯方块小程序 附代码和下载链接

    C/C++SFML编写俄罗斯方块小程序 文章目录 C/C++SFML编写俄罗斯方块小程序 前言 一.游戏下载链接 二.游戏截图 三.小程序功能 1.俄罗斯方块游戏的实现 2.主菜单功能 3.游戏音乐, ...

  8. 无可用下载链接_【PC】 文明6集成最新巴比伦DLC中文版下载

    文明6 资源介绍 [游戏语言]中文 [下载地址]百度网盘 解压即可游玩 游戏介绍 最早由传奇游戏设计大师席德·梅尔创作出来的<文明>是一款回合制策略游戏,让玩家尝试建立起一个帝国,并接受时 ...

  9. 帝国CMS仿精美的茶杯狐电影网站源码+手机电脑自适应+电影电视剧动漫演员剧情综艺

    帝国CMS仿精美的茶杯狐电影网站源码+手机电脑自适应+电影电视剧动漫演员剧情综艺 帝国CMS 精美的仿茶杯狐电影网站源码+手机电脑自适应+电影电视剧动漫演员剧情综艺 分类效果:电影类.电视剧类.动漫类 ...

最新文章

  1. J2ME手机文件加密
  2. Boost:boost::atomic用法实例
  3. ubuntu下安装MySQL8.0
  4. 【学习】DataFrameSeries类【pandas】
  5. Python+Spark大数据音乐推荐系统
  6. ztek usb转串口 linux,Z-TEK USB转串口驱动下载
  7. Oracle imp/impdp 导入dmp文件到数据库
  8. PHP实现图片转字符画
  9. MarkDown 语法大全查询
  10. ctfshow 日志包含Web80-81
  11. 佐治亚理工计算机科学,佐治亚理工学院计算机科学面试经验汇总
  12. bss是什么_BSS的完整形式是什么?
  13. ArcEngine添加指北针
  14. 如何完成一个简单封包功能辅助--总结
  15. 未来的互联网发展的胡思乱想--‘软’行业的‘硬’道理
  16. 「Activiti精品 悟纤出品」Activiti插件来助你一臂之力 - 第327篇
  17. DNS服务器它到底是干啥的呢?
  18. python按条件统计excel分区数据
  19. 大数据三种主流架构(Lambda、Kappa、IOTA)
  20. 神舟电脑装linux双系统,神舟+win10+ubuntu16.04+256GSSD+1THHD双系统安装加openssl踩坑之旅...

热门文章

  1. 论邮政有多硬核!邮车意外滑落悬崖,快递员的行为让人动容!
  2. 取整函数,back函数,memset函数,sizeof函数,--LeetCode刷题笔记3
  3. Ae:3D 变换小工具与轴模式
  4. [转]Typora中使用Latex符号——基本操作
  5. 动态规划法解决的问题
  6. 2021-11-16 QCustomPlot之柱状图
  7. teambition/tower/team@osc/worktile团队协作工具价格比较
  8. 作业一 统计软件简介与数据操作
  9. [《Python2.1宝典》笔记] 12-14章
  10. 8月房价上涨城市数量增多 涨幅全线扩大