[xiaoxia@307232 movie_site]$ wc -l *.py template/* 156 msite.py 92 template/base.html 79 template/category.html 94 template/id.html 47 template/index.html 77 template/search.html下面直接show一下爬虫的编写流程。[b]以下内容仅供交流学习使用,没有别的意思。[/b] 以某湾的最新视频下载资源为例,其网址是 http://某piratebay.se/browse/200 因为该网页里有大量广告,只贴一下正文部分内容: [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100147_1_54220.jpg[/img] 对于一个python爬虫,下载这个页面的源代码,一行代码足以。这里用到urllib2库。
>>> import urllib2
>>> html = urllib2.urlopen('http://某piratebay.se/browse/200').read()
>>> print 'size is', len(html)
size is 52977
当然,也可以用os模块里的system函数调用wget命令来下载网页内容,对于掌握了wget或者curl工具的同学是很方便的。
使用Firebug观察网页结构,可以知道正文部分html是一个table。每一个资源就是一个tr标签。
[img]http://img.1sucai.cn/uploads/article/2018010710/20180107100148_2_53527.jpg[/img]
而对于每一个资源,需要提取的信息有:
1、视频分类
2、资源名称
3、资源链接
4、资源大小
5、上传时间
就这么多就够了,如果有需要,还可以增加。
首先提取一段tr标签里的代码来观察一下。
<tr> <td class="vertTh"> <center> <a href="/browse/200" title="此目录中更多">视频</a><br /> (<a href="/browse/205" title="此目录中更多">电视</a>) </center> </td> <td> <div class="detName"> <a href="/torrent/7782194/The_Walking_Dead_Season_3_Episodes_1-3_HDTV-x264" class="detLink" title="细节 The Walking Dead Season 3 Episodes 1-3 HDTV-x264">The Walking Dead Season 3 Episodes 1-3 HDTV-x264</a> </div> <a href="magnet:?xt=urn:btih:4f63d58e51c1a4a997c6f099b2b529bdbba72741&dn=The+Walking+Dead+Season+3+Episodes+1-3+HDTV-x264&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A6969&tr=udp%3A%2F%2Ftracker.ccc.de%3A80" title="Download this torrent using magnet"><img src="//static.某piratebay.se/img/icon-magnet.gif" alt="Magnet link" /></a> <a href="//torrents.某piratebay.se/7782194/The_Walking_Dead_Season_3_Episodes_1-3_HDTV-x264.7782194.TPB.torrent" title="下载种子"><img src="//static.某piratebay.se/img/dl.gif" class="dl" alt="下载" /></a><img src="//static.某piratebay.se/img/11x11p.png" /><img src="//static.某piratebay.se/img/11x11p.png" /> <font class="detDesc">已上传 <b>3 分钟前</b>, 大小 2 GiB, 上传者 <a class="detDesc" href="/user/paridha/" title="浏览 paridha">paridha</a></font> </td> <td align="right">0</td> <td align="right">0</td> </tr>下面用正则表达式来提取html代码中的内容。对正则表达式不了解的同学,可以去 http://docs.python.org/2/library/re.html 了解一下。 为何要用正则表达式而不用其他一些解析HTML或者DOM树的工具是有原因的。我之前试过用BeautifulSoup3来提取内容,后来发觉速度实在是慢死了啊,一秒钟能够处理100个内容,已经是我电脑的极限了。。。而换了正则表达式,编译后处理内容,速度上直接把它秒杀了! 提取这么多内容,我的正则表达式要如何写呢? 根据我以往的经验,[b]“.*?”或者“.+?”这个东西是很好使的。[/b]不过也要注意一些小问题,实际用到的时候就会知道 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100147_0_3422.gif[/img] 对于上面的tr标签代码,我首先需要让我的表达式匹配到的符号是 <tr> 表示内容的开始,当然也可以是别的,只要不要错过需要的内容即可。然后我要匹配的内容是下面这个,获取视频分类。 (<a href="/browse/205" title="此目录中更多">电视</a>) 接着我要匹配资源链接了, <a href="..." class="detLink" title="...">...</a> 再到其他资源信息, font class="detDesc">已上传 <b>3 分钟前</b>, 大小 2 GiB, 上传者 最后匹配 </tr> [b]大功告成![/b] 当然,最后的匹配可以不需要在正则表达式里表示出来,只要开始位置定位正确了,后面获取信息的位置也就正确了。 对正则表达式比较了解的朋友,可能知道怎么写了。我Show一下我写的表达式处理过程, [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100148_4_4630.jpg[/img] 就这么简单,结果出来了,自我感觉挺欢喜的。 [b]当然,这样设计的爬虫是有针对性的,定向爬取某一个站点的内容。[/b]也没有任何一个爬虫不会对收集到的链接进行筛选。通常可以使用BFS(宽度优先搜索算法)来爬取一个网站的所有页面链接。 完整的Python爬虫代码,爬取某湾最新的10页视频资源:
# coding: utf8 import urllib2 import re import pymongo db = pymongo.Connection().test url = 'http://某piratebay.se/browse/200/%d/3' find_re = re.compile(r'<tr>.+?(.+?">(.+?)</a>.+?class="detLink".+?">(.+?)</a>.+?<a href="(magnet:.+?)" .+?已上传 <b>(.+?)</b>, 大小 (.+?),', re.DOTALL) # 定向爬去10页最新的视频资源 for i in range(0, 10): u = url % (i) # 下载数据 html = urllib2.urlopen(u).read() # 找到资源信息 for x in find_re.findall(html): values = dict( category = x[0], name = x[1], magnet = x[2], time = x[3], size = x[4] ) # 保存到数据库 db.priate.save(values) print 'Done!'[b]以上代码仅供思路展示,实际运行使用到mongodb数据库,同时可能因为无法访问某湾网站而无法得到正常结果。[/b] 所以说,电影来了网站用到的爬虫不难写,难的是获得数据后如何整理获取有用信息。例如,如何匹配一个影片信息跟一个资源,如何在影片信息库和视频链接之间建立关联,这些都需要不断尝试各种方法,最后选出比较靠谱的。 曾有某同学发邮件想花钱也要得到我的爬虫的源代码。 要是我真的给了,我的爬虫就几百来行代码,一张A4纸,他不会说,坑爹啊!!!…… 都说现在是信息爆炸的时代,所以比的还是谁的数据挖掘能力强 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100149_5_82695.gif[/img] 好吧,那么问题来了学习挖掘机(数据)技术到底哪家强?[img]http://img.1sucai.cn/uploads/article/2018010710/20180107100149_5_82695.gif[/img] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100149_5_82695.gif[/img] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100149_5_82695.gif[/img]
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有