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 Noneheaders = {'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 Nonereturn response.read()
headers是模仿浏览器的请求头。不然下载不到html文件。
解析器代码如下:
# 解析种子文件
def parserTwo(self,html):if html is None:returnsoup = 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:returnself.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()
非常感谢你的阅读
大学的时候选择了自学python,工作了发现吃了计算机基础不好的亏,学历不行这是没办法的事,只能后天弥补,于是在编码之外开启了自己的逆袭之路,不断的学习python核心知识,深入的研习计算机基础知识,整理好了,我放在我们的Python学习扣qun:774711191,如果你也不甘平庸,那就与我一起在编码之外,不断成长吧!
其实这里不仅有技术,更有那些技术之外的东西,比如,如何做一个精致的程序员,而不是“屌丝”,程序员本身就是高贵的一种存在啊,难道不是吗?[点击加入]想做你自己想成为高尚人,加油!
@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府
python3爬取torrent种子链接实例相关推荐
- python3爬取视频代码_Python爬虫视频以及使用python3爬取的实例
链接: https://pan.baidu.com/s/18iRD2I9t4xHxiSqoe-hFHg 密码: afaf 使用Python3爬取小说,代码看起来有点乱,下面有截图 import req ...
- Python2 Python3 爬取赶集网租房信息,带源码分析
*之前偶然看了某个腾讯公开课的视频,写的爬取赶集网的租房信息,这几天突然想起来,于是自己分析了一下赶集网的信息,然后自己写了一遍,写完又用用Python3重写了一遍.之中也遇见了少许的坑.记一下.算是 ...
- python实战-HTML形式爬虫-批量爬取电影下载链接
文章目录 一.前言 二.思路 1.网站返回内容 2.url分页结构 3.子页面访问形式 4.多种下载链接判断 三.具体代码的实现 四.总结 一.前言 喜欢看片的小伙伴,肯定想打造属于自己的私人影院 ...
- python3爬取巨潮资讯网站年报数据
python3爬取巨潮资讯网站年报数据 2018年年底巨潮资讯http://www.cninfo.com.cn改版了,之前实习生从网上找的脚本不能用了,因此重新修改了下爬取脚本.最初脚本的原链接忘了, ...
- Python3 爬取豆瓣电影信息
原文链接: Python3 爬取豆瓣电影信息 上一篇: python3 爬取电影信息 下一篇: neo4j 查询 豆瓣api https://developers.douban.com/wiki/?t ...
- python3爬取数据_python3爬取巨潮资讯网站年报数据
python3爬取巨潮资讯网站年报数据 2018年年底巨潮资讯http://www.cninfo.com.cn改版了,之前实习生从网上找的脚本不能用了,因此重新修改了下爬取脚本.最初脚本的原链接忘了, ...
- 用python3爬取百度首页
用python3读取百度首页 代码 爬取百度首页 import urllib.request import urlliburl="http://www.baidu.com/" ht ...
- Selenium+Python3爬取微博我发出的评论信息
Selenium+Python3爬取微博我发出的评论信息 需求 代码 注: 需求 记录对话信息:对话文本.时间.用户.被回复链接.被回复用户.被回复文本. 将数据信息持久化保存,可选择截图. 代码 # ...
- [python爬虫] 正则表达式使用技巧及爬取个人博客实例
这篇博客是自己<数据挖掘与分析>课程讲到正则表达式爬虫的相关内容,主要简单介绍Python正则表达式爬虫,同时讲述常见的正则表达式分析方法,最后通过实例爬取作者的个人博客网站.希望这篇基础 ...
- python3爬取博客浏览量
爬取结果 代码很简单: # encoding=utf8 import requests import re import time from bs4 import BeautifulSoupfirst ...
最新文章
- mysql存储netcdf数据_关于NetCDF与HDF5存储科学数据的观点?
- get/post 接口调用
- 这些焊接不良,你遇见过吗?
- php读取西门子plc_PLC对模拟量信号,是怎么进行处理的?
- Chapter1-4_Speech_Recognition(HMM)
- Java面试知识点:网络编程
- (lucas) Saving Beans
- java中的祖先类_Java程序公共祖先类-Object
- NAT对数据业务的影响
- c++string类寻找子串
- JavaScript知识梳理总结
- 首旅如家新生活方式空间品牌--如咖啡正式落地
- mongodb删除某个字段
- xdg在Linux中的用法,linux-如何使用sudo获取XDG变量?
- 计算机演示文稿操作,计算机操作与应用 PowerPoint 演示文稿的设计与制作.ppt
- python numpy读取数据_numpy中以文本的方式存储以及读取数据方法
- 如何快速定位BUG?BUG定位技巧及测试人员定位的N板斧
- python导入siri_python利用不到一百行代码实现一个小siri
- PMP项目管理五大过程组
- ARCGIS对谷歌影像进行投影转换、影像拉伸纠偏处理及倾斜摄影纠偏
热门文章
- 《惢客创业日记》2020.08.01(周六)七月份的工作总结
- 【盘点】2017美国人工智能专业最好的20所大学(附地理位置)Ⅱ
- curl的HTTP参数速查表
- python将两列内容合并_在pandas/python中,将两列合并为同一数据帧中的一列
- 新颖的自我介绍_三句有创意的自我介绍
- Ubuntu 重置密码
- 882. Reachable Nodes In Subdivided Graph
- 一个老乞丐一句话震惊中国人...............
- 谁是最可爱的人,如今又在哪……
- WPS设置奇偶页页眉不同