前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者: imBobby

到了周末,写点简单加愉快的东西吧,下午健身回来,想看个电影,于是来到熟悉的网站:

btbtt.me

我觉得这个网站中文资源比较全,而海盗湾就是英文资源全一些,今天做个电影资源爬虫吧,进入btbtt.me首页:

这浓烈的的山寨风格,有一丝丝上头,先观察一下,点进高清电影区,我的思路是进入高清电影区,逐个访问页面内的电影标签,并将电影详情页面的种子下载到本地,所以先观察一下:

发现电影详情页的URL都在class为subject_link thread-new和subject_link thread-old的标签下存储,接下来点进电影详情页看看:

发现下载链接存储在属性rel为nofollow的标签a中,点击一下下载链接试试看:

竟然还有一层,有点难受了,想靠标签筛选这个下载链接有点难受,但是可以观察到:

下载链接其实就是把URL内的attach换成了download,这就省了很多事儿啊~

思路大概有了,那就写代码呗:

import requests
import bs4
import os
import time# 设置代理,这个网站也需要科学上网
proxies = { "http": "http://127.0.0.1:41091", "https": "http://127.0.0.1:41091", }headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 Edg/84.0.522.50"
}def init_movie_list(nums):"""根据传入数字决定爬取多少页电影,每页的电影大概几十个:param nums:爬取页面数量:return:页面url组成的list"""movie_list = []if nums < 2:return movie_listfor num in range(1, nums + 1):url = "http://btbtt.me/forum-index-fid-1183-page-" + str(num) + ".htm"movie_list.append(url)return movie_listdef get_movie_detail_url(url):"""根据传入的URL获取页面内电影详情链接并存储进List:param url:目标页面URL:return:电影详情页的URL和电影名字组成tuple,各个tuple再连成list"""context = requests.get(url=url, headers=headers, proxies=proxies).contenttime.sleep(1)bs4_result = bs4.BeautifulSoup(context, "html.parser")new_read_details = bs4_result.find_all("a", class_="subject_link thread-new")all_details = bs4_result.find_all("a", class_="subject_link thread-old") + new_read_detailsif not all_details:return []url_list =[]for item in all_details:url_list.append((item.get("title"), "http://btbtt.me/" + item.get("href")))return url_listdef get_movie_download_url(url_tuple):"""传入的tuple为文件夹名和下载链接组合:param url_tuple::return:"""folder_name = replace_folder_name(url_tuple[0])url = url_tuple[1]resp = requests.get(url=url, headers=headers, proxies=proxies)time.sleep(1)bs4_result = bs4.BeautifulSoup(resp.content, "html.parser")result = bs4_result.find_all("a", rel="nofollow", target="_blank", ajaxdialog=False)if not result:return ('', '', '')file_name = replace_folder_name(result[-1].text)download_url = "http://btbtt.me/" + result[-1].get("href").replace("dialog", "download")return (folder_name, file_name, download_url)def replace_folder_name(folder_name):"""按照windows系统下的文件命名规则规整化文件夹名:param folder_name::return:"""illegal_str = ["?",",","/","\\","*","<",">","|"," ", "\n", ":"]for item in illegal_str:folder_name = folder_name.replace(item, "")return folder_namedef download_file(input_tuple):"""下载文件:param input_tuple::return:"""folder_name = input_tuple[0]if not folder_name:folder_name = str(int(time.time()))file_name = input_tuple[1]if not file_name:file_name = str(int(time.time())) + ".zip"download_url = input_tuple[2]if not download_url:returnresp = requests.get(url=download_url, headers=headers, proxies=proxies)time.sleep(1)# D:/torrent是我的存储路径,这里可以修改if not os.path.exists('D:/torrent/' + folder_name):os.mkdir('D:/torrent/' + folder_name)with open('D:/torrent/' + folder_name + "/" + file_name, 'wb') as f:f.write(resp.content)if __name__ == '__main__':url = init_movie_list(5)url_list = []for item in url:url_list = get_movie_detail_url(item) + url_listfor i in url_list:download_tuple = get_movie_download_url(i)download_file(download_tuple)

PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取

可以免费领取源码项目实战视频PDF文件

Python爬虫爬取电影网站种子,让你以后再也不寂寞相关推荐

  1. python爬虫爬取某网站图片

    学习分享 | 今天刚学完爬虫,就随便写了一个爬虫代码爬取某网站的图片 网站就是这个图片网站,我选的是1080p格式,4k的要会员,我反正是还不会 导入的包如下 import requests from ...

  2. python爬虫爬取小说网站并转换为语音文件

    前言 作为一个技术宅,本着为眼睛着想的角度考虑,能少看屏幕就尽量少看屏幕,可是又是一个小说迷,那就开动脑筋爬一下小说转换成语音来听书吧 第一章:爬取小说文件 把目标定在小说存储量比较大的网站:起点中文 ...

  3. python爬虫爬取58网站数据_python实战学习笔记:爬取58同城平板电脑数据

    学习爬虫一周后独立完成的第一个作业项目:爬取58同城平板电脑数据. 1.首先确定URL,并抓取详情页中需要的信息 首先我们确定好需要爬取的网页URL是:http://zhuanzhuan.58.com ...

  4. Python爬虫—爬取某网站上面所有的世界港口信息数据

    最近学习了一段时间的Python基础语法后,写了一个爬取世界港口数据的爬虫,并且保存到SQL Server 数据库. 前提 公司之前有个需求是想监控集装箱如果进出某个港口的时候能给出信息提示,并且与海 ...

  5. python 小说cms系统_「博文小说网」Python爬虫爬取小说网站 - seo实验室

    博文小说网 #!/usr/bin/env Python # -*- coding: utf-8 -*- # @Author : Woolei # @File : book136_singleproce ...

  6. B站路飞学城学习笔记-Python爬虫-爬取电影分类排名-

    一.过程分析 1.先打开douban电影排行榜,点击喜剧部分 2.用鼠标滚轮向下翻页,同时按f12进行检查,点击Network中的Headers 3.我们可以发现Headers中有很多信息,比如Req ...

  7. python爬虫爬取58网站数据_Python爬虫,爬取58租房数据 字体反爬

    Python爬虫,爬取58租房数据 这俩天项目主管给了个爬虫任务,要爬取58同城上福州区域的租房房源信息.因为58的前端页面做了base64字体加密所以爬取比较费力,前前后后花了俩天才搞完. 项目演示 ...

  8. python爬虫招聘-Python爬虫-爬取招聘网站信息(一)

    学习内容,来源于百度搜索 工具及环境 1.python版本:python 3.7.3 2.安装工具:beautifulsoup 3.系统环境:Windows10 4.浏览器:chrome 网页分析 i ...

  9. [python爬虫]爬取电影,电视剧

    目录 影视作品存储格式 爬取方法 实际操作 影视作品存储格式 网页中的小视频往往以 <video src="#"></video>存在,拿到src中的视频地 ...

  10. python爬虫爬取某网站全站图片案列(源码全给可白漂,仅供学习使用,切勿用作非法用途)

    爬取后保存的图片效果图 步骤入下(三步): 先去要爬取的目标网站(https://pixabay.com/)去注册一个账号. 2.注册后登录,浏览器右键鼠标,打开检查,找到登录后的cookies值. ...

最新文章

  1. 怎么看生辰八字中五行缺什么
  2. python文件及异常处理
  3. 嵌入式 uboot引导kernel,kernel引导fs【转】
  4. angularjs-控制form及radio,checkbox,select
  5. kvm虚拟化学习笔记(十)之kvm虚拟机快照备份
  6. 数仓开发神器--DBeaver
  7. exclude函数计算_Java Stream exclude()函数删除重复项
  8. PHP oop之大讨论 --- 你究竟有无在用OOP
  9. 最新python中文手册_python中文手册下载
  10. AWVS12 安装教程(详细附图)
  11. html video函数,HTML5 Video 的API函数
  12. PLC控制系统设计与调试的一般步骤
  13. MATLAB/Simulink仿真 并网型风光混储直流微电网 实现:功率分配、削峰填谷、平抑功率波
  14. 2019暑假牛客多校赛第九场H.Cutting Bamboos (主席树+二分)
  15. 闲扯Maven项目代码组织形式
  16. change lan.php lanid,天融信负载均衡本地文件包含漏洞
  17. 信息学奥赛的“一二三四”
  18. 淘宝首页的搜索规律 高级搜索页搜索规律 淘宝商家应对的优化策略
  19. python 快乐数判断_Python小课堂 习题答案和讲解
  20. C# 控制台项目练习--当当网

热门文章

  1. void value not ignored as it ought to be
  2. 2021全球Top 1000计算机科学家h指数发布,中国53人上榜!Bengio总榜第二,韩家炜居华人首位...
  3. 2021年中国研究生数学建模竞赛D题参考思路
  4. 基于PHP实现高性能敏感词过滤算法
  5. c++ primer第5版中文版.pdf_伍德里奇计量经济学导论现代观点第5版 pdf
  6. ArcGIS的 高斯-克吕格 投影坐标系
  7. 深圳数据分析认证(CPDA)含金量怎么样?
  8. Linux源码包安装的详细教程
  9. matlab做班级抽签,matlab抽签程序(含源码)
  10. STM32 Futaba SBUS协议解析