爬虫库之BeautifulSoup学习(二)

BeautifulSoup官方介绍文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html

四大对象种类:

BeautifulSoup 将复杂的html文件转换成一个复杂的树形结松,每个节点都是python对象。

所有对象可以分下以下四类:

Tag

NavigableString

BeautifulSoup

Comment

下面进行一一介绍:

1、Tag  

通俗点讲就是html中的一个个标签,例如:

<title>Hello world </title>

<a class ="test",href="http://www.baidu.com" id="link1"> Elsie </a>

上面的 title a 等等 HTML 标签加上里面包括的内容就是 Tag,下面我们来感受一下怎样用 Beautiful Soup 来方便地获取 Tags

下面每一段代码中注释部分为运行结果:

print soup.title

#<title>Hello world </title>

print soup.head

#<head><title>The Dormouse‘s story</title></head>

print soup.a

#<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>

print soup.p

#<p class="title" name="dromouse"><b>The Dormouse‘s story</b></p>

  我们可以利用 soup加标签名轻松地获取这些标签的内容,是不是感觉比正则表达式方便多了?

  我们可以验证一下这些对象的类型:

  print type(soup.a)

  #<class ‘bs4.element.Tag‘>

  

对于tag,它有两个重要的属性,是nameattrs

  name:

  print soup.name

  print soup.head.name

  #[document]

  #head

  soup 对象本身比较特殊,它的 name 即为 [document],对于其他内部标签,输出的值便为标签本身的名称。

  attrs

  print soup.p.attrs

  #{‘class‘: [‘title‘], ‘name‘: ‘dromouse‘}    //得到类型是一个字典

  如果我们想要单独获取某个属性,可以这样:

  print soup.p[‘class‘]

#[‘title‘]

  还可以这样,得用get方法,传入属性的名称,二者是等价的:

print soup.p.get(‘class‘)

#[‘title‘]

  

2、NaviableString

既然我们已经得到了标签的内容,那么问题来了,我们要想获取标签内部的文字怎么办呢?很简单,用 .string 即可

print soup.p.string

#The Dormouse‘s story

  检查一下它的类型

print type(soup.p.string)

  #<class ‘bs4.element.NavigableString‘>

3、BeautifulSoup

  对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们可以分别获取它的类型,名称,以及属性来感受一下

  print type(soup.name)

  #<type ‘unicode‘>

  print soup.name

  #[document]

  print soup.attrs

  #{} 空字典

4、Comment

  对象是一个特殊类型的 NavigableString 对象,其实输出的内容仍然不包括注释符号,但是如果不好好处理它,可能会对我们的文本处理造成意想不到的麻烦。

  我们找一个带注释的标签

  print soup.a

  print soup.a.string

  print type(soup.a.string)

  结果如下:

  <a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>

  Elsie

  <class ‘bs4.element.Comment‘>

  

  a 标签里的内容实际上是注释,但是如果我们利用 .string 来输出它的内容,我们发现它已经把注释符号去掉了,所以这可能会给我们带来不必要的麻烦。

  另外我们打印输出下它的类型,发现它是一个 Comment 类型,所以,我们在使用前最好做一下判断,判断代码如下:

  if type(soup.a.string)=="bs4.element.Comment":

    print soup.a.string

  上面的代码中,我们首先判断了它的类型,是否为 Comment 类型,然后再进行其他操作,如打印输出。

  

  

时间: 2024-10-09 10:57:32

爬虫库之BeautifulSoup学习(二)的相关文章

爬虫库之BeautifulSoup学习(四)

探索文档树: find_all(name,attrs,recursive,text,**kwargs) 方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件 1.name参数,可以查找所有名字为name的tag,字符串对象会被自动忽略掉. 1) 传字符串 最简单的过滤器是字符串.在搜索方法中传入一个字符串参数,Beautiful Soup会查找与字符串完整匹配的内容. 下面的例子用于查找文档中所有的<b>标签 soup.find_all('b') # [<b>The D

爬虫库之BeautifulSoup学习(三)

遍历文档树: 1.查找子节点 .contents tag的.content属性可以将tag的子节点以列表的方式输出. print soup.body.contents print type(soup.body.contents) 运行结果: [u'\n', <p class="title" name="dromouse"><b>The Dormouse's story</b></p>, u'\n', <p cla

爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二)

先看,前一期博客,理清好思路. 爬虫概念与编程学习之如何爬取网页源代码(一) 不多说,直接上代码. 编写代码 运行 <!DOCTYPE html><html><head><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><meta http-equiv="Content-Type" content="text/html; c

Python爬虫:用BeautifulSoup进行NBA数据爬取

爬虫主要就是要过滤掉网页中无用的信息,抓取网页中有用的信息 一般的爬虫架构为: 在python爬虫之前先要对网页的结构知识有一定的了解,如网页的标签,网页的语言等知识,推荐去W3School: W3school链接进行了解 在进行爬虫之前还要有一些工具: 1.首先Python 的开发环境:这里我选择了python2.7,开发的IDE为了安装调试方便选择了用VS2013上的python插件,在VS上进行开发(python程序的调试与c的调试差不多较为熟悉): 2.网页源代码的查看工具:虽然每一个浏

python2.7 beautifulsoup学习使用

学习使用python的beautiful soup库,大大方便了网络爬虫对于HTML文件的解析,beautiful soup将HTML拆解成对象处理,将HTML转换成字典和数组,相比利用正则表达式解析的爬虫,省略了学习正则表达式的高成本 说人话就是正则表达式太难了,博主学不会! 本篇只介绍Beautiful Soup的使用,不涉及安装.配置. Beautiful Soup的使用方法如下: 1.创建Beautiful Soup对象 首先导入bs4库,创建Beautiful Soup对象 ? 1 2

[Python 学习] 二、在Linux平台上使用Python

这一节,主要介绍在Linux平台上如何使用Python 1. Python安装. 现在大部分的发行版本都是自带Python的,所以可以不用安装.如果要安装的话,可以使用对应的系统安装指令. Fedora系统:先以root登入,运行 yum install python Ubuntu系统:在root组的用户, 运行 sudo apt-get install python 2. 使用的Python的脚本 Linux是一个以文件为单位的系统,那么我们使用的Python是哪一个文件呢? 这个可以通过指令

Jetty学习二:配置概览-怎么配置Jetty

Jetty POJO配置 Jetty的核心组件是Plain Old Java Objects(POJOs):配置Jetty的大部分工作就是在Jetty POJOs上的初始化.装配和设置域的处理,你能通过以下的方式来实现:  1)直接通过Java代码初始化和装配Jetty对象.这个在后面Embedding Jetty讲. 2)用Jetty XML配置(一个控制反转(IoC)框架)初始化和装配Jetty对象.etc/jetty.xml文件是基本的Jetty XML配置文件,但有一些其它的etc/je

011 Python 爬虫库安装简单使用

# Python 爬虫基础知识 ● Python 爬虫基础知识 安装爬虫库 beautifulsoup4 pip install beautifulsoup4 lxml HTML 解析器 pip install html5lib html5lib pip install html5lib ● 使用库 设置 encoding='utf-8' 编码 1 # -*- coding: UTF-8 -*- 2 from bs4 import BeautifulSoup 3 import lxml 4 ht

u-boot学习(二):u-boot简要分析

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 看到不错的文章,不要添加收藏夹,想着以后有时间再看,因为很有可能你以后再也不会看它们了. 想写总结的文章,不要想着等到以后有时间了再总结,因为很有可能你以后更没有时间总结它们了. --送给自己 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++