温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
Python
豆瓣
图书
数据
分析
晋城职业技术学院学报二二三年第十六卷第四期总第九十期基于Python的豆瓣图书数据的爬取与分析张娇(晋城职业技术学院,山西晋城048000)摘要:运用基于Python语言的第三方库Lxml,对豆瓣Top250的图书信息进行爬取、存储、分析,在爬虫设计、分析网页、代码编写等方面形成了完整的 过程构架,以期为相关技术的应用提供参考。关键词:Python;lxml;requests;matplotlib中图分类号:TP312文献标识码:A文章编号:1674-5078(2023)04-0083-04DOI:10.3969/j.issn.1674-5078.2023.04.021收稿日期:20230331基金项目:晋城职业技术学院2021年度课题 基于职位需求分析的大数据技术与应用高职专业课程体系研究(项目编号:LX2134)作者简介:张娇(1987),女,山西高平人,硕士。主要研究方向为大数据技术。一、引言互联网上存在着大量值得收集的公共信息,而爬虫技术就是获取这些公共信息的主要工具。Python爬虫的方式有多种,从爬虫框架到解析提取,再到数据存储,各阶段都有不同的手段和类库支持。本文使用lxml+requests的技术设计和实现了一个基于Python的针对豆瓣网图书信息抓取的网络爬虫。二、相关技术分析(一一)lxmllxmllxml是用Python语言编写的解析库,是一个轻量级、快速且功能丰富的库,主要用于创建、解析、查询和提取HTML或者XML文档,1它的解析方式是按照DOM树进行的。lxml对Xpath表达式提供了良好的支持,因此能够高效地解析HTML/XML文档。lxml是Python中处理XML和HTML最快且功能丰富的库之一。该库本质上是C库libxml2和libxslt的封装。因此结合了C库的速度和Python的简单性。lxml大部分功能都存在lxml.etree中,文件解析常用的有fromstring、XML和HTML三个函数。其中:fromstring函数是从字符串中解析XML文档或片段后返回根节点,根节点是原文档中的根节点;XML函数是从字符串常量中解析XML文档或片段后返回根节点或解析器目标返回的结果;HTML函数:从字符串常量中解析HTML文档或片段后返回根节点,根节点是html标签。2(二二)XpathXpathXpath称为XML路径语言,它的全称是XML PathLanguage。简单来说,XPath使用路径表达式在XML文档中进行导航以获取XML文档中的节点或者节点集。路径表达式和我们在电脑文件系统中看到的路径表达式非常相似。XPath包含一个标准函数库使得它具有非常强大的选择功能,该库含有100个内建函数用于元素或节点的比较(字符串值、数值、日期和时间)和处理(节点、QName、序列、逻辑值)。3XPath常用表达式如表1所示:表1XPath常用表达式表达式nodename/.*attribattrib=value tagtag=text string()text()描述选取此节点的所有子节点从当前节点选取直接子节点从当前节点选取子孙节点,而不考虑它们的位置选取当前节点选取当前节点的父节点选取属性通配符,选取所有元素节点与元素名选取所有属性选取具有给定属性的所有元素选取给定属性具有给定值的所有元素选取所有具有指定元素的直接子节点选取所有具有指定元素并且文本内容是text节点返回string类型返回标签的内容学 术 探 讨83晋城职业技术学院学报二二三年第十六卷第四期总第九十期(三三)requestsrequestsrequests是Python语言的内置模块,它主要用来发送HTTP请求,requests模块比urllib模块更加高效简洁。requests库相当于Python中的“浏览器”,可以通过它进行网络请求,之后会返回一个response对象,该对象包含了具体的响应信息,4使用XPath路径表达式就可以获取网页数据,功能强大而且特别好用。使用requests.get(url,params,args)方法发送get请求到指定url来获取网页数据,与HTTP的GET功能一样。其中,url表示网址,params是可选项用于表示url中的额外参数,args是访问控制参数。(四四)matplotlibmatplotlibmatplotlib是一个由约翰 亨特等人员开发的,主要用于绘制2D图表的Python库,是Python中众多数据可视化库的鼻祖,其设计风格与商业化程序语言MATLAB十分接近,具有很多强大且复杂的可视化功能。它支持numpy、pandas的数据结构,具有丰富的绘制图表、定制图表元素或样式的功能。5三、爬取豆瓣图书数据(一一)爬虫设计爬虫设计本文使用lxml库的etree模块,对豆瓣读书网站TOP250图书的书名、评分、评价数量等数据进行采集(网页地址为:https:/ 红楼梦 为例,书名、图片、作者、评分、简介等信息都在标签下,从此标签展开沿着文档中的路径可以分别定位到所爬取数据的末端节点,自标签到链接、书名、图片、作者、评分、评价量、简介的路径及中间节点的思维导图展示(见图4):图4元素/节点路径图学 术 探 讨张娇基于Python的豆瓣图书数据的爬取与分析84晋城职业技术学院学报二二三年第十六卷第四期总第九十期根据上面思维导图,可以看到书名存储在末标签a的title属性中,链接存储在末标签a的href属性中,评分、评价数量、描述存储在对应末标签span的text属性中,作者和出版社信息存储在末标签p 1 的text属性中,获取相应数据的XPath路径如下:书名:table/tbody/tr/td 2/div 1/a/title链接:table/tbody/tr/td 2/div 1/a/href作者、出版社:table/tbody/tr/td 2/p 1/text()评分:table/tbody/tr/td 2/div 2/span 2/text()评价数量:table/tbody/tr/td2/div2/span3/text()描述:table/tbody/tr/td 2/p 2/span/text()查看文档信息,可以看出Top225图书数据依次存放在第225个标签中,之后的路径与Top1图书 红楼梦 结构一致,可以通过循环方式完成当前页面25个标签内容的遍历。第一页和第二页的链接地址(见图5),从网址中可以看出,第二页与第一页仅仅是偏移量的不同,第一页为0,第二页为25,以此类推,第三页为50,第n页为25*(n-1),可以通过循环方式完成10页文档信息的遍历。图5网页地址对比(三三)爬取代码编写爬取代码编写1.引入模块引入爬取所需模块:lxml.etree模块、requests库、csv库、pandas库、numpy库。2.获取网页源码设置请求头headers信息,模拟浏览器发送http请求,使用requests.get方法访问豆瓣Top250图书网站,并获取对应网址的网页源码,以text的形式抓取数据。在URL中创建一个循环,偏移量为25,通过循环10次完成10个页面的遍历从而获取全部250本图书的信息,代码(见图6):图6获取网页DOM信息代码3.解析网页根据目标数据的XPath路径,可以定位到包含所要爬取数据的末端HTML元素,并使用相应表达式获取元素属性或值,从而提取目标数据,使用for循环方式遍历所有存放图书信息的标签,代码(见图7):图7解析网页代码将爬取到的250本图书数据写入到book.csv文件中,并保存在本地磁盘,以便后期的数据分析,book.csv文件中部分结果展示(见图8):图8book.csv文件部分截图4.可视化分析对豆瓣图书Top250的具体评分情况进行分析,通过散点图的图表形式获取各数据点的分布模式,可以看到评分主要集中在8.79.2之间,查看可视化结果(见图9):图9豆瓣图书排行榜Top250评分情况散点图对豆瓣图书Top250的具体评分与评价数量进行分析,通过气泡图(x轴代表排名,y轴代表评分,气泡大小代表评价数量)的图表形式获取排名、评分、评价数量三者之间的关联,可以看到气泡面积较大者集中在前100名图书中,且评分在8.89.7之间,可见读者对前100名书籍的喜爱度是一致的,对之后的书籍就是仁者见仁智者见智了,查看可视化结果如图学 术 探 讨张娇基于Python的豆瓣图书数据的爬取与分析85晋城职业技术学院学报二二三年第十六卷第四期总第九十期10所示:图10豆瓣图书排行榜Top250评分情况与评价数量关系气泡图四、总结数据被比喻为数字化时代的金矿。在大数据及机器学习日益火爆的时代,数据起着至关重要的作用,其价值也得到了各方面前所未有的重视。其中网页内容的爬取作为数据的一个重要来源,高效获取数据成了一个必不可少的需求。6通过对豆瓣图书Top250相关数据进行爬取和分析,可以为读者提供多角度的思考和选择。但不足的是,爬取数据指标量少、数据维度对比不足、数据度量不够丰富等缺陷会造成后期数据分析不能提取更多有用信息和展示结论。参考文献:1 崔庆才.Python3 网络爬虫开发实战 M.北京:人民邮电出版社,20182 王婵,唐亚修,张慧娥.基于Python的招聘信息爬虫系统的设计与实现 J.电子制作,2022(24).3 孟宪颖,毛应爽.基于Python爬虫技术的商品信息采集与分析 J.软件,2021(11).4 冯艳茹.基于Python的网络爬虫系统的设计与实现J.电脑与信息技术,2021(6).5 马妍妍.基于Python的招聘岗位数据分析与可视化J.信息记录材料,2022(9).6 张嘉威,关成斌.基于Python和Selenium的智联招聘数据的爬取与分析 J.软件,2022(8).Crawling and Analysis of Douban Book Data Based on PythonZHANG Jiao(Jincheng Institute of Technology,Jincheng,Shanxi 048026,China)Abstract:With the aid of Lxml,a third-party library based on the Python language,the book informationof Douban Top250 was crawled,stored and analyzed and a complete process framework was formed,includingcrawler design,analysis of web pages and code writing,in order to provide a reference for the application ofrelated technologies.Key words:Python;lxml;requests;matplotlib学 术 探 讨张娇基于Python的豆瓣图书数据的爬取与分析86