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会帮你节省数小时 ...
随机推荐
- 读写锁(ReadWriteLock)
为了提高性能,Java提供了读写锁,读写锁分为读锁和写锁.多个读锁不互斥,读锁与写锁互斥,写锁与写锁互斥,这是由JVM控制的.如果没有写锁的情况下,读是无阻塞的,在一定程度上提高了程序的执行效率. 读 ...
- 松软科技前端课堂:JavaScript 对象
真实生活中的对象.属性和方法 在真实生活中,汽车是一个对象. 汽车有诸如车重和颜色等属性,也有诸如启动和停止的方法: 对象 属性 方法 car.name = porsche car.model = ...
- opencv-python图像处理基础(一)
#一.读取图像数据 import cv2 img=cv2.imread("d:/image0.JPG") #读取图片数据 print(img) cv2.imshow('image' ...
- Playbook剧本小结
1.Playbook剧本小结 1.什么是playbook,playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色task: 定义的是具体执 ...
- Linux iotop工具简介
iotop的简介: iotop是一款开源.免费的用来监控磁盘I/O使用状况的类似top命令的工具,iotop可以监控进程的I/O信息.它是Python语言编写的,与iostat工具比较,iostat是 ...
- Scrapy中的Request和日志分析
Scrapy.http.Request 自动去重,根据url的哈希值,进行去重 属性 meta(dict) 在不同的请求之间传递数据,dict priority(int) 此请求的优先级(默认为0 ...
- Linux:FTP服务器的搭建
FTP服务器的简介 系统用户 即系统本机的用户.Linux一般不会针对实体用户进行限制,因此实体用户可以针对整个文件 系统进行工作.但通常不希望他们通过FTP方式远程访问系统. 虚拟用户 只能采用FT ...
- element-ui 中dialog居中
.el-dialog{ display: flex; flex-direction: column; margin:0 !important; ...
- Day6 - Python基础6 模块shelve、xml、re、subprocess、pymysql
本节目录: 1.shelve模块 2.xml模块 3.re模块 4.subprocess模块 5.logging模块 6.pymysql 1.shelve 模块 shelve模块是一个简单的k,v将内 ...
- 面向对象程序设计(JAVA) 第14周学习指导及要求
2019面向对象程序设计(Java)第14周学习指导及要求 (2019.11.29-2019.12.2) 学习目标 (1)掌握GUI布局管理器用法: (2)掌握Java Swing文本输入组件用途 ...