Python 爬虫批量下载美剧 from 人人影视 HR-HDTV
本人比較喜欢看美剧。尤其喜欢人人影视上HR-HDTV 的 1024 分辨率的高清双字美剧,这里写了一个脚本来批量获得指定美剧的全部 HR-HDTV 的 ed2k下载链接。并依照先后顺序写入到文本文件,供下载工具进行批量下载。比方用迅雷。先打开迅雷,然后复制全部下载链接到剪切板,迅雷会监视剪切板来新建全部任务。假设迅雷没有自己主动监视,能够自己点击新建然后粘贴链接。Python源码例如以下。用的是Python3
:
# python3 实现,以下的实例 3 部美剧爬完大概要 10 s
import urllib.request
import re def get_links(url, name='yyets'):
data = urllib.request.urlopen(url).read().decode()
pattern = '"(ed2k://\|file\|[^"]+?\.(S\d+)(E\d+)[^"]+? 1024X\d{3}[^"]+?)"'
linksfind = set(re.findall(pattern, data))
linksdict = {}
total = len(linksfind)
for i in linksfind:
linksdict[int(i[1][1:3]) * 100 + int(i[2][1:3])] = i
with open(name + '.txt', 'w') as f:
for i in sorted(list(linksdict.keys())):
f.write(linksdict[i][0] + '\n')
print(linksdict[i][0])
print("Get download links of: ", name, str(total)) if __name__ == '__main__':
#---------- 越狱、无耻之徒、权力的游戏---------------------------
get_links('http://www.yyets.com/resource/10004', 'prision_break')
get_links('http://www.yyets.com/resource/10760', 'shameless')
get_links('http://www.yyets.com/resource/d10733','Game_of_Thrones')
print('All is okay!')
这个 python 爬虫比較短,就用到了 urllib.request 和 re 这两个模块,前者负责抓取网页,后者负责解析文本。
人人影视并没有限制爬虫訪问。所以这里无需改动 HTTP head的 User-Agent ,对于某些屏蔽爬虫的网页,就须要改动下 User-Agent 这个值了。一个做法例如以下:用 urllib.request 中 Request 类的构造函数构造一个 Request 对象,构造函数中给自己给
headers (字典)中 User-Agent 属性 赋值,然后将这个对象传入到本模块的 urlopen() 中。就能够将爬虫伪装成一个浏览器进行网页抓取了。比方。CSDN 就是屏蔽了爬虫的。须要改动一下 User-Agent 的值,例如以下:
import urllib.request url = 'http://blog.csdn.net/csdn'
head={'User-Agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)'}
req = urllib.request.Request(url, headers=head)
data = urllib.request.urlopen(req, timeout=2).read().decode()
print(data)
抓取完网页就是对 HTML 文档的解析了。这里使用的是正則表達式模块,对于特定单一的内容很方便。假设须要较复杂的解析能够用 pyquery 或者 Beautiful Soup, 它们是用Python写的 HTML/XML 的解析器。当中 pyquery 是 jquery 风格,更加的好用。
关于正則表達式这里推荐一个工具 RegexBuddy ,拥有强大的正則表達式调试功能,上面脚本中的正則表達式就使用了这个工具进行调试。这篇关于Python正则的博文非常不错: Python 正則表達式指南。
想进一步加强爬虫的功能,能够用爬虫框架 Scrapy,这是 Scrapy 的官方tutoria 。还有就是,假设网页内容多是 javascript 生成。那么就须要一个 js 引擎了,PyV8 能够拿来试试,再有就是基于 js 做爬虫。如用 casperJS
和 phantomJS.
【地址:http://blog.csdn.net/thisinnocence/article/details/39997883】
Python 爬虫批量下载美剧 from 人人影视 HR-HDTV的更多相关文章
- Node.js 爬虫批量下载美剧 from 人人影视 HR-HDTV
这两天发现了一个叫看知乎的站点.是知乎的苏莉安做的,当中爬虫使用的 Node.js.这里就针对上一篇博客中的美剧小爬虫,改用 nodejs 进行实现一下.体验一下强大的 Node.js. 假设之前没实 ...
- Python爬虫爬取美剧网站
一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间.之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了.但是,作为一个宅diao ...
- Python爬虫批量下载糗事百科段子,怀念的天王盖地虎,小鸡炖蘑菇...
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...
- python爬虫之下载文件的方式总结以及程序实例
python爬虫之下载文件的方式以及下载实例 目录 第一种方法:urlretrieve方法下载 第二种方法:request download 第三种方法:视频文件.大型文件下载 实战演示 第一种方法: ...
- python爬虫脚本下载YouTube视频
python爬虫脚本下载YouTube视频 爬虫 python YouTube视频 工作环境: python 2.7.13 pip lxml, 安装 pip install lxml,主要用xpath ...
- python图片爬虫 - 批量下载unsplash图片
前言 unslpash绝对是找图的绝佳场所, 但是进网站等待图片加载真的令人捉急, 仿佛是一场拼RP的战争 然后就开始思考用爬虫帮我批量下载, 等下载完再挑选, 操作了一下不算很麻烦, 顺便也给大家提 ...
- python多线程批量下载远程图片
python多线程使用场景:多线程采集, 以及性能测试等 . 数据库驱动类-简单封装下 mysqlDriver.py #!/usr/bin/python3 #-*- coding: utf-8 -*- ...
- Python/Django 批量下载Excel
一.前提 项目上需求的变更总是时时发生的,应对需求的我们,也只能变更我们代码,所以.继前两篇之后,我们的批量下载诞生了 二.安装 本文使用zipstream库进行压缩,安装方式:pip install ...
随机推荐
- for循环中的break与continue
break: 跳出循环,执行for循环下面的语句.continue: 跳出本次循环,执行下次循环.
- Python学习手冊笔记
之前为了编写一个svm分词的程序而简单学了下Python.认为Python非常好用.想深入并系统学习一下,了解一些机制,因此開始阅读<Python学习手冊(第三版)>. 假设仅仅是想高速入 ...
- vim设置文本宽度
'textwidth' 'tw' number (default 0) local to buffer ...
- kindle paperwhite3 连不上WIFI解决方法
确定能连接上其它的设备比如手机.如果是密码没错,路由器也正常,但是你还是连接不上,那就跟我之前遇到一样了.你先让你的kpw连接一次,不要动,再检查下你路由器连接的客户端列表(我的是在DHCP服务器一栏 ...
- 苹果开发小记(一):NSString 的比较用法
转自:http://blog.sina.com.cn/s/blog_897dd7be0100teh6.html 做了几个月的苹果,很多的思想方法都可以遵循一定规律来做的.NSString 比较字符串, ...
- MSVC與CRT的恩怨情仇
很久沒有寫程式設計入門知識的相關文章了,這篇文章要來談談程式庫 (Library) 連結,以及關於 MSVC 與 CRT 之間的種種恩怨情仇. 如果你使用的作業系統是 Linux.Mac 或其他非 W ...
- LeetCode: Populating Next Right Pointers in Each Node 解题报告
Populating Next Right Pointers in Each Node TotalGiven a binary tree struct TreeLinkNode { Tree ...
- c++之—— lambda表达式(有个未能解决的问题等待大佬解答)——(在stack overflow找到了答案)
谓词: 谓词是一个可调用的表达式,其返回结果是一个能用作条件的值.标准库算法所使用的谓词分为两类:一元谓词,意味着它只接受单一参数:二元谓词,意味着它有两个参数.接受谓词参数的算法对输入序列中的元素调 ...
- 【Visual Studio】控制台程序运行时一闪而过
问题:写一个C#控制台程序,运行时控制台一闪而过.程序结束.无法看清控制台输出的结果. 办法: 方法一二三都有人写过百度经验了:怎么解决VS运行程序一闪而过 其实还有一种办法,就是把控制台程序改为Wi ...
- valgrind: failed to start tool 'memcheck' for platform 'amd64-linux
valgrind运行错误 问题描述 valgrind运行时,无法找到相关工具文件,具体报错如下 valgrind: failed to start tool 'memcheck' for platfo ...