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


前言

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


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

一、设计思路

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

二、源码展示

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

代码如下(示例):

import os

try:
    import requests as rq
    from bs4 import BeautifulSoup as BS
    import 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_year
    b = time.localtime().tm_mon
    if a <= 2 * (10 ** 3) + 21 and b <= 5:
        pass
    else:
        print('\n\tThe tool has expired. Please contact <shusheng.yuan@foxmail.com>.\n')
        input('Click enter to exit!')
        sys.exit()

    global response
    url = "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:
            continue
        else:
            break
    print("\t搜索响应码:", response.status_code)
    response.encoding = 'gb2312'  # Cause:<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    text_data = response.text
    response.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 response
    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 = requests.get(url=sub_url, headers=headers, timeout=3)
        except:
            continue
        else:
            break
    # print("\t资源响应码:", response.status_code)
    response.encoding = "gb2312"
    sub_text_data = response.text
    response.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:
            continue
        else:
            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:
            continue
        else:
            break
    response_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:
            continue
        else:
            break
    response_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 = 99
                if typeid == 4:
                    typeid = 16
                if typeid == 5:
                    typeid = 19

                if typeid in [1, 2, 99, 16, 19]:
                    pass
                else:
                    7 / 0
            except:
                print("输入错误, 请重试!(1/2/3/4/5)")
                continue
            else:
                break
        print()
        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 = 1
            for 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"]:
            break
        else:
            print()
            continue

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
[软件功能]: 本软件用于从搜索引擎或者具体网页上提取链接,主要用途是搜索留言本、论坛、blog等地址 通过您设定的关键词 软件自动在搜索引擎结果里提取符合条件的连接 本软件把超链接分为两部分看待:连接和连接名称 通过对这两部分的设定来提取符合要求的连接 可以设定只提取含有某“特征词”的网址 也可以设定过滤含有某“特征词”的网址(针对链接) 可以设定只提取链接名称含有某“特征词”的网址 也可以设定过滤链接名称含有某“特征词”的网址(针对链接名称) 提取搜索结果是一门技术,需要一定的电脑和网络基础,本软件是为懂电脑和网络的人设计的 本软件是免费软件,不对外提供服务(本人的全系列客户除外) [参数说明]: 本软使用的关键在于正确设置各项参数,参数设置对了,链接也就提出来了 关键词或网址:如果从搜索引擎里提取 就填写关键词 比如 签写留言(提取留言本) 、Powered by Discuz(提取discuz类型的论坛) 如果是从某页面提取 就填写完整的网址 比如 http://club.sohu.com/map/club_map.htm 链接必含词汇: 就是规定提出来的链接必须含有什么词汇 比如提取留言本 就可以设定 wbook.asp、gb_sign.asp、upfile.asp、feedback.asp 这些常用的留言本文件名称 也可以留空,表示所有的网址都要 链接排除词汇:如果你不希望提取的网址含有某个词汇 就写上 这个一般不要动,不要修改默认的,更不能留空 链连名称必含: 就是提取连接时,链接名称里面必须含有的词汇 这个一般不要动,留空即可 链连名称排除: 就是提取连接时,链接名称里面不能含有的词汇 这个一般不要动,不要修改默认的,更不能留空 间隔或者限时:因为google禁止连续不停的快速搜索,所以本软件对百度和google采用不同的方式提取 对百度是连续性的 对google是固定间隔时间的不断提取 限时: 处理某一个页面允许的最长时间 超过限时就刷新重试 (针对百度) 间隔: 隔多久提取下一页(针对google,默认15秒,尽量不要修改) 过滤相似: 这个参数对应着搜索引擎的两种搜索模式,一般都要选上它,不熟悉搜索引擎的不要改 设置好各项参数后点击<提取>按钮即可,软件开始提取, 软件左下角会显示进度,提取完了会显示提取完毕 举例说明: 一、如果想从搜索引擎里提取某些网址 A.比如想提取一些留言本地址 首先 选择要用的搜索引擎(百度或者google) 然后输入关键字“签写留言” --如要教育类的留言本,就输“签写留言 教育” --如不要带验证码的就输“签写留言 教育 -验证码” 关键词选择学问很大,需仔细琢磨 其次选择链接必含词汇 --词汇那儿可以不填,这样可以提取出所有类型的留言本 --如果需要某一类型的留言本,就填上该类型的留言本地址中都有的词汇 比如 "write.asp"、"upfile.asp"、"leaveword.asp"、"add.asp"等等 其它参数可以不动 最后点<提取>按钮。软件就开始搜索,并不断把搜索到的相关网址添加到左边列 同时列表下方会显示提取了多少页,直到全部页面提取完毕。 B.比如想提取一些动网论坛地址 请先选择要用的搜索引擎(百度和google),然后输入关键字“Powered By Dvbbs”。 因为大多数论坛地址都含有“bbs”,所以你可以设定"bbs"为必含词汇,也可以不输入 其它参数可以不动。 直接点<提取>按钮。软件就开始搜索,并不断把搜索到的相关网址添加到左边列表里 同时列表下方会显示提取了多少页,直到全部页面提取完毕。 二、如果想从某具体网页上提取某些网址 请先输入该网页完整的具体网址 然后输入要提取的网址里面必含词汇,也可以输入排除词汇 然后点提取即可把你想要的网址一次性提出来。 比如想要搜狐论坛列表 http://club.sohu.com/map/club_map.htm 里的所有论坛栏目地址 首先输入网址 http://club.sohu.com/map/club_map.htm 我们可以发现该页面上论坛栏目地址都含有list这个词,所以把“list”作为必含词汇 然后点<提取>按钮,就可以把所有的搜狐论坛栏目地址都提出来了 注意事项: a.如果想提取全部网址,只需把必含词汇设为“http”或者留空 b.用不同特征词从搜索引擎提取某一类网址时,链接排除词汇的设定可以避免重复提取 c.一般情况下不要改动排除词汇的设定,默认设置不影响正常提取
电影网址大全,吸取了以往各种导航网址程序的优点,最大程度的完善优化了各项功能和指标,采用谁对我站贡献大,我站也给予他宣传和展示的机会就越多的流量交换模式,只要您在本系统注册登记您的网址,然后在你网站做好我站连接或是挂上流量互换代码,每次您网站有用户访问到放置我站流量互换代码的站,那么你的网站将在最近入站以及你网站所在分类的第一位置!连接双方公正平等。 1.管理目录admin,管理员用户名19mt,密码19mtcom 2.修改数据库名19mtcom.asa修改成自己想要的名即可! 3.后台分类建议自己修改,要不大家的分类都相同影响百度收录。 ☆系统前台简介☆ 1.采用ASP+ACCESS架构,安全稳定,防注入功能; 2.新闻文章发布功能支持无限级分类,方便自由; 3.数据库经过防下载等安全处理,后台可超强命名,随意改动; 4.每来访一个IP,来访网站就会自动排到第一,当天来路不同,显示颜色也不同,鼓励点入; 5.前台统计数据调用,最新点入网站调用,未审核网站调用等; 6.申请加入电影网址大全的网站按最后点进的时间排序首页和分类显示链接; 7.分类以昨日点入时间为准,每晚十二点后生成静态; 8.每来访一个IP,就会自动排到第一,当天来路次数不同,显示颜色也不同:有1次即显示,10次即套蓝色,30次即套红色加粗; 9.首页白天3分钟,晚上5分钟自动更新一次,全站24小时手动更新一次; 10.站内搜索功能,方便用户找到自己想要的网址; 11.程序全面优化和升级,增强对搜索引擎的收录功能; 12.流量互换功能,最大程度互换流量。 ☆系统后台功能详细说明☆ ☆网站管理系统 1.网站基本信息,说明:里面设置,网站标题,LOGO,关键词,统计代码,版权信息! 2.图片广告管理,说明:网站所有图片广告修改的地方,在首页可以看到所有图片广告,其中ads09是在网址内页显示!其它的都在首页和分类页有位置显示! 3.顶部文字广告管理,说明:这里的文字,首页,特别推荐里面显,分类首页和分类页,记得,改后要在生成html管理里,生成一下首页! 4.添加商家文字广告,说明:这里的文字,首页,中间部分,广告,那里的文字,在图片广告下面,一行七个! 5.管理商家文字广告,说明:修改删除商家文字广告! 6.管理帐号设置,说明:管理员用户名,密码的修改! 9.客户留言管理,说明:留言本的回复,修改和删除! ☆网站分类管理 1.类别添加管理,说明:分类添加删除管理,这里说明一下添加时有首页显示,导航就显示在首页上面,添加时选酷站显示,就在首页下面酷站里调用! 2.类别删除管理,说明:删除不想要的分类! 3.类别修改管理,说明:分类修改里,有显示,[首][酷]就是上面说明的首页显示,和酷站显示! ☆网址管理系统 1.添加网址链接,说明:用于后台管理员手工添加网址 2.添加实用查询|管理实用查询,说明:添加后在首页实用工具里显示! 3.添加名站导航|管理名站导航,说明:添加后在首页名站导航里显示! 4.添加友情链接|管理友情链接,说明:添加后在首页下部友情链接里显示! 5.查看所有的网址,说明:包含站长加的和用户自己加的! 6.站长加入的网址,说明:站长加入的网址! 7.用户加入已审核,说明:用户提交的网址,并通过审核的,说明一下,本站有自动审核功能,开启关闭,在 网站管理系统-网站基本信息里设置! 8.用户加入未审核,说明:用户提交的网址没审的,也就是没有作上本站链接的,或是作上链接没有点击到本站的! 9.有来路入未审核,说明:一般用户认为,有来路就应当审核了,这个功能,是为了关闭自动审核而设计的,手工审核的不管有没有来路,都要站长审核的! 10.加入黑名单网站,说明:加入黑名单的网址,点击这个导航,进入后,可以删除,和取消黑名单! 11.总来路小于五次,说明:本设计用于客户作上本站链接,点入量过小,没有贡献的站,可以多选删除! 12.常用维护共三项,说明:(1)开通所有未审的,一般不用这个,如果想要提交的站就收录,可以点击这个功能!(2)删除重复的网站,有一些站长提交过了,又提交了多次或是用二级域名提交,这样可以删除重复的网站!(3)删除所有未审核的站点,(4)清空所有网址,这个点时要注意,点击了,所有网址就都没有了! 13.站内报错,说明:用户在网址详提交网址打不开的情况页点击的! 14.站内网站搜索,说明:可以按名称,按网址,按分类,按ID号进行搜索! ☆模版修改管理 首 页 模版修改 分类页模版修改 关于本站页模板 (这里建议会一些HTML知识的站长修改,如果不会不建议修改以免出错,修改时一定要备份) ☆生成html管理 生成分类页面 生成生成主页及其他页 重置统计数据 清除昨天点入数据 清除总点入数据 清除总点出数据 (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值