D'après les commentaires de l'article précédent, il semble que de nombreuses chaussures pour enfants accordent plus d'attention au code source des robots. Tout cet article contient un enregistrement très détaillé de l'utilisation de Python pour écrire un simple robot d'exploration Web permettant de capturer des ressources de téléchargement de vidéos. Presque chaque étape est présentée à tout le monde. J'espère que cela pourra être utile à tout le monde
C'est ma première fois. entrer en contact avec des robots d'exploration. C'est en mai de cette année que j'ai écrit un moteur de recherche de blog. Le robot d'exploration utilisé était assez intelligent, du moins beaucoup plus élevé que celui utilisé par le site Here Comes the Movie !
Retour au sujet de l'écriture de robots d'exploration en Python.
Python a toujours été mon principal langage de script, sans exception. Le langage de Python est simple et flexible, et sa bibliothèque standard est puissante. Il peut être utilisé comme calculatrice, conversion d'encodage de texte, traitement d'images, téléchargement par lots, traitement de texte par lots, etc. En bref, je l’aime beaucoup, et plus je l’utilise, mieux je m’en sors. Je ne parle pas à la plupart des gens d’un outil aussi utile. . .
En raison de ses puissantes capacités de traitement de chaînes et de l'existence de modules tels que urllib2, cookielib, re et threading, il est facile d'écrire des robots d'exploration en Python. À quel point cela peut-il être simple ? À l'époque, j'ai dit à un camarade de classe que le nombre total de lignes de code de script pour les différents robots d'exploration et scripts dispersés que j'avais utilisés pour compiler le film Here Comes ne dépassait pas 1 000, et que le site Web Here Comes, un film, n'en contenait qu'environ 1 000. 150 lignes de code. Parce que le code du robot est sur une autre Black Apple 64 bits, je ne le listerai pas, je ne listerai que le code du site Web sur le VPS. Le framework tornadoweb l'a écrit
[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
Le contenu suivant est uniquement destiné à des fins de communication et d'apprentissage et n'a aucune autre signification.
Prenons comme exemple la dernière ressource de téléchargement vidéo d'une certaine baie, son URL est http://piratebay.se/browse/200Parce que cette page web Il y a beaucoup de publicités, je ne posterai donc que le contenu principal : Pour un robot python, téléchargez le code source de cette page, une ligne de le code suffit. La bibliothèque urllib2 est utilisée ici.>>> import urllib2 >>> html = urllib2.urlopen('http://某piratebay.se/browse/200').read() >>> print 'size is', len(html) size is 52977
Nom de la ressource
3. Lien de ressource
4. Taille de la ressource
5. Temps de téléchargement
<tr> <td class="vertTh"> <center> <a href="/browse/200" title="此目录中更多">视频</a><br /> (<a href="/browse/205" title="此目录中更多">电视</a>) </center> </td> <td> <p 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> </p> <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" / alt="Écrivez un simple robot d'exploration Web en Python pour capturer des vidéos" ><img src="//static.某piratebay.se/img/11x11p.png" / alt="Écrivez un simple robot d'exploration Web en Python pour capturer des vidéos" > <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>
« .* ? » ou « .+ ? » est très utile. Cependant, nous devons également prêter attention à quelques petits problèmes. Vous saurez quand vous l'utiliserez réellement
Pour le code de la balise tr ci-dessus, je dois d'abord faire correspondre mon expression au symbole.tr>
Fait !
Bien sûr, la correspondance finale n'a pas besoin d'être exprimée dans l'expression régulière. Tant que la position de départ est correcte, la position où les informations sont obtenues ultérieurement sera également correcte. Les amis qui connaissent les expressions régulières savent peut-être comment les écrire. Laissez-moi vous montrer le processus de traitement d'expression que j'ai écrit,就这么简单,结果出来了,自我感觉挺欢喜的。
当然,这样设计的爬虫是有针对性的,定向爬取某一个站点的内容。也没有任何一个爬虫不会对收集到的链接进行筛选。通常可以使用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!'
以上代码仅供思路展示,实际运行使用到mongodb数据库,同时可能因为无法访问某湾网站而无法得到正常结果。
所以说,电影来了网站用到的爬虫不难写,难的是获得数据后如何整理获取有用信息。例如,如何匹配一个影片信息跟一个资源,如何在影片信息库和视频链接之间建立关联,这些都需要不断尝试各种方法,最后选出比较靠谱的。
曾有某同学发邮件想花钱也要得到我的爬虫的源代码。
要是我真的给了,我的爬虫就几百来行代码,一张A4纸,他不会说,坑爹啊!!!……
都说现在是信息爆炸的时代,所以比的还是谁的数据挖掘能力强
好吧,那么问题来了学习挖掘机(数据)技术到底哪家强?
相关推荐:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!