Python爬虫学习笔记(四)——猫眼电影Top100

介绍

今天打算做一个小项目,爬取猫眼电影top100

正文

URL分析
打开网址,发现Top100分为10页,每页10部电影,转到第二页分析URL
http://maoyan.com/board/4?offset=10
可以看到多了个offset参数,猜测是由offset来控制页面,于是转到第三页,发现offset变为20,猜测成立

正则表达式分析
接下来查看网页源码,可以发现所需要爬取的内容均在源码中,用requests库爬取html,然后正则表达式解析即可

我们所需要爬取的是电影名称、主演、上映时间、评分,据此写出正则表达式如下
regex = 'p class="name">.*?>(.*?)</a></p>.*?>(.*?)</p>.*?>(.*?)</p>.*?<i class="integer">(.*?)</i>.*?ion">(.*?)</i></p>'
通过程序测试,爬取结果无误

代码逻辑分析
根据功能模块不同,将程序分为主函数、爬取函数、解析html函数、输出函数四个部分
主函数用循环传入offset的值到爬取函数,并初始化文件,为了防止因为爬取太快而被检测出爬虫,可以暂停一段时间再进行下一次爬取

def main():
	open('data.csv', 'w')
	for i in range(10):
		parse_html(get_html(i*10))
		print('finish', i)
		time.sleep(0.5)
	print('finish!')

爬取函数根据offset爬取页面html然后传给解析函数,解析函数根据正则表达式解析出所需要的内容传给输出函数,文件输出则用了比较简单的csv文件

结果

部分结果贴图展示,代码和全部结果开源在github上了

总结

这次实践是比较简单的,没有复杂的js部分,单纯解析html就好。爬取结果单从现在角度看只能用来补剧,但是如果隔段时间爬取一次,也许可以做一个数据分析,到时候可以做个Top10电影以及评分变化折线图

原文地址:https://www.cnblogs.com/HackHarry/p/9583834.html