Python爬虫包BeautifulSoup简介与安装(一)
作者:SuPhoebe 发布时间:2021-07-25 05:06:10
先发官方文档的地址:官方文档
学习使用的书籍是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层次。
以上全部为本篇文章的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
来源:https://blog.csdn.net/u013007900/article/details/53764278


猜你喜欢
- 昨天又翻了下前段时间WD内部培训的幻灯片,发现了kejun推荐的一篇好文:Javascript Closures,看了之后受益匪浅。这篇文章
- 一、准备工作安装最新的Go1、由于Google被墙的原因,如果没有VPN的话,就到这里下载:http://www.golangtc.com/
- 求:机房、线上有多台主机,为了保障安全,需要定期修改密码。若手动修改,费时费力易出错。程序应该满足如下需求 :1、在现有的excel密码表格
- 有如下的代码:class p1:def __init__(self,a,b):print("init in p1")se
- python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法
- 摘要:百度百科上是这样介绍二维码的:二维码(Quick Response Code),又称二维条码,它是用特定的几何图形按一定规律在平面(二
- 文件的一般操作步骤打开文件或创建新文件:使用相应的编程语言和对应的库或模块打开一个已经存在的文件或者创建新文件。读取文件内容或向文件中写入内
- 有时候希望可以用js另开新窗口,但用window.open方法打开窗口总是被浏览器阻止,可以用下面的方法打开新窗口而不会遭到拦截1.新添加一
- 说明:本次代码是在Linux下执行的,windows也可以用,把添加用户密码的命令改成windows的就ok了用Python新建用户并产生随
- heapq 模块提供了堆算法。heapq是一种子节点和父节点排序的树形数据结构。这个模块提供heap[k] <= heap[2*k+1
- 怀旧滤镜实现原理不管是荣耀华为手机还是其他的手机,我们都可以找到相机中的怀旧效果,这是手机中常用的一种滤镜效果。怀旧风格的设计主要是在图像的
- 1.bisect模块概述bisect是python的内置模块, 用于有序序列的插入和查找。 插入的数据不会影响列表的排序, 但是原有列表需要
- 本文主要利用python的相关模块进行批量ping ,测试IP连通性。下面看具体代码(python3):'''遇到问
- 概述Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64 就是一种基于 64 个可打印字符来表示二进制数据的
- 在我发表上一篇《Zen Coding: 一种快速编写HTML/CSS代码的方法》之后,有网友表示不知道怎么在Dreamweaver上使用ze
- 前言Pytorch、Tensoflow等许多深度学习框架集成了大量常见的网络层,为我们搭建神经网络提供了诸多便利。但在实际工作中,因为项目要
- MySQL GUI工具很多,本文就常用的Navicat for MySQL与MySQL-Front的特色功能做一个详细介绍与比较。(一)My
- 一、动机(Motivate)在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将
- win10,直接使用 pip install tesserocr 的命令如果输出如下错误提示:tesserocr.cpp(596): fat
- 前言在golang中,当浮点数超过一定数值的时候,golang会把它弄成科学计数法的形式进行显示(好像只要大于七位数就变成科学计数法了)va