使用 Beautiful Soup
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的更多相关文章
- 使用Beautiful Soup编写一个爬虫 系列随笔汇总
这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...
- 网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(1): 基础知识Beautiful Soup
开始学习网络数据挖掘方面的知识,首先从Beautiful Soup入手(Beautiful Soup是一个Python库,功能是从HTML和XML中解析数据),打算以三篇博文纪录学习Beautiful ...
- Python爬虫学习(11):Beautiful Soup的使用
之前我们从网页中提取重要信息主要是通过自己编写正则表达式完成的,但是如果你觉得正则表达式很好写的话,那你估计不是地球人了,而且很容易出问题.下边要介绍的Beautiful Soup就可以帮你简化这些操 ...
- 推荐一些python Beautiful Soup学习网址
前言:这几天忙着写分析报告,实在没精力去研究django,虽然抽时间去看了几遍中文文档,还是等实际实践后写几篇操作文章吧! 正文:以下是本人前段时间学习bs4库找的一些网址,在学习的可以参考下,有点多 ...
- 错误 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 ...
- Python学习笔记之Beautiful Soup
如何在Python3.x中使用Beautiful Soup 1.BeautifulSoup中文文档:http://www.crummy.com/software/BeautifulSoup/bs3/d ...
- Python Beautiful Soup学习之HTML标签补全功能
Beautiful Soup是一个非常流行的Python模块.该模块可以解析网页,并提供定位内容的便捷接口. 使用下面两个命令安装: pip install beautifulsoup4 或者 sud ...
- 转:Beautiful Soup
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时 ...
- Beautiful Soup教程 转
Python中使用Beautiful Soup库的超详细教程 转 http://www.jb51.net/article/65287.htm 作者:崔庆才 字体:[增加 减小] 类型:转载 时间:20 ...
- Beautiful Soup第三方爬虫插件
什么是BeautifulSoup? Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree). 它提供简单又常用的 ...
随机推荐
- 多变量频率统计——r
例如有X1,X2,..,Xn个变量,我需要对每一个变量进行频次统计,如果一个一个求解的话非常麻烦,如table(X1), table(X2), ... ,table(Xn).有没有简单的语句一次性求解 ...
- Qt QTcpSocket 对连接服务器中断的不同情况进行判定
简述 对于一个C/S结构的程序,客户端有些时候需要实时得知与服务器的连接状态.而对于客户端与服务器断开连接的因素很多,现在就目前遇到的情况进行一下总结. 分为下面六种不同情况 客户端网线断开 客户端网 ...
- SAP Process Integration - High Level ERP/Integration Process --- Cargill Process Concept Design
Customer Industry: Commercial off-the-shelf (COTS) application ,, Food Ingredients or Agricultural S ...
- Mac 下 Homebrew(类似CentOS下的yum)简介及安装
Homebrew官网 http://brew.sh/index_zh-cn.html Homebrew是神马 linux系统有个让人蛋疼的通病,软件包依赖,好在当前主流的两大发行版本都自带了解决方案, ...
- CI框架 -- URI 路由
一般情况下,一个 URL 字符串和它对应的控制器中类和方法是一一对应的关系. URL 中的每一段通常遵循下面的规则:example.com/class/function/id/ 但是有时候,你可能想改 ...
- Java 訪问权限控制:你真的了解 protected keyword吗?
摘要: 在一个类的内部,其成员(包含成员变量和成员方法)是否能被其它类所訪问,取决于该成员的修饰词:而一个类是否能被其它类所訪问,取决于该类的修饰词.Java的类成员訪问权限修饰词有四类:privat ...
- ubuntu 16.04使用软件中心升级软件后桌面显示空白
转载:http://www.jb51.net/os/Ubuntu/472560.html 每次在ubuntu Software里进行Updates后(或者直接关机后),重启电脑后,桌面显示空白 解决办 ...
- unity3d 调用Start 注意
在unity3d中,同一个脚本被绑定到多个物体上的时候,只有active的物体才会调用void Start () 方法, 如果物体是NO Active 的状态,则不会调用Start,Awake也不会 ...
- ngx-bootstrap学习笔记(一)-popover
前言 这月做了个ng2模块,其中有个校验功能,当校验不通过时给出提示,项目中使用jQuery实现,今天才发现ngx-bootstrap已经有现成功能了,且可封装成通用组件放入shareModule,使 ...
- js requestAnimationFrame
requestAnimationFrame,Web中写动画的另一种选择 原文:https://www.cnblogs.com/Wayou/p/requestAnimationFrame.html H ...