Python爬虫包BeautifulSoup简介与安装(一)


Posted in Python onJune 17, 2018

先发官方文档的地址:官方文档

学习使用的书籍是Python网络数据采集(Ryan Mitchell著),大约是一些笔记的整理。

Beautiful Soup的简介

简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下:

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

安装

Beautiful Soup 3 目前已经停止开发,推荐在现在的项目中使用Beautiful Soup 4,不过它已经被移植到BS4了,也就是说导入时我们需要 import bs4 。所以这里我们用的版本是 Beautiful Soup 4.3.2 (简称BS4)。

书本中的源代码用的是Python3,但是据说 BS4 对 Python3 的支持不够好,所以我用的是 Python2.7。源码中也会相应地调整一些包的引入。

因为之前写过CNN等,需要在windows下配置环境,所以已经安装了anaconda。如果安装了anaconda的读者,可以直接使用pip安装,conda需要搜索一下,直接安装时不行的。

anaconda search -t conda beautifulsoup
conda install beautifulsoup4
pip install beautifulsoup4

如果想安装最新的版本,请直接下载安装包来手动安装,也是十分方便的方法。在这里我安装的是 beautifulsoup4 (4.5.1)

BeautifulSoup 3.2.1

BeautifulSoup 4.5.1

下载完成之后解压

运行下面的命令即可完成安装

sudo python setup.py install

有时候的安装方式会需手动安装 lxml,如果用conda安装会自动把依赖包给安装上。

pip install lxml

创建 Beautiful Soup 对象

首先导入bs4库

from bs4 import BeautifulSoup

用urlopen读取一段HTML的内容

import sys
if sys.version_info[0] == 2:
  from urllib2 import urlopen # Python 2
else:
  from urllib.request import urlopen # Python3

html = urlopen(http://www.pythonscraping.com/exercises/exercise1.html)

用读取的内容创建beautifulsoup 对象

bsObj = BeautifulSoup(html.read())
print(bsObj.h1)

此外我们也可以用本地的HTML文件来创建对象,例如

soup = BeautifulSoup(open('index.html'))

输出测试

print bsObj.h1
print bsObj.prettify()

<h1>An Interesting Title</h1>

<html>
 <head>
 <title>
  A Useful Page
 </title>
 </head>
 <body>
 <h1>
  An Interesting Title
 </h1>
 <div>
  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
 </div>
 </body>
</html>

以上便是输出结果,格式化打印出了它的内容,并且可以通过成员对象的方式获得解析后的HTML层次。

以上全部为本篇文章的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现给qq邮箱发送邮件的方法
May 28 Python
Python编码爬坑指南(必看)
Jun 10 Python
python实现实时监控文件的方法
Aug 26 Python
Python简单生成随机姓名的方法示例
Dec 27 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
python 获取字符串MD5值方法
May 29 Python
python+Splinter实现12306抢票功能
Sep 25 Python
Python Pywavelet 小波阈值实例
Jan 09 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
Django框架安装及项目创建过程解析
Sep 14 Python
python主线程捕获子线程的方法
Jun 17 #Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 #Python
Python实现自定义函数的5种常见形式分析
Jun 16 #Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 #Python
Python实现简单的文本相似度分析操作详解
Jun 16 #Python
Django跨域请求问题的解决方法示例
Jun 16 #Python
Python for循环生成列表的实例
Jun 15 #Python
You might like
php对数组排序代码分享
2014/02/24 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
Python常用列表数据结构小结
2014/08/06 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
在Python dataframe中出生日期转化为年龄的实现方法
2018/10/20 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
Python continue语句实例用法
2020/02/06 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
大学军训感言1000字
2014/02/25 职场文书
春季防火方案
2014/05/10 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
民主评议党员总结
2014/10/20 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
KVM基础命令详解
2022/04/30 Servers