1. 程式人生 > >一個爬取法律網站的爬蟲

一個爬取法律網站的爬蟲

重連 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

一個爬取法律網站的爬蟲