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使用实例的更多相关文章

  1. python爬虫之Beautiful Soup基础知识+实例

    python爬虫之Beautiful Soup基础知识 Beautiful Soup是一个可以从HTML或XML文件中提取数据的python库.它能通过你喜欢的转换器实现惯用的文档导航,查找,修改文档 ...

  2. Python之Beautiful Soup的用法

    1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...

  3. Python的Beautiful Soup简单使用

    Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据 Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能 它是一个工具箱, ...

  4. 【python】Beautiful Soup的使用

    1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...

  5. python之Beautiful Soup库

    1.简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索 ...

  6. 20181223 python 使用Beautiful Soup

    (这篇,没什么营养价值) 怎么说呢! 爬虫吧!把html页面进行解析得到有效数据,而beautiful soup 能快速格式化页面再进行方法对数进行提取,存入想要存入的DB中. from bs4 im ...

  7. Python爬虫利器:Beautiful Soup

    Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.使用它来处理HTML页面就像JavaScript代码操作HTML DOM树一样方便.官方中文文档地址 1. 安 ...

  8. Python爬虫之Beautiful Soup解析库的使用(五)

    Python爬虫之Beautiful Soup解析库的使用 Beautiful Soup-介绍 Python第三方库,用于从HTML或XML中提取数据官方:http://www.crummv.com/ ...

  9. 吴裕雄--天生自然python学习笔记:Beautiful Soup 4.2.0模块

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

随机推荐

  1. Python爬虫,你是否真的了解它?

    程序员有时候很难和外行人讲明白自己的工作是什么,甚至有些时候,跟同行的人讲清楚“你是干什么的”也很困难.比如我自己,就对Daivd在搞的语义网一头雾水.所以我打算写一篇博客,讲一下“爬虫工程师”的工作 ...

  2. Vue的MVVM框架理解

    图示 只上图,请不要怪楼主懒. 这是楼主梳理后画的,因为毕竟自己画的印象深刻,更觉得香啊. 黄线: 表示View->Model, 红线: 表示Model->View 具体代码,请查看Vue ...

  3. retrying failed action with response code: 403

    0x00 Event [2019-09-24T19:22:31,655][INFO ][logstash.outputs.elasticsearch] retrying failed action w ...

  4. Django2.1集成xadmin管理后台所遇到的错误集锦,解决填坑(二)

    django默认是有一个admin的后台管理模块,但是丑,功能也不齐全,但是大神给我们已经集成好了xadmin后台,我们拿来用即可,但是呢,django已经升级到2.1版本了,xadmin貌似跟不上节 ...

  5. 高通lk屏幕向kernel传参

    LK把相关参数报存到cmdline上: 在Bootable\bootloader\lk\dev\gcdb\display\gcdb_display_param.c上gcdb_display_cmdli ...

  6. java 反编译工具 jd-gui

    下载地址    http://java-decompiler.github.io/         一般使用windows 版本  看你使用的操作系统了 解压  点击exe 进入 选择你编译后的cla ...

  7. The Preliminary Contest for ICPC Asia Shenyang 2019

    传送门 B. Dudu's maze 题意: 是什么鬼东西???我读题可以读半小时QAQ 给出一张无向图,一个人在里面收集糖果,每个点都有一个糖果,特殊点除外.当他第一次进入特殊点时,会随机往一条边走 ...

  8. day87_11_7微信小程序之登录,支付(获取ip,requests使用),授权

    一.登录接口. 官方文档https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 在登录接口 ...

  9. SQL查询--内连接、外连接、自连接查询

    先创建2个表:学生表和教师表   1.内连接: 在每个表中找出符合条件的共有记录.[x inner join y on...] 第一种写法:只用where SELECT t.TEACHER_NAME, ...

  10. Eclipse优化之设置不自动弹出控制台和Server

    有时候Eclipse启动,控制台console不会自动跳出来,需要手工点击该选项卡才行, 按下面的设置,可以让它自动跳出来(或不跳出来): windows  ->   preferences   ...