志在指尖
用双手敲打未来

beautifulsoup(beautifulsoup网页爬虫解析)

beautifulsoup

网络的遍及,为了要自动化的收集材料,提高工作效率,信任Python网页爬虫是最常运用的办法之一,而要实作Python网页爬虫,最受欢迎的三大东西莫过于BeautifulSoup、Selenium及Scrapy,其中各自的主要特征以及运用机遇,本文就来为我们进行简略的分享与比较。
一、BeautifulSoup
BeautifulSoup是一个撷取HTML/XML内容的套件,供给了非常多友善的办法(Method),帮忙开发人员可以快速搜索及获得HTML/XML中的元素,也因此被广泛的应用在Python网页爬虫的技术上。
但是它并无法独自完好实现Python网页爬虫的整个流程,像是发送恳求与解析下载的HTML原始码,所以需求特性的相依性模组来帮忙,例如:
requests-对网页伺服端发送恳求,来获得HTML网页原始码。html.parser或lxml解析器-将获得的HTML原始码进行解析,才有办法运用BeautifulSoup套件所供给的搜索办法,来撷取网页元素。特征
学习曲线较低,非常容易上手适用于静态网页的爬取
运用机遇
对于初学者想要学习入门Python网页爬虫,或是仅针对特定少量网页进行爬取的小型专案,就可以挑选BeautifulSoup套件。
二、Selenium
Selenium是一个网页自动化测验的套件,拥有许多网页操作的办法(Method),像是自动化输入材料、点击按钮及翻滚卷轴等,一起具备网页元素撷取与操作的功能,让开发人员可以轻松编撰网页的自动化测验脚本。
特征
可以轻松与JavaScript的事件协作可以处理网页的AJAX恳求自动化操作网页上的元素
运用机遇
当所要爬取的网页有运用JavaScript/AJAX等动态载入材料的技术,或是具有登入验证、搜索机制的网页,就可以使用Selenium套件的网页操作办法(Method),来开发Python网页爬虫。

Python
三、Scrapy
Scrapy本身便是一个网页爬虫结构,供给完好的网页爬虫开发功能,像是发送恳求、档案汇出、例外处理机制、侦错(Debug)等,并且是根据Twisted非同步网路结构所树立的,所以可以非同步的发送恳求(Request),有较佳的履行速度,学习曲线也较高。
别的,因为Scrapy是一个结构,所以有必定的专案架构及履行流程,除了未来很好维护外,也可以轻松的移转既有的专案到另一个专案。
特征
履行速度较快答应客制化功能来进行扩充内建多种档案格局输出(JSON、XML、CSV)内建支援XPath及CSS表达式来撷取材料完善的互动式侦错东西(ScrapyShell)
运用机遇
适用于大型的Python网页爬虫专案,有必定的效率要求及需求处理杂乱的爬取逻辑,Scrapy就会是一个很好的挑选。
四、小结
本文针对三个最常用来实作Python网页爬虫的套件与结构来进行比较,当所要树立的Python网页爬虫属于小型专案,或是仅针对特定的网页来进行爬取,BeautifulSoup套件就可以轻松的实现,而如果网页有登入验证机制或运用JavaScript/AJAX等动态载入材料的技术,就需求运用Selenium套件来帮忙。此外,如果是一个大型且杂乱的Python网页爬虫专案,则运用Scrapy来进行开发,会有较佳的效能及架构。

beautifulsoup网页爬虫解析

Python网络爬虫项目剖析:经过BeautifulSoupCSS解析器抓取网页内容。获取酷狗网络红歌榜前十页歌曲字段内容,并输出。
经过GoogleChrome浏览器,右键挑选-检查查看网页HTML代码,进行快速定位文本方位。
#项目代码剖析如下
importrequests
#导入BeautifulSoup类,未安装的先正确安装
frombs4importBeautifulSoup
importtime
#网页请求头
headers={
‘User-Agent’:’Mozilla/5.0(Macintosh;IntelMacOSX10_14_2)AppleWebKit/537.36(KHTML,likeGecko)Chrome/72.0.3626.119Safari/537.36′
}
defget_info(url):
wb_data=requests.get(url,headers=headers)
#获取网页HTML内容
soup=BeautifulSoup(wb_data.text,’lxml’)
#经过BeautifulSoupCSS挑选器,选定标签内容
ranks=soup.select(‘span.pc_temp_num’)
titles=soup.select(‘div.pc_temp_songlist>ul>li>a’)
times=soup.select(‘span.pc_temp_tips_r>span’)
forrank,title,timeinzip(ranks,titles,times):
data={
#获取歌曲序列号
‘rank’:rank.get_text().strip(),
#获取歌曲演唱者
‘singer’:title.get_text().split(‘-‘)[0],
#获取歌曲名
‘song’:title.get_text().split(‘-‘)[1],
#获取歌曲时长
‘time’:time.get_text().strip()
}
print(data)
if__name__==’__main__’:
#获取网络红歌榜前10页内容
urls=[‘http://www.kugou.com/yy/rank/home/{}-23784.html’.format(str(i))foriinrange(1,11)]
forurlinurls:
get_info(url)
time.sleep(1)
项目运转成果:

未经允许不得转载:IT技术网站 » beautifulsoup(beautifulsoup网页爬虫解析)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载