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、简单信息的抓取
import re
import requests
from bs4 import BeautifulSoup 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过滤获取
运行结果:
<title>博客园 - 开发者的网上家园</title> 博客园 - 开发者的网上家园
[<title>博客园 - 开发者的网上家园</title>] 博客园 - 开发者的网上家园
utf-8
utf-8
<meta charset="utf-8"/>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
[<meta charset="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 in post_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
.....................后面内容太长了省略....................
Python之Beautiful Soup 4使用实例的更多相关文章
- python爬虫之Beautiful Soup基础知识+实例
python爬虫之Beautiful Soup基础知识 Beautiful Soup是一个可以从HTML或XML文件中提取数据的python库.它能通过你喜欢的转换器实现惯用的文档导航,查找,修改文档 ...
- Python之Beautiful Soup的用法
1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...
- Python的Beautiful Soup简单使用
Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据 Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能 它是一个工具箱, ...
- 【python】Beautiful Soup的使用
1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...
- python之Beautiful Soup库
1.简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索 ...
- 20181223 python 使用Beautiful Soup
(这篇,没什么营养价值) 怎么说呢! 爬虫吧!把html页面进行解析得到有效数据,而beautiful soup 能快速格式化页面再进行方法对数进行提取,存入想要存入的DB中. from bs4 im ...
- Python爬虫利器:Beautiful Soup
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.使用它来处理HTML页面就像JavaScript代码操作HTML DOM树一样方便.官方中文文档地址 1. 安 ...
- Python爬虫之Beautiful Soup解析库的使用(五)
Python爬虫之Beautiful Soup解析库的使用 Beautiful Soup-介绍 Python第三方库,用于从HTML或XML中提取数据官方:http://www.crummv.com/ ...
- 吴裕雄--天生自然python学习笔记:Beautiful Soup 4.2.0模块
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时 ...
随机推荐
- OAuth2、OpenID Connect简介
当我们在登录一些网站的时候,需要第三方的登录.比如,现在我们要登录简书https://www.jianshu.com/sign_in,我们使用微博登录,点击下方的一个微博的小按钮,就会出现这么一个地址 ...
- ArcGIS以数据库作为数据源作为source发布服务步骤详解(以Postgresql为例)及各种发布问题
创建企业级数据库 Data Management Tools-->Geodatabase Administration-->Create Enterprise Geodatabase 按如 ...
- 2018最新cocoapods详细安装和使用
1查看当前终端里存在的源 终端输入:$ gem sources -l2移除淘宝镜像 $ gem sources --remove https://rubygems.org/ 3装上目前能用的源 终端输 ...
- JS Switch
JS Switch switch 语句用于基于不同的条件来执行不同的动作. switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 break; defa ...
- ios 10 访问设置问题
ios 10 访问设置问题 从ios8之api支持访问设置通过访问UIApplicationOpenSettingsURLString来跳转设置 NSURL*url=[NSURL URLWithStr ...
- OC-AVAudioPlayer的使用小记
- (void)viewDidLoad { [super viewDidLoad]; //设置音乐的后台播放,注意background mode中需要勾选上 AVAudioSession *sessi ...
- jeesite3环境部署时初始化数据库注意问题
---恢复内容开始--- 首先要修改jeesite.properties下数据库连接方式,注意选择自己的数据库 其次在pom.xml文件中修改对应的数据库连接方式 最后运行db文件夹下的init-db ...
- 团队项目之需求改进&系统设计
小组:BLACK PANDA 需求&原型改进 20分 需求&原型改进: https://git.lug.ustc.edu.cn/black-panda/mblogs_plan/bl ...
- none 和 host 网络的适用场景
我们会首先学习 Docker 提供的几种原生网络,以及如何创建自定义网络.然后探讨容器之间如何通信,以及容器与外界如何交互. Docker 网络从覆盖范围可分为单个 host 上的容器网络和跨多个 h ...
- django之查询操作及开启事务
目录 聚合查询 aggregate 聚合函数 分组查询 annotate F与Q查询 F查询 Q查询 ORM操作事务 django中开启事务 聚合查询 aggregate 操作外键字段管理数据的时候, ...