项目三:爬取视频磁力链接
来源:互联网 发布:zbtc 数字图像 算法 编辑:程序博客网 时间:2024/04/30 12:24
项目三:爬取视频磁力链接
标签(空格分隔): 爬虫 BeautifulSoup
—具体技术实现原理类似项目二
1. 项目任务分析
类似上一个小项目中爬取图片的技术原理,本次小项目尝试对相同网站上的可供下载视频的磁力链接进行爬取
2. 项目功能分析
2.1 爬取视频列表
网页上视频信息如上图所示,所以要先定义一个模块来获取如图所示的视频列表信息,查看网页源代码如下图所示
显然每一个视频名称保存在a.string
即标签的非属性字符串里,而视频所在链接保存在a.attrs['href']
里,那么可以很容易得到视频名称和视频所在链接的信息,将这些信息保存在一个字典里,共后续爬取使用
2.2 爬取视频磁力链
根据上一步得到的视频链接,跳转至相应页面的结果如下图所示
可以看到每个视频页面上有磁力链,所以可以查看源代码来找到磁力链的具体获取方式,查看源代码如下图所示
通过content = soup.find('div', attrs={'class':'content'})
语句来找到包含有磁力链接的标签,因为该磁力链接没有保存在某个字标签的非属性字符串里,也不是某个子标签的某种属性,所以之前的方法不适用。那么这里可以使用tempList = content.text.split('\n')
得到content
标签里面包含的所有字符串并保存在列表中,再利用正则表达式对符合一定规则的列表各个元素进行匹配,得到正确的磁力链
2.3 文件存取
在得到视频的名称与磁力链并保存在字典里之后,需要将字典内容保存在文本文件中,本次小项目就事先建立好一个文本文件,直接将字典里的内容写入该文件即可。这个模块中的重点是对字典的遍历
3. 完整代码
import requestsfrom bs4 import BeautifulSoupimport redef getHTMLText(url): try: r = requests.get(url) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return ""def getMagnetList(magnetURL, magnetsList): html = getHTMLText(magnetURL) soup = BeautifulSoup(html, 'html.parser') # 抽取包含磁力文件名称和链接的标签,保存在列表里 title = soup.find_all('a', attrs={'class':'title'}) for t in title: try: link = 'http://www.99rblc.com' + t.attrs['href'] magnetsList.append(link) except: continuedef getMagnetInfo(magnetsDict, magnetsList): for magnet in magnetsList: html = getHTMLText(magnet) try: if html == "": continue soup = BeautifulSoup(html, 'html.parser') # 磁力文件名称 title = soup.find('div', attrs={'class':'title'}) magnetName = title.text.split('\n')[1] print( "已爬到资源 : " + magnetName + '\n' ) print( "继续爬取该资源的磁力链..." + '\n' ) # 磁力链接内容 content = soup.find('div', attrs={'class':'content'}) tempList = content.text.split('\n') for item in tempList: if re.findall(r"^magnet[A-Za-z0-9:?= ]+$", item) == []: continue magnetContent = re.findall(r"^magnet[A-Za-z0-9:?= ]+$", item)[0] print( "爬到磁力链为 : " + magnetContent + '\n\n\n' ) magnetsDict[magnetName] = magnetContent except: continuedef saveMagnet(magnetsDict): path = 'D://MagnetInfo//magnet.txt' f = open(path, 'a') for key in magnetsDict: f.write( "电影名称 : " + key + '\n' ) f.write( "磁力链接 : " + magnetsDict[key] + '\n\n\n' ) f.close()def main(): depth = 5 for i in range(depth): print( "开始爬取第" + str(i+1) + "页" + '\n' ) magnetURL = 'http://www.99rblc.com/ozgq/38/' + str(i+1) + '.htm' magnetsList = [] magnetsDict = {} getMagnetList(magnetURL, magnetsList) getMagnetInfo(magnetsDict, magnetsList) saveMagnet(magnetsDict)main()
阅读全文
0 0
- 项目三:爬取视频磁力链接
- Go语言爬取网站磁力链接
- Python+scrapy+mysql实现爬取磁力链接
- java单线程爬虫使用Jsoup爬取bt磁力链接
- 磁力链接
- 磁力链接
- Python爬取磁力链信息
- 爬取视频链接的例子
- 磁力链接+爬虫
- BT种子2磁力链接
- 磁力链接搜索引擎源码下载
- 磁力链接 结构解析 分享
- 当路町-网络下载应用系列之三-认识磁力链接Magnet URL
- 磁力链接方式下载完全攻略
- 磁力链接搜索网站研究心得!
- python爬虫下载网站磁力链接
- Python 实现自动获取种子磁力链接
- scrapy爬取链接
- 如何清除Android 的原始标题栏?
- Android基础--adb使用
- jquery 中 $.map 的使用方法
- bfs
- 从内容/用户画像到如何做算法研发
- 项目三:爬取视频磁力链接
- ubuntu搭建git服务器
- 【dp+离散化+线段树优化】Paint
- JSON.parse()和JSON.stringify()
- java super 和this
- 基于GDI+计算机图形程序设计
- 关于图片的工具类
- TIM_CtrlPWMOutputs()函数功能介绍
- javascript 点击事件执行两次js问题