python爬虫可以找种子吗_python3爬取torrent种子链接实例
本文环境是python3,采用的是urllib,BeautifulSoup搭建。
说下思路,这个项目分为管理器,url管理器,下载器,解析器,html文件生产器。各司其职,在管理器进行调度。最后将解析到的种子连接生产html文件显示。当然也可以保存在文件。最后效果如图。
首先在管理器SpiderMain()这个类的构造方法里初始化下载器,解析器,html生产器。代码如下。
def__init__(self):
self.urls = url_manager.UrlManager()
self.downloader = html_downloader.HtmlDownloader()
self.parser = html_parser.HtmlParser()
self.outputer = html_outputer.HtmlOutputer()
然后在主方法里写入主连接并开始下载解析和输出。
if __name__ == '__main__':
url = "http://www.btany.com/search/桃谷绘里香-first-asc-1"
# 解决中文搜索问题 对于:?=不进行转义
root_url = quote(url,safe='/:?=')
obj_spider = SpiderMain()
obj_spider.parser(root_url)
用下载器进行下载,解析器解析下载好的网页,最后输出。管理器的框架逻辑就搭建完毕
def parser(self, root_url):
html = self.downloader.download(root_url)
datas = self.parser.parserTwo(html)
self.outputer.output_html3(datas)
downloader下载器代码如下:
def download(self, chaper_url):
if chaper_url is None:
return None
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
req = urllib.request.Request(url=chaper_url, headers=headers)
response = urllib.request.urlopen(req)
if response.getcode() != 200:
return None
return response.read()
headers是模仿浏览器的请求头。不然下载不到html文件。
解析器代码如下:
# 解析种子文件
def parserTwo(self,html):
if html is None:
return
soup = BeautifulSoup(html,'html.parser',from_encoding='utf-8')
res_datas = self._get_data(soup)
return res_datas
# 将种子文件的标题,磁力链接和迅雷链接进行封装
def _get_data(self,soup):
res_datas = []
all_data = soup.findAll('a',href=re.compile(r"/detail"))
all_data2 = soup.findAll('a', href=re.compile(r"magnet"))
all_data3 = soup.findAll('a',href=re.compile(r"thunder"))
for i in range(len(all_data)):
res_data = {}
res_data['title'] = all_data[i].get_text()
res_data['cl'] = all_data2[i].get('href')
res_data['xl'] = all_data3[i].get('href')
res_datas.append(res_data)
return res_datas
通过分析爬下来的html文件,种子链接在a标签下。然后提取magnet和thunder下的链接。
最后输出器输出html文件,代码如下:
def __init__(self):
self.datas = []
def collect_data(self, data):
if data is None:
return
self.datas.append(data)
#输出表单
def output_html3(self,datas):
fout = open('output.html', 'w', encoding="utf-8")
fout.write("")
fout.write("
")
fout.write("
")
fout.write("
for data in datas:
fout.write("
")
fout.write("
%s" % data['title'])
fout.write("
%s" % data['cl'])
fout.write("
%s" % data['xl'])
fout.write("
")
fout.write("
")
fout.write("")
fout.write("")
fout.close()
项目就结束了。源代码已上传,链接https://github.com/Ahuanghaifeng/python3-torrent,觉得有用请在github上给个star,您的鼓励将是作者创作的动力。
以上这篇python3爬取torrent种子链接实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持python博客。
python爬虫可以找种子吗_python3爬取torrent种子链接实例相关推荐
- python爬虫多久能学会-不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据...
原标题:不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方 ...
- 基于python爬虫————静态页面和动态页面爬取
基于python爬虫----静态页面和动态页面爬取 文章目录 基于python爬虫----静态页面和动态页面爬取 1. 爬虫的原理 2. 用正则表达式匹配获取数据 3. 页面源码解析 4. 通过req ...
- python爬虫入门实战---------一周天气预报爬取_Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析...
Python爬虫入门实战--------一周天气预报爬取[转载][没有分析 Python爬虫入门实战--------一周天气预报爬取[转载][没有分析] 来源:https://blog.csdn.ne ...
- Python爬虫《自动化学报》数据爬取与数据分析
Python爬虫<自动化学报>数据爬取与数据分析 文章目录 Python爬虫<自动化学报>数据爬取与数据分析 前言 一.代码 二.结果展示 三.爬虫实现 1.准备 2.获取网页 ...
- Python 爬虫 之 Selenium 模拟打开操作浏览器爬取斗鱼全部视播相关信息,并json保存信息
Python 爬虫 之 Selenium 模拟打开操作浏览器爬取斗鱼全部视播相关信息,并json保存信息 基础: Python 爬虫 之 Selenium.webdriver 的安装,以及模拟打开操作 ...
- Python爬虫小白教程(二)—— 爬取豆瓣评分TOP250电影
文章目录 前言 安装bs4库 网站分析 获取页面 爬取页面 页面分析 其他页面 爬虫系列 前言 经过上篇博客Python爬虫小白教程(一)-- 静态网页抓取后我们已经知道如何抓取一个静态的页面了,现在 ...
- Python爬虫学习基础——5分钟学会爬取B站视频日播放量排行
Python爬虫学习基础--5分钟学会爬取B站视频日播放量排行 基础包含 requests pyquery 进入正题 基础包含 这也是我当初第一次学习爬虫时做的练习,感觉给初学者练笔挺不错的.运用的知 ...
- Python爬虫系列(二):爬取中国大学排名丁香园-用户名和回复内容淘宝品比价
Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品比价 目录 Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品 ...
- Python爬虫-CSDN博客排行榜数据爬取
文章目录 前言 网络爬虫 搜索引擎 爬虫应用 谨防违法 爬虫实战 网页分析 编写代码 运行效果 反爬技术 前言 开始接触 CTF 网络安全比赛发现不会写 Python 脚本的话简直寸步难行--故丢弃 ...
- Python爬虫实现百度贴吧文本爬取【每天近千万级数据量】
一.概述 我先澄清一下,我并不是单纯的为了爬数据而爬数据,这其实是为了之后的语音识别的语言模型训练积累数据的,所以我就实现了一个这样的爬虫,它可以不断的爬取各个指定贴吧的帖子文本内容,并把它存入Mon ...
最新文章
- Enterprise Library 2.0 技巧(3):记录ASP.NET站点中未处理的异常
- python旋转矩阵_python实现回旋矩阵方式(旋转矩阵)
- webservice linux 杀进程
- 几个OpenSource的源代码管理软件
- 徐磊(Devops):一名写了十几年代码但还没写够的程序员
- 世界上最奇特的国界线,万万没想到...
- cassandra 入门_Apache Cassandra和Java入门(第一部分)
- 曾有望成为第三大移动系统:如今正式告别,明日停止一切支持
- 流计算技术实战 - 超大维表问题
- building xxx gradle project info的解决办法
- [js]js设计模式-构造函数模式
- AST解析基础: 如何写一个简单的html语法分析库
- EXT2的文件系统装载之内核函数ext2_fill_super分析
- matlab gui stop,MATLAB GUI停止按钮问题
- Python+WebKit+HTML开发桌面应用程序
- 这几本豆瓣高分前端好书,值得一读!
- 拖拽插件jquery.dad.js
- VSCode下的51单片机开发环境搭建
- 大专计算机专业考英语师范研究生,我是计算机专业大专生,我想考人力资源管理研究生,现在已经工作一年多了,可以考吗,考的话难吗?...
- Java解析XML数据(三)——强大的XOM之simple-xml解析