600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Python学习笔记 第二部分 - 正则表达式 与 爬虫小实例(抓取豆瓣电影中评分大于

Python学习笔记 第二部分 - 正则表达式 与 爬虫小实例(抓取豆瓣电影中评分大于

时间:2021-12-22 16:59:22

相关推荐

Python学习笔记 第二部分 - 正则表达式 与 爬虫小实例(抓取豆瓣电影中评分大于

一、正则表达式

python正则常用的函数和方法

compile(pattern,flags=0) 对正则表达式pattern进行编译,flags是可选标识符,并返回一个regex对象

match(pattern,string,flags=0) 尝试用正则表达式模式pattern匹配字符串string,flags是可选标识符,如果匹配成功,则返回一个匹配对象;否则返回None

search(pattern,string[,flags]) 在字符串string中搜索正则表达式模式pattern的第一次出现,flags是可选标识符,如果匹配成功,则返回一个匹配对象;否则返回None

findall(pattern,string[,flags]) 在字符串string中搜索正则表达式模式pattern的所有(非重复)出现;返回一个匹配对象的列表

finditer(pattern,string[,flags]) 和findall()相同,但返回的不是列表而是迭代器;对于每个匹配,该迭代器返回一个匹配对象

split(pattern,string,max=0)根据正则表达式pattern中的分隔符把字符串string分隔为一个列表,返回成功匹配的列表,最多分隔max次(默认是分隔所有匹配的地方)

sub(pattern,repl,string,max=0) 把字符串string中所有匹配正则表达式pattern的地方替换成字符串repl,如果max的值没有给出,则对所有匹配的地方进行替换

group(num=0) 返回全部匹配对象(或指定编号是num的子组)

groups() 返回一个包含全部匹配的子组的元组(如果没有匹配成功,就返回一个空元组)

==================================================================================

import rem = re.match('foo','foo') #match 函数尝试从字符串开头开始对模式进行匹配if m is not None:m.group()# search() 在一个字符串中查找一个模式:search检查参数字符串任意位置的地方与正则表达式模式的匹配情况,与match(),不同m = re.search('foo','seafood') # 如果用match() 则会匹配失败,返回Noneif m is not None:m.group() #用search成功匹配

m = re.match('(\w\w\w)-(\d\d\d)','abc-123')m.group() #所有匹配部分#'abc-123'm.group(1)#'abc'm.group(2)#'123'

m.groups() #获得包含所有匹配子组的元组

#('abc','123')

re.findall('car','carry the barcardi to the car') #findall返回一个匹配列表['car', 'car', 'car']

re.sub('X','Mr.Smith','attn:X\n\nDear X,\n') # sub返回替换后的字符串# 'attn:Mr.Smith\n\nDear Mr.Smith,\n're.subn('X','Mr.Smith','attn:X\n\nDear X,\n')#subn返回替换后的字符串,和替换次数的一个元组#('attn:Mr.Smith\n\nDear Mr.Smith,\n', 2)

python小爬虫——我的第一个实例

#! /usr/bin/env python# coding=utf-8 ###到豆瓣电影列表抓去大于等于8分的电影##/tag/%E5%8A%A8%E4%BD%9C?start=0&type=Timport urllib2import reimport sys# 获取当前系统编码格式type = sys.getfilesystemencoding()j = 0for i in range(0, 5000, 20):url = '/tag/%E5%8A%A8%E4%BD%9C?'hash = 'start=%d&type=T' % iurl = url + hashprint(url)# 读取url内容content = urllib2.urlopen(url).read()# 转换编码content = content.decode("UTF-8").encode(type)# 读取电影名称match = re.findall(r'<div\s+class="pl2"><a.+?>(.+?)/\s*<span.+?<\/a>', content)# 读取分数match2 = re.findall(r'<span\s+class="rating_nums">([0-9.]+)<\/span>', content)# 压缩到一个列表zipc = zip(match, match2)# 打开文档f = open('douban.txt', 'a')# 写入文件for name in zipc:#大于8分的电影if float(name[1])>=8:f.write(name[0])f.write(name[1])f.write('\n')j = j + 1print name[0]print j print ('总共抓取电影数据'+ str(j) +'条').decode("UTF-8").encode(type)print 'done'f.close()

得到的结果大致如下:

飓风营救 8.1

蝙蝠侠:黑暗骑士崛起 8.4

碟中谍4 8.1

谍影重重 8.3

谍影重重3 8.6

蝙蝠侠:黑暗骑士 9.4

速度与激情5 8.8

黑客帝国 8.3

V字仇杀队 8.7

复仇者联盟 8.7

007:大战皇家赌场 8.0

变脸 8.3

生化危机5:惩罚 8.3

敢死队 8.9

007:大破量子危机 8.4

英雄本色 8.6

十月围城 8.1

通缉令 9.2

死亡飞车 8.4

黑客帝国3:矩阵革命 8.2

无间道 8.7

空中监狱 8.0

加勒比海盗 8.4

被解救的姜戈 8.5

阿凡达 8.7

让子弹飞 8.8

新龙门客栈 8.3

纵横四海 8.6

源代码 8.3

X战警:第一战 8.0

铁甲钢拳 8.1

变形金刚 8.0

搏击俱乐部 9.1

虎胆龙威 8.1

角斗士 8.2

Python学习笔记 第二部分 - 正则表达式 与 爬虫小实例(抓取豆瓣电影中评分大于等于8分的影片)...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。