zoukankan      html  css  js  c++  java
  • 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电影以及评分变化折线图

  • 相关阅读:
    1.17 Python基础知识
    反射
    面向对象——类
    异常处理
    面向对象——静态方法、类方法、属性法法,其他特殊方法
    面向对象——继承
    question
    configparser模块
    hashlib模块
    shelve模块
  • 原文地址:https://www.cnblogs.com/HackHarry/p/9583834.html
Copyright © 2011-2022 走看看