python3爬取torrent种子链接实例


Posted in Python onJanuary 16, 2020

本文环境是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("<html>")
  fout.write("<head><meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\"></head>")
  fout.write("<body>")
  fout.write("<table border = 1>")

  for data in datas:
    fout.write("<tr>")
    fout.write("<td>%s</td>" % data['title'])
    fout.write("<td>%s</td>" % data['cl'])
    fout.write("<td>%s</td>" % data['xl'])
    fout.write("</tr>")

  fout.write("</table>")
  fout.write("</body>")
  fout.write("</html>")
  fout.close()

python3爬取torrent种子链接实例

项目就结束了。源代码已上传,链接https://github.com/Ahuanghaifeng/python3-torrent,觉得有用请在github上给个star,您的鼓励将是作者创作的动力。

以上这篇python3爬取torrent种子链接实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
讲解Python中的递归函数
Apr 27 Python
Python递归函数定义与用法示例
Jun 02 Python
python中子类调用父类函数的方法示例
Aug 18 Python
python获取当前目录路径和上级路径的实例
Apr 26 Python
Python微信操控itchat的方法
May 31 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
logging level级别介绍
Feb 21 Python
Python解释器及PyCharm工具安装过程
Feb 26 Python
python tkinter之 复选、文本、下拉的实现
Mar 04 Python
浅谈TensorFlow中读取图像数据的三种方式
Jun 30 Python
Python数据库封装实现代码示例解析
Sep 05 Python
matplotlib绘制正余弦曲线图的实现
Feb 22 Python
Python 实现自动获取种子磁力链接方式
Jan 16 #Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 #Python
Python简单实现区域生长方式
Jan 16 #Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 #Python
Pycharm中Python环境配置常见问题解析
Jan 16 #Python
Python Numpy库常见用法入门教程
Jan 16 #Python
Python使用Pandas库常见操作详解
Jan 16 #Python
You might like
Admin generator, filters and I18n
2011/10/06 PHP
探讨php中header的用法详解
2013/06/07 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
vue自定义指令directive实例详解
2018/01/17 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
Python爬虫实现百度图片自动下载
2018/02/04 Python
python修改txt文件中的某一项方法
2018/12/29 Python
python爬虫实现获取下一页代码
2020/03/13 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
高中毕业生自我鉴定
2013/11/03 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
建议书怎么写
2014/03/12 职场文书
投资合作意向书范本
2015/05/08 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python