re.findall

比如下面一段html想提取出图片路径与影片名称,主演,上映时间通过一行正则表达式怎么提取.

1 霸王别姬

霸王别姬

主演:张国荣,张丰毅,巩俐

上映时间:1993-01-01

9.5

2 肖申克的救赎

肖申克的救赎

主演:蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿

上映时间:1994-09-10(加拿大)

9.5

提取图片路径,

.*? src="(.*?)".*?

re模块默认的是贪婪模式,适当的加上?可以防止过多的匹配.
提取图片路径与影片名称

.*? src="(.*?)".*?boarditem-click.*?>(.*?).*?

我匹配影片名称是通过

霸王别姬

这一行来匹配的.
因为p标签很多,为了能定位到这一行,加上了boarditem-click.*?>,这样就能找到离boarditem-click最近的>然后就能匹配到名称了.
主演与上映时间同理可得

.*?(.*?).*?"star".*?>(.*?)

.*?releasetime.*?>(.*?)

.*?

最后程序

import re
test_str = '''
1 霸王别姬

霸王别姬

主演:张国荣,张丰毅,巩俐

上映时间:1993-01-01

9.5

2 肖申克的救赎

肖申克的救赎

主演:蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿

上映时间:1994-09-10(加拿大)

9.5

''' result = re.findall('
.*?(.*?).*?"star".*?>(.*?)

.*?releasetime.*?>(.*?)

.*?
',test_str,re.S) for item in result: print('图片路径:{}'.format(item[0])) print('影片名称:{}'.format(item[1])) print('主演:{}'.format(re.sub('\s|主演:','',item[2]))) print('上映时间:{}'.format(item[3].replace('上映时间:',''))) print('\n')

结果

图片路径://s3plus.meituan.net/v1/mss_e2821d7f0cfe4ac1bf9202ecf9590e67/cdn-prod/file:5788b470/image/loading_2.e3d934bf.png
影片名称:霸王别姬
主演:张国荣,张丰毅,巩俐
上映时间:1993-01-01


图片路径://s3plus.meituan.net/v1/mss_e2821d7f0cfe4ac1bf9202ecf9590e67/cdn-prod/file:5788b470/image/loading_2.e3d934bf.png
影片名称:肖申克的救赎
主演:蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿
上映时间:1994-09-10(加拿大)

你可能感兴趣的:(re.findall)