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