Python網路爬蟲中的網頁中文正則表示式匹配小心得
阿新 • • 發佈:2018-12-31
這是第一篇部落格,關於在正則表示式的情況下通過python的re模組對爬蟲爬下的網頁資料進行正則表示式,匹配得出所有中文字元
#!/usr/bin/python # -*- coding: utf-8 -*- import re def matchURL_info(): # 對儲存在data_based的資料進行篩選 try: qp = open('data_base.txt', 'rb') # 開啟data_base.txt進行匹配 except: print 'open data_base failed' return 0 wp = open('result_final.txt', 'wb') ep = open('result_final_1.txt', 'wb') # 測試新的正則表示式 # 預編譯敏感詞的正則表示式 u"([\u4e00-\u9fa5]+)" pattern = re.compile(u'[\u4e00-\u9fa5]+') pattern_1 = re.compile(u'[\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff]+') while 1: s = qp.read() if not s: break temp = s.decode('utf8') result_info = pattern.findall(temp) result_info_1 = pattern_1.findall(temp) for r in result_info: r_1 = r.encode('utf8') wp.write('%s\r\n' % r_1) # 往op中寫入新檔案 print r_1 for i in result_info_1: i_1 = i.encode('utf8') ep.write('%s\r\n' % i_1) # 往ep中寫入新的資料 print i_1 print 'i have been here' qp.close() wp.close() ep.close() return 1 if __name__ = "__main__": matchURL_info()
本人通過在爬蟲在本地生成一個data_base.txt文件,儲存爬蟲爬下的所有網頁資料
然後通過這段程式碼開啟這個檔案
pattern與pattern_1是我為了測試不同正則表示式所設定的
大家使用時候可以去除其中一個
在測試時曾遇到過各種錯誤
包括NameError: global name 'decode' is not defined等錯誤,python文字中的格式是utf-8,而網頁中的是unicode
所有第一步一定要將data_base.txt中的文字以二進位制的形式讀出
然後通過decode('utf8')將檔案解碼成unicode,此時開始正則表示式
匹配完之後通過encode('utf8')將資料編碼成為utf-8的格式,寫入本地的另一個檔案之中
這就是最近的大概感想吧,謝謝收看