2017-07-26 10:10:11

Beautiful Soup可以解析html 和 xml 格式的文件。

Beautiful Soup库是解析、遍历、维护“标签树”的功能库。使用BeautifulSoup库非常简单,只需要两行代码,就可以完成BeautifulSoup类的创建,这里命名为soup,接下来就可以对soup进行相关处理了。一个BeautifulSoup类对应html或者xml的全部内容。

BeautifulSoup库将任意html文件转换成utf-8格式

一、解析器

BeautifulSoup类创建的时候第二个参数是解析器,上面的代码中用的解析器为‘html.parser’,BeautifulSoup支持的解析器有:

二、BeautifulSoup类的基本元素

  • 使用soup.tag来访问一个标签的内容,如:soup.title;soup.a等,这里的返回值为访问标签的第一个出现的值
  • 使用soup.tag.name可以得到当前标签的名字,返回值为字符串,如:soup.a.name 会返回字符串 ‘a’,也可以使用soup.a.parent.name来查看 a 标签父母的名字
  • 使用soup.tag.attrs可以得到当前标签的属性,返回值为一个字典,如果没有属性会返回一个空字典,如:soup.a.attrs 会返回 a 标签的属性信息
  • 使用soup.tag.string可以得到当前标签的字符串,如:soup.a.string 会返回 a 标签的内容字符串
  • 内容字符串有两种类型一是NavigableString类型,一种是Comment类型,Comment类型的格式是<p> <!-- This is an comment --></p>,在调用soup.p.string是会返回This is an comment,但是其类型是Comment类型。

三、soup的内容遍历

标签树的遍历有三种方式,即下行遍历,上行遍历和平行遍历。

(1)下行遍历属性

举例:

#遍历儿子节点
for child in soup.body.children:print(child)#遍历子孙节点
for child in soup.body.descendants:
print(child)

值得注意的是子孙节点不仅包含标签,还包含标签之间的字符串类型,这点需要注意与排除。

(2)上行遍历的属性

soup.parent为空,需要进行区分,可以使用for循环对parents进行遍历:

(3)平行遍历的属性

#遍历后续节点
for sibling in soup.a.next_sibling:print(sibling)#遍历前续节点
for sibling in soup.a.previous_sibling:print(sibling)

四、信息提取

  • name :  对标签名称的检索字符串,返回标签name的所有内容,并生成列表,也以使用列表一次查找多个标签;如果标签名称为TRUE,将返回所有的标签信息;也可以使用正则对返回的标签信息做筛选

  •   attrs: 对标签属性值的检索字符串,可标注属性检索,返回列表,属性值必须精确,如果不提供精确的值得话,会返回空列表,可以使用正则表达式进行非精确的匹配

  •  recursive: 是否对子孙全部检索,默认True

  •  string: <>…</>中字符串区域的检索字符串,需要加上string=‘’进行检索

简写方式:

扩展方法:

转载于:https://www.cnblogs.com/TIMHY/p/7239105.html

Python 爬虫-BeautifulSoup相关推荐

  1. Python爬虫-BeautifulSoup

    Python爬虫-BeautifulSoup Python爬虫-BeautifulSoup "美丽汤"的爱恨 使用 爱丽丝文档示例 标签 遍历 find(),findAll() 综 ...

  2. python爬虫beautifulsoup爬当当网_Python爬虫包 BeautifulSoup 递归抓取实例详解_python_脚本之家...

    Python爬虫包 BeautifulSoup  递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到 ...

  3. [python爬虫] BeautifulSoup设置Cookie解决网站拦截并爬取蚂蚁短租

    我们在编写Python爬虫时,有时会遇到网站拒绝访问等反爬手段,比如这么我们想爬取蚂蚁短租数据,它则会提示"当前访问疑似黑客攻击,已被网站管理员设置为拦截"提示,如下图所示.此时我 ...

  4. [python爬虫] BeautifulSoup和Selenium简单爬取知网信息测试

    作者最近在研究复杂网络和知识图谱内容,准备爬取知网论文相关信息进行分析,包括标题.摘要.出版社.年份.下载数和被引用数.作者信息等.但是在爬取知网论文时,遇到问题如下:   1.爬取内容总为空,其原因 ...

  5. [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

    这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...

  6. python爬虫beautifulsoup实例-【Python实例二】BeautifulSoup爬虫简单实践

    前言 前面安装了BeautifulSoup库,现在就来实现一下吧. 目录 一.Urllib库的使用 二.BeautifulSoup的使用 三. 一个示例 ----------------------- ...

  7. python爬虫beautifulsoup爬当当网_利用python爬虫可视化分析当当网的图书数据!

    导语 这周末就分享个小爬虫吧.利用Python爬取并简单地可视化分析当当网的图书数据. 开发工具 Python版本:3.6.4 相关模块: requests模块: bs4模块: wordcloud模块 ...

  8. [python爬虫] BeautifulSoup爬取+CSV存储贵州农产品数据

    在学习使用正则表达式.BeautifulSoup技术或Selenium技术爬取网络数据过程中,通常会将爬取的数据存储至TXT文件中,前面也讲述过海量数据存储至本地MySQL数据库中,这里主要补充Bea ...

  9. python爬虫beautifulsoup实例-Python爬虫学习(二)使用Beautiful Soup库

    (一)使用Beautiful Soup库(默认将HTML转换为utf-8编码) 1,安装Beautiful Soup库:pip install beautifulsoup4 2,简单使用: impor ...

  10. 数据之路 - Python爬虫 - BeautifulSoup库

    一.BeautifulSoup介绍 Beautiful Soup就是Python的一个HTML或XML的解析库,可以用它来方便地从网页中提取数据.Beautiful Soup自动将输入文档转换为Uni ...

最新文章

  1. 系统设计规范化攻克了什么问题
  2. html需要顺序阅读吗,前端知识:HTML5所有的标签-按顺序排列 | 前端面试题
  3. luogu P3378 【模板】堆
  4. Android——怎么引入okhttp3
  5. owdcloud mysql_MySQL在Ubuntu远程配置
  6. VS2015+OpenCV2.4.13环境搭建详细步骤及自带示例编译运行
  7. MySQL高级 - NULL值的判定
  8. 动态规划算法-06Longest Valid Parentheses问题
  9. 机器学习的简单逻辑回归的Advanced Optimization
  10. 调用某个按钮事件_Event 对象之事件句柄 (Event Handlers)
  11. php easysms,二次开发-如何在PHPEMS-发送短信验证码(以easy-sms为例)
  12. [gdb][python][libpython] 使用gdb调试python脚本
  13. 三种方法实现弹出框边框半透明和圆角的效果
  14. c语言文件替换字符串,C语言替换字符串
  15. JetBrains在CLion的Linux和OS X版本中引入Swift支持
  16. python竞赛之路_Python机器学习及实践:从零开始通往Kaggle竞赛之路 PDF高清完整版...
  17. 六万字 HTTP 必备知识学习,程序员不懂网络怎么行,一篇HTTP入门 不收藏都可惜
  18. C#实现中国身份证验证问题
  19. 生成真正的随机数(非伪随机数)
  20. 关键词文章自动生成的四大要点

热门文章

  1. PyTorch多GPU并行训练方法及问题整理
  2. 查找排序数组的最小值(js)
  3. html5 box sizing,CSS 盒模型与box-sizing
  4. hikari数据源配置类_SpringBoot多数据源配置详解
  5. 分布式系统 c语言,C语言分布式系统中的进程标识!
  6. python2还能用吗_官方推荐python3,为何还有人在用python2呢?
  7. python中concat的用法_python pandas concat用法及代码示例
  8. cisco 通过tftp备份/恢复配置和3560交换机IOS升级
  9. 第五章应用系统安全基础备考要点及真题分布
  10. 机械硬盘 运行 linux 很慢,如果读写硬盘操作有问题,假死机、很慢等,就检查一下硬盘坏道...