Python网络爬虫中的网页中文正则表达式匹配小心得

这是第一篇博客,关于在正则表达式的情况下通过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的格式,写入本地的另一个文件之中

这就是最近的大概感想吧,谢谢收看

你可能感兴趣的:(python爬虫,正则表达式,unicode,utf-8)