1.Beautiful Soup库的基本元素


Beautiful Soup库的理解

            <p>..</p>: 标签:Tag<p> p指的是标签的名字, Name成对出现<p class="title">...</p>属性Attributes0个或多个(由键值对构成)

Beautiful Soup库的引用

            引用方式from bs4 import BeautifulSoup使用方法from bs4 import BeautifulSoup1. soup = BeautifulSoup("<html>data<html>", "html.parser")2. soup = BeautifulSoup(open("D://demo.html"), "html.parser")BeautifulSoup对应一个HTML/XML文档的全部内容。

Beautiful Soup库解析器

soup = BeautifulSoup('<html>data</html>','html.parser')     

分类  

          解析器                     使用方法                                  条件bs4的HTML解析器         BeautifulSoup(mk,'html.parser')               安装bs4库lxml的HTML解析器      BeautifulSoup(mk,'lxml')                  pip install lxmllxml的XML解析器         BeautifulSoup(mk,'xml')                   pip install lxmlhtml5lib的解析器        BeautifulSoup(mk,'html5lib')               pip install html5lib

Beautiful Soup类基本元素

<p class=“title”> … </p>

分类  

    基本元素           说明Tag               标签,最基本的信息组织单元,分别用<>和</>标明开头和结尾Name            标签的名字,<p>…</p>的名字是'p',格式:<tag>.nameAttributes      标签的属性,字典形式组织,格式:<tag>.attrsNavigableString 标签内非属性字符串,<>…</>中字符串,格式:<tag>.stringComment        标签内字符串的注释部分,一种特殊的Comment类型

具体使用代码

1. 回顾demo.html

 import requestsurl2 = "http://python123.io/ws/demo.html"r = requests.get(url2)demo = r.textprint(demo)打印输出# print(demo)<html><head><title>This is a python demo page</title></head><body><p class="title"><b>The demo python introduces several python courses.</b></p><p class="course">Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:<a href="http://www.icourse163.org/course/BIT-268001" class="py1" id="link1">Basic Python</a> and <a href="http://www.icourse163.org/course/BIT-1001870001" class="py2" id="link2">Advanced Python</a>.</p></body></html>

2. Tag 标签

Tag 标签,最基本的信息组织单元,分别用<>和</>标明开头和结尾
任何存在于HTML语法中的标签都可以用soup.<tag>访问获得
当HTML文档中存在多个相同<tag>对应内容时,soup.<tag>返回第一个

from bs4 import BeautifulSoup
import requestsurl = "http://python123.io/ws/demo.html"
r = requests.get(url)
demo = r.text
soup = BeautifulSoup(demo, "html.parser")
print(soup.title)
tag = soup.a
print(tag)打印输出# print(soup.title)<title>This is a python demo page</title># print(tag)<a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a>

3. Tag的name(名字)

Name 标签的名字,<p>…</p>的名字是'p',格式:<tag>.name
每个<tag>都有自己的名字,通过<tag>.name获取,字符串类型

from bs4 import BeautifulSoupimport requestsurl2 = "http://python123.io/ws/demo.html"r = requests.get(url2)demo = r.textsoup = BeautifulSoup(demo, "html.parser")print(soup.a.name)print(soup.a.parent.name)print(soup.a.parent.parent.name)打印输出#   print(soup.a.name)'a'# print(soup.a.parent.name)'p'# print(soup.a.parent.parent.name)'body'

4. Tag的attrs(属性)

Attributes 标签的属性,字典形式组织,格式:<tag>.attrs
一个<tag>可以有0或多个属性,字典类型

from bs4 import BeautifulSoup
import requests
url2 = "http://python123.io/ws/demo.html"
r = requests.get(url2)
demo = r.text
soup = BeautifulSoup(demo, "html.parser")
tag = soup.a
print(tag.attrs)
print(tag.attrs['class'])
print(tag.attrs['href'])
print(type(tag.attrs))
print(type(tag))
打印输出# print(tag.attrs){'href': 'http://www.icourse163.org/course/BIT-268001', 'class': ['py1'], 'id': 'link1'}# print(tag.attrs['class'])['py1']#   print(tag.attrs['href'])http://www.icourse163.org/course/BIT-268001# print(type(tag.attrs))<class 'dict'># print(type(tag))<class 'bs4.element.Tag'>

5. Tag的NavigableString 

NavigableString 标签内非属性字符串,<>…</>中字符串,格式:<tag>.string
NavigableString可以跨越多个层次

from bs4 import BeautifulSoup
import requests
url2 = "http://python123.io/ws/demo.html"
r = requests.get(url2)
demo = r.text
soup = BeautifulSoup(demo, "html.parser")
soup.a
print(soup.a.string)
print(soup.p)
print(soup.p.string)
print(type(soup.p.string))
打印输出#   print(soup.a.string)Basic Python# print(soup.p)<p class="title"><b>The demo python introduces several python courses.</b></p># print(soup.p.string)The demo python introduces several python courses.# print(type(soup.p.string))<class 'bs4.element.NavigableString'>

6. Tag的Comment

Comment 标签内字符串的注释部分,一种特殊的Comment类型
Comment是一种特殊类型

from bs4 import BeautifulSoup
import requests
demo = "<b><!--This is a commet--></b><p>This is not a comment</p>"
newsoup = BeautifulSoup(demo, "html.parser")
print(newsoup.b.string)
print(newsoup.p.string)
print(type(newsoup.p.string))打印输出# print(newsoup.b.string)This is a commet# print(newsoup.p.string)This is not a comment# print(type(newsoup.p.string))<class 'bs4.element.NavigableString'>

2.Beautiful Soup库的基本元素


RRR

转载于:https://www.cnblogs.com/Robin5/p/11229881.html

网络爬虫_第二章_提取_第四单元_BeautifulSoup库入门(未完待续)相关推荐

  1. ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区 1 Desktop简介 1.1 ArcGIS for Desktop ...

  2. c语言运行时更入下一行,C语言高级语言程序设计(一)_第二章 C程序设计基础(二).ppt...

    C语言高级语言程序设计(一)_第二章 C程序设计基础(二) * 问a,b能否交换?不能.示例 传值调用 如何改变参数的值?在后续章节中介绍 下:传值 * 传值的好处 下:问题3.2 * * * 使用范 ...

  3. 微型计算机控制数字量输入输出,[工学]WX_微型计算机控制技术_第二章5.ppt

    [工学]WX_微型计算机控制技术_第二章5 数字量输出驱动电路 三极管驱动电路 继电器驱动电路 晶闸管驱动电路 固态继电器驱动电路 达林顿驱动电路 微型计算机控制技术 第2章 输入/输出接口与过程通道 ...

  4. Python爬虫学习第二章-1-requests模块简介

    Python爬虫学习第二章-1-requests模块简介   这一章主要是介绍requests模块的相关知识以及使用 1.requests模块简介: 概述:是python中原生的一款基于网络请求的模块 ...

  5. python爬虫requests源码链家_python爬虫——爬取链家房价信息(未完待续)

    爬取链家房价信息(未完待续) items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items # # ...

  6. 深度学习(三十四)对抗自编码网络-未完待续

    占坑,未完待续-- 上面是网络结构.上半部分是一个自编码结构,给定输入数据X,我们经过编码层,可以得到编码层的数据分布q(z|x)的一个采样潜变量编码z.在以前我们的自编码分布q(z|x)是固定的,现 ...

  7. 学完oracle 再学mysql_一篇文章让Oracle程序猿学会MySql【未完待续】

    一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...

  8. 微信小程序零基础入门_第二章 小程序框架_逻辑层

    第二章 小程序框架_逻辑层 2.1 逻辑层 小程序开发框架的逻辑层是基于JavaScript进行编写和实现的.在开发过程中写的所有代码,最终都被整合成一份JavaScript,在小程序启动的时候开始执 ...

  9. 计算机网络_第二章:物理层

    第二章:物理层 大纲考点: 1.通信基础 -清楚每个代表的是什么 信道.信号.带宽.码元.速率.信源.信宿. 奈奎斯特定理,香农定理(核心考点) 编码与调制 电路交换,报文交换,分组交换(三种交换方式 ...

最新文章

  1. C#连接各类数据库 [转]
  2. java 学习笔记2022.1.26
  3. 《零基础》MySQL 排序(十八)
  4. Android开发指南中文版(十三)User Interface-Notifications
  5. linux_ls命令详解
  6. BASIC-14_蓝桥杯_时间转换
  7. 从事 Android 开发六年,我学到的那些事!
  8. 怎样阻止电脑开机自动安装大量垃圾软件
  9. php实现加密解密,php实现加密与解密的原理与用法
  10. 神界计算机丢失msvcp120.dll,win8 msvcp120.dll丢失怎样修复?计算机中丢失msvcp120.dll处理办法...
  11. 《C#高级编程》笔记系列--点滴记录(持续更新中……)
  12. 解决方法:Linux装完显卡驱动后分辨率显示不正常
  13. 怎么设置ppt页面的长度和宽度_FL Studio采样器该怎么设置? FL采样设置页面详解。...
  14. maven配置项目根路径_Java的项目构建工具Maven的配置和使用教程
  15. Anaconda下载太慢问题解决
  16. 一款简单的取色器:ObtainColor拾色器
  17. git Pull Request 是什么意思?
  18. 设计模式实例php,PHP三种设计模式实例教程
  19. [java]自动生成指定长度的英文名字
  20. css为中英文设置不同的字体

热门文章

  1. kafka 在 360 商业化的实践
  2. Python快速调用Teambition接口
  3. Python浅谈gevent实现协程
  4. 进程间通信——Queue
  5. ExtJs2.0学习系列(11)--Ext.XTemplate
  6. 漫步凸分析一——仿射集
  7. python mpi 多节点_python – 如何找到MPI(4PY)可用的内核数量?
  8. leetcode —— 面试题67. 把字符串转换成整数
  9. Matlab 图像采集工具的使用 - Image Acquisition Toolbox【IAT】 + 大恒相机的应用【1】+多个摄像头支持
  10. STM32 - 定时器的设定 - 基础 - 05 - Arbitrary waveform generation using timer DMAburst feature - 任意波形的序列产生