python beautifulsoup4_Python之Beautiful Soup 4使用实例

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、简单信息的抓取

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、抓取首页的导航条信息

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、抓取网站分类

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、抓取首页的所有随笔信息

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RTE2021,实时互动技术的进化与蝶变

10 月 22—23 日,由声网 Agora 主办的 RTE2021 实时互联网大会在北京圆满落幕。大会以“万象频道”为主题,带来了 20 余场实时互联网全生态线下论坛及活动、近百场的精彩演讲分享,覆盖技术开发、行业观察、创业投资、趋势洞察等多维度话题。同…

Java编程技巧之单元测试用例编写流程

简介: 立足于“如何来编写单元测试用例”,让大家“有章可循”,快速编写出单元测试用例。 作者 | 常意 来源 | 阿里技术公众号 温馨提示:本文较长,同学们可收藏后再看 :)前言 清代杰出思想家章学诚有一句名言&#xff…

KubeVela + KEDA:为应用带来“与生俱来”的弹性伸缩能力

简介: 在这篇博文中,我们将简要解释需要考虑的领域,KEDA 如何使应用自动伸缩变得简单,以及为什么阿里云企业分布式应用服务(EDAS)在 KEDA 上完全标准化。 联合作者 | Yan Xun,阿里云 EDAS 团队…

mysql行转列函数_一个小知识点-Hive行转列实现Pivot

前言传统关系型数据库中,无论是Oracle(11g之后)还是SQLserver(2005之后),都自带了Pivot函数实现行转列功能,本文主要讲述在Hive中实现行转列的两种方式。传统数据库方式这种方式是借鉴在Oracle或者SQLserver在支持Pivot函数之前实现行转列的方…

java类的理解_Java类该怎么理解?

感觉你对java的各种数据类型可能理解不够吧。整体了解一下各个数据类型,你的问题就清楚了:java的基础数据类型有: byte、short、int、long、float、double、char。数组和类其实都可以“看做”是复杂数据类型,它们由基础数据类型以…

安全之心:一文读懂可信计算

简介: 信 or 不信,这是个问题 可信计算 TC (Trusted Computing) 业界新宠,越来越被高频提到 本质是创造可信执行环境的芯片级安全防护方案 然而,江湖流传 TA 的传说 却鲜少有人见过真身 阿里云作为亚太区最…

国内顶级AI赛事再启程,第三届“中国人工智能大赛”聚焦算法治理、深度伪造与网络安全

本届大赛赛题分为算法治理、深度伪造和网络安全三大方向的七大赛题,分别是:过滤算法鲁棒性、深度伪造视频检测、深度伪造视频生成方法识别、基于人工智能的音视频合成比赛、说话人无关的音频深度伪造检测识别、说话人相关的音频深度伪造检测识别、Webshe…

看阿里云如何用云上技术创新,帮助哈啰单车实现智能数据收治

简介: 客户通过把日志数据迁移到SLS,替代原有的kafka、ES、ClickHouse,累积节省成本达到30%,同时满足了稳定性、扩展性需求,以及对日志查询分析的需求。 更多存储标杆案例 欢迎点击下方链接查看 阿里云存储标杆案例样…

java radio 不可选_在Java Swing中取消选择RadioButtons

当显示一组JRadioButton时,最初没有选择任何一个(除非您以编程方式强制执行)。我想要能够将按钮恢复到该状态,即使在用户已经选择了一个之后,即,不应该选择任何按钮。然而,使用通常的嫌疑不会提供所需的效果&#xff1…

python画烟花的代码_电脑怎么用代码画烟花?

内个,我是化学专业的……回忆了一下,框架是这个:#include "stdlib.h"#include "graphics.h"#include "stdio.h"#include "math.h"#include "conio.h "#define PI 3.1425926main(){int gdriverDETECT,…

快进键启动,一文带你了解云原生时代容器安全

简介: 分享阿里云容器安全的治理能力与经验,致力保护生产环境安全。 都说国内需求离容器化还远,更谈不上关注安全,喊的热闹而落地困难。但总得有些声音面向未来向前看。 在2020年Forrester IaaS安全评测中,阿里云容器…

Serverless:这真的是未来吗?(一)

简介: 希望这些博客文章能帮助您在所有相关人员中展开讨论,就最佳业务方案达成一致。该课程可能涉及无服务器,也可能不涉及。在这第一篇文章中,我们将考虑在讨论无服务器时最常见的几个问题。在第二篇文章中,我们将研究…

无限级分类限定层级_王者荣耀:s20战令该不该买?战令限定星元皮肤实测真香...

王者荣耀:s20战令该不该买?战令限定星元皮肤实测真香Hello大家好,我是游戏鲪,很高兴见到大家。如今这个赛季的战令系统早已结束,新赛季也即将到来。许多小伙伴都在憧憬下个赛季的战令。关于s20赛季的战令奖励&#xff…

java testng 源代码_根据测试用例的java源码自动生成TestNG的XML文件

1、读取当前项目目录下的所有.java文件,过滤出含有Test标识的java源文件2、读取java文件内容,解析出包名、类名、方法名。使用Vector存储,第一个元素为包名,第二个元素为类名,从第三个元素开始存储有Test标识的方法名3…

光进铜退下的“更高”与“更低”,锐捷发布企业极简以太全光网解决方案

全新一代企业网络建设中,以太全光网将满足高带宽、简运维、降成本的要求。 头图 | 付费下载于视觉中国 出品 | CSDN云计算 近日,锐捷网络正式对外发布企业极简以太全光网解决方案。方案针对仓储物流、电子信息、工业制造、地产酒店等在行业客户在园区网…

物联网海量时序数据存储有哪些挑战?

简介: 随着 IoT 技术的快速发展,物联网设备产生的数据呈爆炸式增长,数据的总量(Volume)、数据类型越来越多(Variety)、访问速度要求越来越快(Velocity)、对数据价值&…

什么是 RedCap?一文详解!

作者 | 小枣君来源 | 鲜枣课堂随着3GPP R17版本的不断推进,一个新的名词逐渐开始热门起来,那就是RedCap。究竟什么是RedCap?为什么要引入它?它和现在的5G有什么区别?且看本文的深入解析……█ 什么是RedCapRedCap&…

被解救的代码 - 代码即服务时代来了!

简介: 人类对自由的追求从未停止,我们用战斗获得民族自由,我们用代码获得双手自由,同时代码作为服务器的奴隶,也开始蠢蠢欲动,革命已经开始,当代码翻身做主,作为开发者的我们又该如何…

java timer schedule_java怎么再次设置Timer的schedule???

public class TestTimer {class MyTimerTask extends TimerTask {private int time; //定时执行时间public MyTimerTask(){}public MyTimerTask(int _time){this.time _time;}Overridepublic void run() {System.out.println("time:" time);System.out.println((ti…

配置审计(Config)配合开启OSS防盗链功能

简介: 本文作者:紫极zj 本文将主要介绍利用【配置审计】功能,如何快速发现企业上云过程中,针对未配置防盗链的 OSS Bucket 定位及修复案例。 前言 配置审计(Config)将您分散在各地域的资源整合为全局资源…