国内或国外 期刊或论文

您当前的位置:发表学术论文网文史论文》 热销图书爬取数据的BeautifulSoup库解析> 正文

热销图书爬取数据的BeautifulSoup库解析

所属分类:文史论文 阅读次 时间:2021-05-17 10:30

本文摘要:摘要BeautifulSoup库是python语言关于网络爬虫爬取页面解析的第三方库。它能根据html、xml以及html5lib语法建立解析树,进而高效解析网页内容。本文从基本元素、网页内容遍历提取方法入手介绍BeautifulSoup库的工作原理,并结合电商平台最新的图书销售数据为

  摘要BeautifulSoup库是python语言关于网络爬虫爬取页面解析的第三方库。它能根据html、xml以及html5lib语法建立解析树,进而高效解析网页内容。本文从基本元素、网页内容遍历提取方法入手介绍BeautifulSoup库的工作原理,并结合电商平台最新的图书销售数据为实例,进行爬取信息的解析展示。

  关键词网络爬虫;网页解析;BeautifulSoup库

数据库解析

  1引言

  BeautifulSoup库是python语言的第三方爬虫解析库。它提供了简单便捷的python式函数来处理复杂的Web页面的分析需求,是解析、遍历、维护标签树的功能库。BeautifulSoup库不仅支持html,还支持lxml以及htnl5lib解析器。通过解析文档为用户爬取有价值的数据,大大节省开发时间,成为广受欢迎的网页解析工具之一[1]。

  2BeautifulSoup库的使用

  利用爬虫获取网页信息,就是从html代码中抽取我们需要的信息。html代码由众多标签组成。BeautifulSoup库的主要功能就是精确定位标签以及从标签中提取内容[2]。

  2.1BeautifulSoup库的基本元素

  BeautifulSoup库可以将html文档转换为一个复杂的树形结构,每个节点就是一个对象,所有对象可以归纳为4类:(1)Tag对象:每一个html文档中的Tag标签就是BeautifulSoup库一个对象。(2)NavigableString对象:Tag对象的内部文本节点,可以通过Tag.string返回该对象。(3)BeautifulSoup对象:通过类的实例化BeautifulSoup对象可以将html文档转换为一个树形结构,以表示html的文档结构。(4)Comment对象:返回注释标签的文本节点,是NavigableString对象的子类。

  2.2BeautifulSoup库的信息提取方法

  BeautifulSoup对象作为一棵html标签树,存在众多由标签对象及非属性字符串组成的节点[3]。由于节点的非线性结构,相对于它所在的位置,使得它与其他节点构成了上下、平行关系,从而衍生出该节点的父节点、子节点、兄弟节点的上行遍历、下行遍历和平行遍历。节点的下行遍历可以通过子孙节点实现。.contents属性可将所有子节点以列表的方式输出,通过.children生成器,可对所有子孙节点进行遍历。节点的上行遍历可以通过父辈节点实现,.parent属性可将所有父节点以列表的方式输出,通过.parents生成器,可对所有父辈节点进行遍历。节点的平行遍历可通过兄弟节点实现,.next_sibling属性获取了该节点的下一个兄弟节点。.

  previous_sibling则与之相反,如果节点不存在,则返回None,兄弟节点的平行遍历要求两节点需为同级节点,即属于同一个父节点。对标签树符合指定内容的节点遍历则需要配合搜索方法共同作用,BeautifulSoup库提供了8种信息查找和获取方法,其中使用最广泛的是利用find_all()方法搜索标签树[4]。find_all(name,attrs,recursive,text,**kwargs)方法搜索当前tag的所有子节点,并判断是否符合过滤器的条件。

  经济论文投稿刊物:《经济数学》(季刊)创刊于1984年,主要刊登数量经济学、数理经济学、计量经济学、经济对策论、经济控制论、经济预测与决策和经济应用数学领域中创造性的研究成果。本刊现为季刊,向国内外公开发行。

  3电商平台图书热销数据的爬取解析

  各大电商平台的商品成交数据蕴含大量的有用信息。本文以京东平台2020年10月份的图书销售信息为依据,利用python的requests库和BeautifulSoup库爬取并解析出该时段京东图书销售榜的top100条信息,以帮助用户获取最新热门图书资源。

  (1)数据爬取。在数据爬取之前先阅读京东网站的网络robots协议,出于数据保护考量,网站对爬虫访问进行了反爬设置,需要修改网络请求头中的user-agent为合法浏览器。然后利用requests库GET方法对目标网页进行爬取,从而获得当前页面的html文件。defaskURL(url):head={"user-agent":"Chrome"}r=requests.get(url,headers=head)r.raise_for_status()r.encoding=r.apparent_encodinghtml=r.textreturnhtml

  (2)数据解析。利用requests库爬取的是整个网页的html文档,其中大部分数据并不是我们想要的图书热销信息,利用BeautifulSoup库进行有价值数据的解析提取,通过建立soup对象,利用find_all("div",class_="p-detail")找到逐条的热销图书信息,并进行数据清洗,只保留图书名称、作者以及出版社信息,存储为列表数据。defgetData(html):html=askURL(url)soup=BeautifulSoup(html,"html.parser")data=[]foriteminsoup.find_all("div",class_="p-detail"):aset=item.find_all("a")data.append([aset[0].attrs['title'],"\t作者"+aset[1].attrs['title'],"\t"+aset[2].attrs['title']])returndata

  (3)数据保存。将解析完成的数据,加以编号,存放到本地,编码方式设置为utf-8,以免出现乱码[5]。defsaveData(datalist,savepath):withopen(savepath,"w",encoding="utf-8")asf:fordataindatalist:forlineindata:f.writelines(line)f.write("\n\n")return

  参考文献

  [1]苏旋.分布式网络爬虫技术的研究与实现[硕士学位论文].哈尔滨工业大学,哈尔滨,2012

  [2]夏敏捷,杨关,等.Python程序设计-从基础到开发.北京:清华大学出版社,2017

  [3]嵩天,礼欣,黄天羽.Python语言程序设计基础.第2版.北京:高等教育出版社,2017

  [4]郭丽蓉.基于Python的网络爬虫程序设计.电子技术与软件工程,2017(23):248-249

  [5]魏倩男,贺正楚,陈一鸣.基于网络爬虫的京东电商平台数据分析.经济数学,2018,35(1):77-85

  作者:鞠慧

转载请注明来自发表学术论文网:http://www.fbxslw.com/wslw/26786.html