我第一次接觸爬蟲(chóng)這東西是在今年的5月份,當(dāng)時(shí)寫(xiě)了一個(gè)博客搜索引擎,所用到的爬蟲(chóng)也挺智能的,起碼比電影來(lái)了這個(gè)站用到的爬蟲(chóng)水平高多了!
回到用Python寫(xiě)爬蟲(chóng)的話題。
Python一直是我主要使用的腳本語(yǔ)言,沒(méi)有之一。Python的語(yǔ)言簡(jiǎn)潔靈活,標(biāo)準(zhǔn)庫(kù)功能強(qiáng)大,平常可以用作計(jì)算器,文本編碼轉(zhuǎn)換,圖片處理,批量下載,批量處理文本等。總之我很喜歡,也越用越上手,這么好用的一個(gè)工具,一般人我不告訴他。。。
因?yàn)槠鋸?qiáng)大的字符串處理能力,以及urllib2,cookielib,re,threading這些模塊的存在,用Python來(lái)寫(xiě)爬蟲(chóng)就簡(jiǎn)直易于反掌了。簡(jiǎn)單到什么程度呢。我當(dāng)時(shí)跟某同學(xué)說(shuō),我寫(xiě)電影來(lái)了用到的幾個(gè)爬蟲(chóng)以及數(shù)據(jù)整理的一堆零零散散的腳本代碼行數(shù)總共不超過(guò)1000行,寫(xiě)電影來(lái)了這個(gè)網(wǎng)站也只有150來(lái)行代碼。因?yàn)榕老x(chóng)的代碼在另外一臺(tái)64位的黑蘋(píng)果上,所以就不列出來(lái),只列一下VPS上網(wǎng)站的代碼,tornadoweb框架寫(xiě)的
[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一下爬蟲(chóng)的編寫(xiě)流程。以下內(nèi)容僅供交流學(xué)習(xí)使用,沒(méi)有別的意思。
以某灣的最新視頻下載資源為例,其網(wǎng)址是
http://某piratebay.se/browse/200
因?yàn)樵摼W(wǎng)頁(yè)里有大量廣告,只貼一下正文部分內(nèi)容:
對(duì)于一個(gè)python爬蟲(chóng),下載這個(gè)頁(yè)面的源代碼,一行代碼足以。這里用到urllib2庫(kù)。
>>> import urllib2
>>> html = urllib2.urlopen('http://某piratebay.se/browse/200').read()
>>> print 'size is', len(html)
size is 52977
當(dāng)然,也可以用os模塊里的system函數(shù)調(diào)用wget命令來(lái)下載網(wǎng)頁(yè)內(nèi)容,對(duì)于掌握了wget或者curl工具的同學(xué)是很方便的。
使用Firebug觀察網(wǎng)頁(yè)結(jié)構(gòu),可以知道正文部分html是一個(gè)table。每一個(gè)資源就是一個(gè)tr標(biāo)簽。
而對(duì)于每一個(gè)資源,需要提取的信息有:
1、視頻分類(lèi)
2、資源名稱(chēng)
3、資源鏈接
4、資源大小
5、上傳時(shí)間
就這么多就夠了,如果有需要,還可以增加。
首先提取一段tr標(biāo)簽里的代碼來(lái)觀察一下。
<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="細(xì)節(jié) The Walking Dead Season 3 Episodes 1-3 HDTV-x264">The Walking Dead Season 3 Episodes 1-3 HDTV-x264</a>
|
新聞熱點(diǎn)
疑難解答
圖片精選