前面2节中对页面内容的访问都是直接通过标签访问的,这样虽然也可以达到解析页面内容的目的,但是在网页复杂,页面结构发生变化时,爬虫就失效了。为了使爬虫能够更加鲁棒的工作,我们需要学习通过属性查找标签的方法。
  • BeautifulSoup的find()和findAll()方法:
findAll(tag, attribute, recursive, text, limit, keywords)
find(tag, attribute, recursive, text, limit, keywords)
tag: 需要查找元素的标签,可以是一个标签也可以是多个标签名组成的列表
attribute: 要查找的标签属性,是用一个字典封装的标签的属性和对应的属性值
recursive: 递归参数,bool类型。设置为True,findAll就会查找标签参数的所有子标签,否则只查找一级标签。默认为True。
text: 文本参数,用标签的文本内容去匹配,而不是用标签的属性。
limit: 范围限制参数,只用于findAll方法,表示获取前多少项结果。
keywords: 关键词参数,选择具有指定属性的标签。
  • 四种BeautifulSoup对象:
BeautifulSoup对象
BeautifulSoup.tag对象
NavigableString对象:
用来表示标签里的文字,而不是标签。
Comment对象:
用来查找HTML文档的注释标签,<!--XXX-->
  • 导航树
如果想要通过标签在文档中的位置来查找标签,则需要导航树。BeautifulSoup对象本身就是一个导航树,我们直接通过标签来访问。
除此之外,我们还可以通过children来访问一个标签的子标签,descendants来访问后代标签,parent来访问父标签,next_siblings来访问兄弟标签,previpus_sibling来访问前一个兄弟标签等。

网络爬虫(3)--Beautiful页面解析的更多相关文章

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

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

  2. 05.Python网络爬虫之三种数据解析方式

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  3. 05,Python网络爬虫之三种数据解析方式

    回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据 ...

  4. 《Python网络爬虫之三种数据解析方式》

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  5. Python网络爬虫之三种数据解析方式 (xpath, 正则, bs4)

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  6. Python 网络爬虫 010 (高级功能) 解析 robots.txt 文件

    解析 robots.txt 文件 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 Python 的集成开发环境:PyCharm 2016 ...

  7. Python网络爬虫之三种数据解析方式

    1. 正则解析 正则例题 import re # string1 = """<div>静夜思 # 窗前明月光 # 疑是地上霜 # 举头望明月 # 低头思故乡 ...

  8. Python网络爬虫实战(二)数据解析

    上一篇说完了如何爬取一个网页,以及爬取中可能遇到的几个问题.那么接下来我们就需要对已经爬取下来的网页进行解析,从中提取出我们想要的数据. 根据爬取下来的数据,我们需要写不同的解析方式,最常见的一般都是 ...

  9. Python网络爬虫 - 2. Beautiful Soup小试牛刀

    目标: 我们解析百度首页的logo bs_baidu_logo.py from urllib.request import urlopen from bs4 import BeautifulSoup ...

随机推荐

  1. eclipse注释模板修改

    http://swiftlet.net/archives/1199 以下为模板文件 <?xml version="1.0" encoding="UTF-8" ...

  2. _js day12

  3. javascript什么是函数

    函数是完成某个特定功能的一组词语.如没有函数,完成任务可能需要五行.十行.甚至更多的代码. 这是未满就可以把完成特定功能的代码块放到一个函数里,直接调用这个函数,就省重复输入大量代码的麻烦. 如何定义 ...

  4. 加载gif图过渡效果

    加载gif图片,过渡效果: 调用: - (id)initWithGifView:(UIView *)view { self = [super initWithView:view]; if (self) ...

  5. mercurial(Hg) Server 搭建 过程记录

    mercurial(Hg) Server 搭建 过程记录 1.  环境说明 只是测试搭建,环境为本机开发环境:win 8.1 + IIS8.5 软件准备: 2.  软件安装 先安装Python2.7, ...

  6. ps 换图片的背景颜色

    先把图像格式换乘RGB然后调整颜色,不用谢我是活雷锋!www.idouly.com

  7. OpenGL ES 2.0 向量

    访问向量中的某个分量<向量名>.<分量名> 将一个向量看作位置时,可以使用x.y.z.w4个分量名,其分别代表X轴.Y轴.Z轴.向量的模. 将一个向量看作颜色时,可以使用r.g ...

  8. C++中的函数指针用法

    代码: #include <iostream> #include <cstdio> typedef void (*FUN)(); using namespace std; vo ...

  9. sqlite的事务

    好久没用数据库,知识都忘了,之前用sqlite 逐行insert数据,发现这性能实在是太坑,10w条数据,插入大约花了100来分钟. 后来发现还有事务这么一个东西,可以大幅度降低对io的操作,测试插入 ...

  10. jquery简单的拖动效果

    <!DOCTYPE html> <html> <meta http-equiv="Content-Type" content="text/h ...