一直以来都有看美剧的习惯,一方面练习英语听力,一方面打发时间。以前在视频网站上是可以在线观看的,但是自从广电总局的限购令之后,进口的美剧和英剧好像不再像以前那样同步更新了。不过,作为一个书呆子,追剧怎么可能不甘心呢,于是在网上搜索了一下,找到了一个可以用迅雷下载的美剧下载网站【天天美剧】。您可以随意下载各种资源。高清纪录片,大自然就是这么美。虽然找到了资源网站可以下载,但是每次都要打开浏览器,输入网址,找到美剧,点击链接下载。时间长了,感觉过程很繁琐,有时候网站链接打不开,会有点麻烦。一直在学习Python爬虫,所以今天心血来潮写了一个爬虫,抓取网站上所有的美剧链接,并保存在一个文本文件中。想要什么剧,直接打开迅雷的复制链接下载即可。其实一开始我是打算写那种发现一个url,用requests打开抓取下载链接,从首页抓取全站的。但是,有很多重复的链接,网站的url也没有我想的那么规整。写了半天,还是没有写出自己想要的那种发散爬虫。可能是我还没准备好,继续努力吧。..后来发现电视剧链接都在文章里面,而且文章的url后面有一个数字,像这样http://cn163.net/archives/24016/,于是就用了自己写的爬虫之前的经验,解决办法是自动生成url,后面的数字可以改,而且每部剧都是独一无二的,所以试试看看文章有多少,然后用range函数直接生成数字连续构造url。但是很多url是不存在的,所以会直接挂掉,不用担心,我们用的是requests,它自己的status_code是用来判断请求返回的状态的,所以只要返回的状态码是404,我们会跳过它,其他的都进去爬链接,这样就解决了url的问题。下面是上述步骤的实现代码。defget_urls(self):try:foriinrange(2015,25000):base_url='http://cn163.net/archives/'url=base_url+str(i)+'/'ifrequests.get(url).status_code==404:continueelse:self.save_links(url)exceptException,e:pass剩下的很顺利。在网上找了一个前辈写的类似的爬虫,但是只爬了一篇文章,所以借鉴了它的正则表达式。模式。我用的是BeautifulSoup,正则化效果不好,果断放弃,学无止境。但是效果并不是那么理想。大约一半的链接无法正确爬取,需要进一步优化。#-*-编码:utf-8-*-importrequestsimportreimportsysimportthreadingimporttimereload(sys)sys.setdefaultencoding('utf-8')classArchives(object):defsave_links(self,url):try:data=requests.get(url,timeout=3)content=data.textlink_pat='"(ed2k://\|file\|[^"]+?\.(S\d+)(E\d+)[^"]+?1024X\d{3}[^"]+?)"'name_pat=re.compile(r'
