这是第一篇博客,关于在正则表达式的情况下通过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的格式,写入本地的另一个文件之中
这就是最近的大概感想吧,谢谢收看