這個部落客要是發表些關於Windows Phone開發相關方面的文章的,和 http://blog.sina.com.cn/u/2391033251 同步更新。不過今天不務正業一下,發表一段python代碼。這個程式主要功能是從百度貼吧,獲得html檔案,然後用Beautiful Soup解析html檔案,提取貼吧的文章。幹什麼的?其實是來看小說的,想做的更自動化一些的,但是python開始學沒多長時間,暫時做到這個程度了,以後有機會會考慮增強功能的。
代碼如下:
#-*- encoding: utf-8 -*-
import urllib2
import re
from BeautifulSoup import BeautifulSoup
def stripHTMLTags (html):
'''strip html tags; from http://goo.gl/EaYp5'''
return re.sub('<([^!>]([^>]|\n)*)>', '', html)
def fetch_tieba(url,localfile,ignoreFansReq=False):
'''fetch the url resource and save to localfile'''
# fetch the url resource and encode to utf-8
html = urllib2.urlopen(url).read()
html = unicode(html,'gb2312','ignore').encode('utf-8','ignore')
# extract the main content
content = BeautifulSoup(html).findAll(attrs={'class':'d_post_content'})
# write the content to localfile
myfile = open(localfile,'w')
for item in content:
item_formatted = stripHTMLTags(str(item).replace('<br />','\r\n'))
if ignoreFansReq == True :
if len(item_formatted) < 100:
continue
myfile.write(item_formatted)
myfile.write('\r\n')
print item_formatted
myfile.close()
def main():
urlTarget = "http://tieba.baidu.com/p/1234371208"
localfileTarget = './xiaoshuo2.txt'
fetch_tieba(url=urlTarget,localfile=localfileTarget,ignoreFansReq=True)
if __name__ == "__main__":
main()
簡單說明:
1 本人使用的開發環境是 Windows 7 Ultimate 32bit + Python 2.7;依賴 Beautiful Soup (地址) ,使用版本是 BeautifulSoup-3.2.0;
2 fetch_tieba函數參數的含義:url,貼吧資源目標地址;localfile,儲存到本地檔案的路徑;ignoreFansReq,忽略插樓、求粉等灌水資訊(只是根據文字數判斷,很簡陋);
3 代碼具有時效性,如果百度貼吧的頁面DOM發生改變,程式可能失效。