一、写在前面

最近看新闻说圣城家园(SCG)倒了,之前BT天堂倒了,暴风影音也不行了,可以说看个电影越来越费力,国内大厂如企鹅和爱奇艺最近也出现一些幺蛾子,虽然目前版权意识虽然越来越强,但是很多资源在这些主流视频网站上面依然没有,我平时看电影又习惯下载下来再看,所以每次看电影找资源就很麻烦,花了点时间,于是就有了这个程序。

二、目的

输入一部电影的名字,帮我到BT之家上面看看有没有,如果有就把下载链接复制给我。

三、设计思路

本来想的是直接爬取首页最近发布的电影,然后取判断有没有,后来想了一下,为什么不直接使用网站的搜索功能呢?

四、开始爬虫

4.1.分析网站

打开网站搜索一个结果,发现在网址里面直接修改链接的内容就能到达搜索页面,那这样就更简单。

先让用户输入一部电影的名字,直接生成链接。

# 要求输入电影名
inputname = input('\n' + '请输入您要搜索的电影:') # 链接是用网站的搜索功能
url = "http://www.6btbtt.com/search-index-keyword-" + inputname + ".htm"

接下来再看搜索结果是什么样的,使用审查元素看看,就会看到搜索结果里面电影名字和链接会在一个a标签里面,类型为subject_link thread-old read

至此网站就分析完成了

4.2.开始爬取过程

刚才已经得到了电影名和网站,那么下面直接获得搜索结果页面的内容就行,用requests获取内容,获取后顺便用beautifulsoup解析一下,解析后的东西就是有格式的,这样才能进行下一步操作。

# 获取网页内容并用beautifulsoup解析一下
soup = BeautifulSoup(requests.get(url).text,'lxml') # 给出找到第一个结果,网站搜索结果就是把最新的排在前面,所以一个结果就够了
movies = soup.find('a','subject_link thread-old')

然而现在我们是得到一段内容,它不光包含电影标题和链接,还包含其他的东西,我们要做的就是把电影标题和链接分别提取出来。

# 直接输出电影和链接
try:
link = movies.get('href')
name = movies.text ####这里用的是text,因为标签下面还有标签,是string无法获取文本内容
print('\n' + name)
print(link + '\n')
except:
print("没有找到这部电影或程序发生未知错误")

这里用try和except来捕捉程序反馈,就是说假如获取的内容有问题,那程序不崩溃,就执行其他的或者进行下一步操作

至此,我们已经得到了电影和链接了,爬虫过程也算结束了。

4.3判断爬取结果和用户输入

由于电影标题出来包含真正的电影名还包含清晰度、年代、格式等等这些信息,通常是这样的

[BT下载][小丑][BD- MKV/2.12GB][英语中英字幕][1080P][DC年度精彩大片蓝光版]

这些我们都不要,在把它分割出来,单独取出电影名字,分割方法就是前面是 “下载][” 后面是“][”,取中间文本就可以。

# 这是用于从网页的电影标题里面分割出真正的电影名
def get_str_btw(s,f,b):
par = s.partition(f)
return (par[2].partition(b))[0][:] try:
mname = (get_str_btw(name,"下载][","]["))
except:
print("无法匹配搜索结果")

单独取出电影名字后进行比对,这里只是简单地进行文字匹配,本来应该可以多爬取几个结果,然后模糊搜索进行匹配的。

# 判断输入的和获取到的电影名字是否匹配
if mname == inputname:
print("电影有啦!链接已复制!祝您观影愉快!" + '\n')
pyperclip.copy(link)
else:
print("我给您找到了这个!")

最后再加上一个让程序运行完等一下的命令

# 程序执行完不要马上关闭窗口
os.system("pause")

至此,这个程序就完成了。

运行截图

五:注意事项

5.1.导入模块的时候如果发现不能导入,可能是缺少c++运行库,去下载官方工具安装就行;

5.2网站里面看似相同的元素标签可能不同,比如那个热门电影和新电影标签不一样,一开始遍历爬取的时候发现总是报错;

5.3一定要用tryexcept来避免出现意外;

程序可能没有意义,但生命不息,折腾不止。

Python爬虫爬取BT之家找电影资源的更多相关文章

  1. 如何利用python爬虫爬取爱奇艺VIP电影?

    环境:windows    python3.7 思路: 1.先选取你要爬取的电影 2.用vip解析工具解析,获取地址 3.写好脚本,下载片断 4.将片断利用电脑合成 需要的python模块: ##第一 ...

  2. python爬虫—爬取英文名以及正则表达式的介绍

    python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一.  爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...

  3. Python爬虫 - 爬取百度html代码前200行

    Python爬虫 - 爬取百度html代码前200行 - 改进版,  增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...

  4. 用Python爬虫爬取广州大学教务系统的成绩(内网访问)

    用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...

  5. 使用Python爬虫爬取网络美女图片

    代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...

  6. Python爬虫|爬取喜马拉雅音频

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

  7. python爬虫爬取内容中,-xa0,-u3000的含义

    python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 https://blog.csdn.net/aiwuzhi12/article/details/54866310

  8. Python爬虫爬取全书网小说,程序源码+程序详细分析

    Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...

  9. 一个简单的python爬虫,爬取知乎

    一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...

随机推荐

  1. 「福利」Java Swing 编写的可视化算法工程,包含树、图和排序

    之前在整理<学习排序算法,结合这个方法太容易理解了>这篇文章时,发现了一个用 Java Swing 编写的可视化算法工程,真心不错!包含了常用数据结构和算法的动态演示,先来张图感受下: 可 ...

  2. # .NET Core下操作Git,自动提交代码到

    .NET Core下操作Git,自动提交代码到 转自博客园(阿星Plus) .NET Core 3.0 预览版发布已经好些时日了,博客园也已将其用于生产环境中,可见 .NET Core 日趋成熟 回归 ...

  3. 解决plsql中文显示问号(???)问题

    最近新买的电脑,配置好数据库连接后,plsql查看数据与插入中文数据都显示问号(???),同事的都正常显示,查看了很多资料,有的说是数据库字符集的原因让修改数据库的字符集,但是我的数据库都是远程连接正 ...

  4. SpringBoot源码解析:创建SpringApplication对象实例

    上篇文章SpringBoot自动装配原理解析中,我们分析了SpringBoot的自动装配原理以及@SpringBootApplication注解的原理,本篇文章则继续基于上篇文章中的main方法来分析 ...

  5. springboot启动报错,Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.

    报错: Error starting ApplicationContext. To display the conditions report re-run your application with ...

  6. android studio学习---怎么创建一个新的module并且再次运行起来(在当前的project里面)

    选择File->new module出现的界面,选择android application选择下一步,就出现了和刚刚一样的流程了,一步步创建完成即可. 我们看到多了个secondAndroid的 ...

  7. ETL DAG调度策略

    1.目前etl的fetch task策略是基于任务子孙任务数和任务优先级获得task list 2.然后遍历task list 查看任务是否具备执行条件 集群资源校验(yarn/hdfs)<如果 ...

  8. Windows Server安装FileZilla服务端

    1.下载 地址: https://filezilla-project.org/download.php?type=server 点击下载 2. 安装较为简单, 不详细介绍,下面说配置 2.1 添加用户 ...

  9. 交叉编译tmux

    作者:彭东林 邮箱:pengdonglin137@163.com 参考 https://gist.github.com/tessus/5e118d44261a6ab2f198 环境 Qemu-4.1 ...

  10. Nginx 高级配置-压缩功能

    Nginx 高级配置-压缩功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx压缩相关参数概述 1>.gzip on | off; Nginx支持对指定类型的文 ...