天天看点

Python爬取豆瓣+数据可视化

前段时间应我姐邀请,看了一下Python爬虫。不得不说Python的语法确实简洁优美,可读性强,比较接近自然语言,非常适合编程的初学者上手。

在开始之前还是先介绍下什么是爬虫:

网络爬虫(英语:web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。 -- 维基百科

爬虫是一种程序或者脚本,用来替代人工浏览网页并从中提取信息,通常将提取的信息存储然后对其进行分析,从而获取有价值的信息。

爬虫也不是什么新鲜事物,可以说只要是编程语言几乎都能做到,而Python因为其简洁的语法和丰富的第三方库可以快速高效的编写爬虫,对于初学者可以说相当友好。接下来以爬取豆瓣电影TOP250页面为例说明如何用Python实现爬虫和数据可视化。

一、HTTP请求

导入第三方库​​requests​​,调用requests.get()方法向​​豆瓣电影TOP250​​页面发起GET请求,拿到响应的HTML。

二、数据提取

浏览器访问​​豆瓣电影TOP250​​页面并进入开发者模式复制要抓取节点的XPath。导入第三方库​​lxml​​的etree对象,调用etree.HTML(HTML)将HTML转换成element对象,然后使用element.xpath(XPath)方法拿到抓取的节点的文本(PS:也可以使用正则匹配文本)。

三、数据存储

导入第三方库​​openpyxl​​,调用openpyxl.Workbook()方法获取一个新的工作簿workbook,写入workbook.active=sheet获得一个工作表的引用sheet,为excel表指定位置添加数据:sheet["A1"]=value,最后使用workbook.save(”excel表名“)保存数据,这里不用数据库是为了方便没有编程基础也能查看数据。

四、继续爬取

根据爬取页面的URL参数重复以上步骤,如豆瓣电影TOP250有两个参数start和filter,start表示页面的电影排行从TOP几的后一个开始,每个页面有25个电影,也就是说第一个页面参数start=0,第二个页面参数start=25,filter为过滤,暂时不用管,请求下一个页面时GET请求的参数start+25即可。

五、数据可视化

调用openpyxl.load_workbook("excel表名")方法获取存放数据的excel表,写入workbook.active=sheet获得一个工作表的引用,获取excel表指定位置的数据:data=sheet["A1"].value。然后导入第三方库​​pyecharts​​,并根据​​文档​​调用合适的API生成图表实现数据可视化。

创建一个项目Crawler,安装使用的第三方库:

接下来在项目目录下新建文件html_parser.py:

该模块封装了解析豆瓣电影TOP250页面并提取数据的方法。

然后同样新建文件excel_handler.py:

该模块封装了存储和读取excel表的方法。

接下来在mian.py中写入:

main.py中的两个函数分别实现爬取豆瓣电影TOP250并存储数据和读取数据进行数据可视化操作,具体的过程已在注释中详细标注。