Python学习笔记(八)爬虫基础(正则和编解码)

来源:互联网 发布:淘宝退款要多久 编辑:程序博客网 时间:2024/06/18 06:31

知识点


正则

正则匹配url,引用re库,将需要匹配的字段用(.*?)来匹配,可以匹配任何字符串。如果有换行,可以用如下方式解决:
1. ([\s\S]*?)
2. re.findall(reg,html,re.S)
re.S:’ . ‘并且包括换行符在内的任意字符(注意:’ . ‘不包括换行符)
其他re的主要函数:python正则表达式re常用方法

编解码

解码:将任意一种编码格式转换成unicode
编码:将unicode转换成其他编码格式

爬虫使用的是utf-8编码,有的网页是gbk或其他编码的。所以这类编解码的过程为:

gbk->unicode->utf-8

如果是utf-8转换成gbk,则:

uft-8->unicode->gbk

用代码来说为

#该html为gbk编码html = urllib.urlopen().read()#gbk转换成utf-8html4utf_8 = html.decode('gbk').encoding('utf-8')

为什么选用unicode坐中间转换的过程?
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。可以看做编解码的万能中转站。

代码


#encoding=utf-8import urllibimport resort_dict = {    1:'玄幻魔法',    2:'武侠修真',    3:'纯爱耽美',    4:'都市言情',    5:'职场校园',    6:'穿越重生',    7:'历史军事',    8:'网游动漫',    9:'恐怖灵异',    10:'科幻小说',    11:'美文名著'}def getNovel(url):    html = urllib.urlopen(url).read().decode('gbk').encode('utf-8')    #获取书名    reg = r'<meta property="og:novel:book_name" content="(.*?)"/>'    bookname=re.findall(reg,html)[0]    #获取描述    reg = r'<meta property="og:description" content="(.*?)"/>'    #或者re.findall(reg,html,re.S) 因为有换行符,正则不匹配了    #通过这种方式就可以匹配换行    description = re.findall(reg,html,re.S)[0]    print bookname,descriptiondef getList(sort_id,sort_name):    html = urllib.urlopen("http://www.quanshuwang.com/list/%s_1.html"%sort_id).read().decode('gbk').encode('utf-8')    reg = r'<a target="_blank" href="(.*?)" class="l mr10">'    urlList = re.findall(reg,html)    for url in urlList:        getNovel(url)        #break    #print urlListfor sort_id,sort_name in sort_dict.items():    getList(sort_id,sort_name)    break

效果


这里写图片描述

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 痔疮手术后肛门痒怎么办 便秘拉完屁股疼怎么办 屁股拉屎拉破了怎么办 6岁小朋友屁眼痒怎么办 孩子屁屁偶尔痒怎么办 1岁半宝宝屁眼痒怎么办 3岁宝宝肛门痒怎么办 得痔疮发烧了怎么办啊 痔疮手术后肚子胀气怎么办 乙肝引起的发烧头痛怎么办 肠癌手术后吃了会胃疼怎么办 来月经肛门坠痛怎么办 总想排便还有血怎么办 闻了别人的口臭怎么办 有内痔肛门经常不舒服怎么办 做完肠镜肛门疼怎么办 3周宝宝得皮彦怎么办 痔疮有蚕豆大了怎么办 顺生肛门坠胀怎么办 生孩子痔疮脱出不能回纳怎么办 痔疮犯了屁眼疼怎么办 孕晚期得痔疮了怎么办 孕39周痔疮严重怎么办 顺产后长痔疮了怎么办 怀孕了犯痔疮了怎么办 怀孕了痔疮犯了怎么办 痔疮手术后肛裂怎么办 痔疮引起的肛裂怎么办 痔疮手术后伤口不愈合怎么办 痔疮手术后伤口痒怎么办 肛瘘手术十五天后伤口疼怎么办 leep刀后hpv还是阳性怎么办 结肠息肉钳除后怎么办 痔疮手术后排便困难怎么办 住院未结账跑了怎么办 来月经痔疮犯了怎么办 安保压不下宫缩怎么办 肛周脓肿术后假性愈合怎么办 肛门的皱褶肿了怎么办 1月婴儿排便困难怎么办 吃完辣的痔疮肿了怎么办