一个爬取法律网站的爬虫

因为各种原因,需要建立一个法律大全的库,方便做匹配等。重新拿起了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

 

 

posted @ 2017-10-10 20:17  leerle  阅读(1215)  评论(0编辑  收藏  举报