逛到一個網站http://www.meiguoliyu.com/發現裏邊的內容挺不錯的,但是一頁就那麼一點內容,總共幾百頁,一頁一頁點過去瀏覽也太累了
用PYTHON寫了個程序把這幾百頁的內容都整合到一個文件裏去,只用了十幾行代碼,python果然夠簡潔的。
import urllib,urllib2,re
url = "http://www.meiguoliyu.com/html/meiguoliyu/2009/0307/liyudingyi.html"
f=open('HTTP_LIYU_DOWN.html','w+')
導入庫urllib,urllib2作爲基本的HTTP連接的庫,re庫爲正則表達式庫,整合數據時需要。
http://www.meiguoliyu.com/html/meiguoliyu/2009/0307/liyudingyi.html爲該網站內容的第一頁的地址。
將所有內容存在本地HTTP_LIYU_DOWN.html文件裏
以下就開始WHILE循環啦
while True:
print "getting url:",url
content = urllib.urlopen(url).read()
title = re.findall(r'<title>.*</title>',content)
title = re.sub('<title>|_美國俚語網</title>','',title[0])
print title
text = re.findall(r'<div class="content.*</div><!-- /content -->', content,re.DOTALL)[0]
hrep = re.findall(r'<li>下一篇:<a href.*</li>',content)[0]
url = re.findall(r'http://.*html',hrep)[0]
f.write(title)
f.write(text)
f.write('<br><br><br><br>')
f.close()
下面是具體的解釋:
直接urllib.urlopen(url).read()調用就可以讀取該地址網頁內容,並存在content裏
然後就是在數據裏搜尋目標數據了
看網頁代碼尋找規律,
標題部分
<title>什麼是俚語?俚語的定義是什麼?_美國俚語網</title>
正文部分
<div class="content">
<table width='100%'>
<tr><td><div style="float: left"><script src='/plus/ad_js.php?aid=3' language='javascript'></script></div><p> 俚語(Slang),是指民間非正式、較口語的語句,是百姓在日常生活中總結出來的通俗易懂順口的具有地方色彩的詞語。地域性強,較生活化。俚語是一種非正式的語言,通常用在非正式的場合。有時俚語用以表達新鮮事物,或對舊事物賦以新的說法。</p>
<p> 世界各地都存在俚語,中文裏也有很多俚語如:哇塞、不靠譜、純爺們兒、囧、雷等等。英文中也如此,例如見面問好的What’s up。</p>
<p> 本站主要介紹的是英文的俚語,主要包含美國俚語、英國俚語、加拿大俚語、澳大利亞俚語、新西蘭俚語等等。</p></td></tr>
</table>
</div><!-- /content -->
可以發現
標題位於<title>與</title>之間,
而正文位於 <div class="content"> 與 </div><!--/content --> 之間,
下一頁的連接地址位於 <li>下一篇:<a href.與</li>之間,且以http://.開頭,以html結尾。
用正則表達式搜尋這兩個特徵:
標題爲'<title>.*</title>'
正文爲'<div class="content.*</div><!-- /content -->'
鏈接地址爲'<li>下一篇:<a href.*</li>'
更新鏈接地址到URL後,就可以開始循環直到末頁爲止了
運行效果爲
-----------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------
可見所有正文部分都被集合在了一起,方便了許多