一個爬取法律網站的爬蟲
阿新 • • 發佈:2017-10-10
重連 light str 避免 log nic urllib python 文件的
因為各種原因,需要建立一個法律大全的庫,方便做匹配等。重新拿起了python,發現忘的差不多了。
網上找了一下,這是一個大佬做的一個最簡單的爬蟲,http://www.cnblogs.com/fnng/p/3576154.html,爬取圖片的。
於是,學習了之後,自己做了一個爬蟲,由於這個是基於2.7版本的,只用了urllib的庫,中文的問題啊,真是煩人。所幸經過兩天大量的百度,解決了這些亂七八糟的問題。走過的彎路如下,警醒自己。
一.字符串常用操作.
#list轉換成字符串 list = "".join(list) #字符串去除左邊空格 str = str.lstrip() #同理,右邊空格rstrip,空格strip #去除對應字符 str = str.slip("不要我了")
二.中文問題與編碼格式問題
由來已久,python2.7最大的問題。
1.string的問題
string在python2.7中默認為ascii的格式,可以通過導入sys來轉換成utf-8
#在前面插入這三行代碼 import sys reload(sys) sys.setdefaultencoding(‘utf8‘)
2.在鏈接或者其他匹配的東西中,請在前面加上u,或者在後面加上.encode("xxx").統一轉換成unicode格式,進行操作,不然會出現很多奇奇怪怪的錯誤
#字符串轉換成unicode str = u"我要被轉換了"
#變量被轉換
str = str.decode("utf-8")#這裏可能會是其他的編碼格式,不一定是utf-8,看情況
3.中文文件路徑
盡量避免使用中文路徑,如果一定要用,只能將路徑中的內容全部轉換成unicode格式的。
#例如這是我的程序中一段代碼,_save是要保存文件的本地路徑 _save = mulu + r"/" + title + u"(" + time + u").txt"
三.網站網速慢怎麽辦。
運氣不好,爬的網站速度慢成狗,同學爬幾十萬條的數據都爬完了,我的還是龜速前進。每個頁面都要嘗試訪問好幾次才能進。
設置超時時間和重新連接。
#設置重連次數計數器 fails = 0 #urllib不能再openurl方法裏設置超時時間,只能設置全局的。 #這裏設置為5秒 socket.setdefaulttimeout(5) while True: try: if fails >= 20: break #這裏是訪問的方法 except: fails += 1 print "超時了,重新接入" else: break
一個爬取法律網站的爬蟲