1、利用正则表达式解析页面信息步骤
(1)导入re库
import re
(2)利用最常用的方法compile()和findall()结合获取数据
html = res.text
p=re.compile('<div class="movie-item-info">.*?<a href="/films/.*?title="(.*?)".*?<p class="star">\s+(.*?)\s+</p>.*?<p class="releasetime">(.*?)</p>',re.S)
result=re.findall(p,html)
注意观察compile()方法中的.?和(.?)
而(.?)就是我们要获取的信息,.?是省略掉的信息。
例如。
html="abcd<hello world>abcd" p=re.compile('ab.*?<(.*?)>') result=re.findall(p,html)
此时result中的 内容就是hello world。
需要注意的是result是列表信息,就是说我们可以保存多个数据(也就是说模板中可以有多个(.*?)),而且只要html中符合模板中空缺的数据,都会全部保存下来。
这个方法的基本思想是利用compile()构造出一个模板然后利用findall()将构造的模板去跟我们爬取的数据对比,找出我们需要的数据,也就是我们自己设置的模板中的(.*?)
3、补充:构建模板
1)找到你爬取的网页,点击f12,查看网页原码
2)找到你要爬取的信息在源码中的位置
3)把那部分源码复制下来,观察你所需要的 信息,合理利用.?以及(.?)即可获取到你自己想要的信息