Beautiful Soup 用法:

(1) 前面我们爬取一个网页,都是使用正则表达式来提取想要的信息,但是这种方式比较复杂,一旦有一个地方写错,就匹配不出来了,因此我们可以使用 Beautiful Soup 来进行提取
(2) Beautiful Soup 就是 Python 的一个 HTML 或 XML 的解析库,可以用它来方便地从网页中提取数据,我们可以通过 pip 来安装 Beautiful Soup:pip3 install beautifulsoup4

import re
from bs4 import BeautifulSoup html = '''
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<p id="username">This is your username</p>
<p id="password">This is your password</p>
</body>
</html>
''' soup = BeautifulSoup(html, 'lxml') # 初始化一个BeautifulSoup对象,接收一个HTML文本和'lxml'解析器作为参数,lxml解析器用于解析HTML或XML文档 result = soup.title # 表示提取<title>节点,结果为:<title>首页</title>
result = soup.title.name # 表示提取<title>节点的名字,结果为:title
result = soup.title.string # 表示提取<title>节点的文本内容,结果为:首页
result = soup.head.title # 表示提取<head>节点下的<title>节点,结果为:<title>首页</title>
result = soup.p.attrs # 表示提取<p>节点的所有属性,结果为:{'id': 'username'}
result = soup.p.attrs['id'] # 表示提取<p>节点的属性为id的值,结果为:username
result = soup.body.contents # 表示提取<body>节点包含的所有内容,结果为:['\n', <p id="username">This is your username</p>, '\n', <p id="password">This is your password</p>, '\n']
result = soup.body.children # 表示提取<body>节点包含的所有内容,结果返回一个生成器,内容跟contents的内容一样,只不过我们要用for循环去遍历出来
result = soup.p.parent # 表示提取<p>节点的父节点的内容,结果为:<body>....</body> result = soup.find_all(name='head') # 根据节点名来提取所有节点,结果为:[<head><meta charset="utf-8"/><title>首页</title></head>]
result = soup.find_all(attrs={'id': 'username'}) # 根据属性值来提取所有节点,结果为:[<p id="username">This is your username</p>]
result = soup.find_all(text=re.compile('your')) # 根据文本内容来提取所有节点,结果为:['This is your username', 'This is your password']
result = soup.find_all(name='head') # find_all()用于提取所有节点,find()用于提取匹配到的第一个节点
result = soup.select('title, #username') # select()可以使用CSS选择器进行提取,关于CSS选择器参考:https://www.cnblogs.com/pzk7788/p/10530050.html

使用 Beautiful Soup的更多相关文章

  1. 使用Beautiful Soup编写一个爬虫 系列随笔汇总

    这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...

  2. 网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(1): 基础知识Beautiful Soup

    开始学习网络数据挖掘方面的知识,首先从Beautiful Soup入手(Beautiful Soup是一个Python库,功能是从HTML和XML中解析数据),打算以三篇博文纪录学习Beautiful ...

  3. Python爬虫学习(11):Beautiful Soup的使用

    之前我们从网页中提取重要信息主要是通过自己编写正则表达式完成的,但是如果你觉得正则表达式很好写的话,那你估计不是地球人了,而且很容易出问题.下边要介绍的Beautiful Soup就可以帮你简化这些操 ...

  4. 推荐一些python Beautiful Soup学习网址

    前言:这几天忙着写分析报告,实在没精力去研究django,虽然抽时间去看了几遍中文文档,还是等实际实践后写几篇操作文章吧! 正文:以下是本人前段时间学习bs4库找的一些网址,在学习的可以参考下,有点多 ...

  5. 错误 You are trying to run the Python 2 version of Beautiful Soup under Python 3. This will not work

    Win  10    下python3.6 使用Beautiful Soup  4错误 You are trying to run the Python 2 version of Beautiful ...

  6. Python学习笔记之Beautiful Soup

    如何在Python3.x中使用Beautiful Soup 1.BeautifulSoup中文文档:http://www.crummy.com/software/BeautifulSoup/bs3/d ...

  7. Python Beautiful Soup学习之HTML标签补全功能

    Beautiful Soup是一个非常流行的Python模块.该模块可以解析网页,并提供定位内容的便捷接口. 使用下面两个命令安装: pip install beautifulsoup4 或者 sud ...

  8. 转:Beautiful Soup

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

  9. Beautiful Soup教程 转

    Python中使用Beautiful Soup库的超详细教程 转 http://www.jb51.net/article/65287.htm 作者:崔庆才 字体:[增加 减小] 类型:转载 时间:20 ...

  10. Beautiful Soup第三方爬虫插件

    什么是BeautifulSoup? Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree). 它提供简单又常用的 ...

随机推荐

  1. 超级简单却不知道:html标签的嵌套规则

    XHTML的标签有许多:div.ul.li.dl.dt.dd.h1~h6.p.a.addressa.span. strong……我们在运用这些标签搭建页面结构的时候,是可以将它们无限嵌套的,但是,嵌套 ...

  2. Windows 7 incorrectly reports "No Internet Access"

    PROBLEM DESCRIPTION Windows 7 may sometimes report that it has "No Internet Access"; this ...

  3. 在kali linux之下安装wps之后 报错字体缺失

    启动WPS for Linux后,出现提示"系统缺失字体" . 出现提示的原因是因为WPS for Linux没有自带windows的字体,只要在Linux系统中加载字体即可. 第 ...

  4. 关于Unity3D中鼠标移动指定物体的解决方案

    一.鼠标拾取物体的原理 在Unity3D当中,想要在观察面(Aspect)中拾取物体(有碰撞属性)的方法一般如下: 1.声明一个观察的摄像机.一个从摄像机原点出发的射线Ray以及一个用于检测碰撞的Ra ...

  5. e611. Setting Focus Traversal Keys for the Entire Application

    This example changes the focus traversal keys for the entire application. For an example of how to c ...

  6. QA:无法为具有固定名称“MySql.Data.MySqlClient”...

    Question: 无法为具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“MySql.Data.MySqlC ...

  7. lua----------------使用VS2015搭建lua开发环境的一些侥幸成功经验,

    所以本篇博文介绍在Windows平台下,使用VS2015搭建lua开发环境的一些侥幸成功经验,安装过程参考网上教程,安装过程如下(参考http://www.byjth.com/lua/33.html) ...

  8. Java EE的十三个技术规范

    Java 是一种非常棒的语言,健壮,跨平台运行,屏蔽了具体的平台环境的要求,也就是说只要支持java 虚拟机,就可以运行java程序. 下面,我们一起学习一下J2EE的十三种技术规范. 一.JDBC: ...

  9. Type cvc-complex-type.2.4.c: The matching wildcard is strict...

    这个问题困扰了我两次,分别说一下原因:1. 如网上一些网友所言,是在配置Spring的标签库的时候有拼写错误或者遗漏.下面贴一个标准3.0的吧: <?xml version="1.0& ...

  10. HTML5重力感应小球冲撞动画实现教程

    今天我们来分享一款很酷的HTML5重力感应动画教程,这款动画可以让你甩动页面中的小球,小球的大小都不同,并且鼠标点击空白区域时又可以生成一定数量的小球.当我们甩动小球时,各个小球之间就会发生互相碰撞的 ...