python beautifulsoup4示例_Python之Beautiful Soup 4使用实例

本文介绍了Python的BeautifulSoup4库的安装与使用,包括如何抓取网页标题、属性、导航条和分类信息,展示了从cnblogs首页提取数据的实际案例。
摘要由CSDN通过智能技术生成

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库,它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方式。

Beautiful Soup 4 官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

一、安装Beautiful Soup

运行cmd,cd切换到python安装目录下的Scripts目录,执行命令

pip3 install beautifulsoup4

二、安装解析器lxml

Beautiful Soup支持Python标准库中的HTML解析器,也支持一些第三方的解析器,推荐用lxml,速度快,文档容错能力强,需要安装。

pip3 install lxml

三、使用实例

下面测试抓取博客园首页一些信息

1、简单信息的抓取

00be239f707ce4a81da211aad7ed73d4.png

importreimportrequestsfrom bs4 importBeautifulSoup

r= requests.get('https://www.cnblogs.com')

soup= BeautifulSoup(r.text, 'lxml') #lxml为解析器

print(soup.title, soup.title.string) #获取指定标签,获取指定标签里面的内容

print(soup('title'), soup('title')[0].string) #获取指定标签也可以写成这样

print(soup.meta.get('charset')) #获取指定标签的属性

print(soup.meta['charset']) #获取指定标签的属性也可写成这样

print(soup.meta) #获取第一个标签(多个只取第一个)

print(soup.find('meta')) #获取第一个标签,结果和上面一样

print(soup.find('meta', attrs={'name':'viewport'})) #获取第一个标签,根据属性过滤获取

print(soup.find_all('meta', attrs={'charset':True})) #获取所有标签的列表,同时根据是否含有属性charset过滤获取

运行结果:

博客园 - 开发者的网上家园 博客园 - 开发者的网上家园

[

博客园 - 开发者的网上家园] 博客园 - 开发者的网上家园

utf-8

utf-8

[]

2、抓取首页的导航条信息

8fb183fc4e78e5b6ccbc01d641c90234.png

print('抓取导航,实现方法1')for item in soup.select('div#nav_menu a'):print(item.get('href'), item.string)print('抓取导航,实现方法2')for item in soup.find('div', {'id':'nav_menu'}).children:print(item['href'], item.string)

运行结果:

抓取导航,实现方法1

https://home.cnblogs.com/ 园子

https://news.cnblogs.com 新闻

https://q.cnblogs.com/ 博问

https://ing.cnblogs.com/ 闪存

https://group.cnblogs.com/ 小组

https://wz.cnblogs.com/ 收藏

https://job.cnblogs.com/ 招聘

https://edu.cnblogs.com/ 班级

http://zzk.cnblogs.com/ 找找看

抓取导航,实现方法2

https://home.cnblogs.com/ 园子

https://news.cnblogs.com 新闻

https://q.cnblogs.com/ 博问

https://ing.cnblogs.com/ 闪存

https://group.cnblogs.com/ 小组

https://wz.cnblogs.com/ 收藏

https://job.cnblogs.com/ 招聘

https://edu.cnblogs.com/ 班级

http://zzk.cnblogs.com/ 找找看

3、抓取网站分类

e413707cc7da4f3e70e5a3349c98d8d3.png

print('抓取网站分类,实现方法1')for item in soup.select('ul#cate_item li'):print(item.find('a').get('href'),item.find('a').string)print('抓取网站分类,实现方法2')for item in soup.find_all(id=re.compile('^cate_item_')):print(item.find('a').get('href'),item.find('a').string)

运行结果:

抓取网站分类,实现方法1

/cate/108698/ .NET技术(8)

/cate/2/ 编程语言(41)

/cate/108701/ 软件设计(0)

/cate/108703/ Web前端(10)

/cate/108704/ 企业信息化(0)

/cate/108705/ 手机开发(3)

/cate/108709/ 软件工程(0)

/cate/108712/ 数据库技术(9)

/cate/108724/ 操作系统(9)

/cate/4/ 其他分类(16)

/cate/all/ 所有随笔(1571)

/comment/ 所有评论(491)

抓取网站分类,实现方法2

/cate/108698/ .NET技术(8)

/cate/2/ 编程语言(41)

/cate/108701/ 软件设计(0)

/cate/108703/ Web前端(10)

/cate/108704/ 企业信息化(0)

/cate/108705/ 手机开发(3)

/cate/108709/ 软件工程(0)

/cate/108712/ 数据库技术(9)

/cate/108724/ 操作系统(9)

/cate/4/ 其他分类(16)

/cate/all/ 所有随笔(1571)

/comment/ 所有评论(491)

4、抓取首页的所有随笔信息

5930132e7368a935cccc11cdfa3b204c.png

print('抓取随笔信息')

post_item_body= soup.find_all('div', 'post_item_body')for item inpost_item_body:print(item.h3.a['href'])print(item.h3.a.string)print(item.p.get_text().strip())print(item.div.a.string)print(item.div.a.next_sibling.replace('发布于','').strip())

运行结果:

抓取随笔信息

https://www.cnblogs.com/chq1234/p/11400367.html

js全选与取消全选

实现全选与取消全选的效果 要求1(将军影响士兵):点击全选按钮,下面的复选框全部选中,取消全选按钮,下面的复选框全部取消 思路:复选框是否被选中,取决于check属性,将全选按钮的check属性值赋值给下面所有复选框的check值 要求2(士兵影响将军): 当下面的某个复选框没有被选中时,全选按钮自 ...

源氏西格玛

2019-08-23 15:36

https://www.cnblogs.com/lenve/p/11400056.html

40 篇原创干货,带你进入 Spring Boot 殿堂!

两个月前,松哥总结过一次已经完成的 Spring Boot 教程,当时感受到了小伙伴们巨大的热情。 两个月过去了,松哥的 Spring Boot 教程又更新了不少,为了方便小伙伴们查找,这里再给大家做一个索引参考。 需要再次说明的是,这一系列教程不是终点,而是一个起点,松哥后期还会不断完善这个教程, ...

江南一点雨

2019-08-23 14:58

.....................后面内容太长了省略....................

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值