一.关于BeautifulSoup:
BeautifulSoup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下:
Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。
二.BeautifulSoup在windows系统下的的安装
在学习中使用BeautifulSoup 4版本
-
首先,在网上将BS4的压缩包下载下来,并解压
-
打开cmd控制台,输入cd+“空格”+文件地址
-
回车
-
输入文件按所在磁盘,比如"E:"
这样就进入了指定的路径 -
执行安装文件,输入“setup.py install”,就可以进行安装了
-
我们可以测试一下有没有安装成功:
-
如图,在Python下输入from bs4 import BeautifulSoup,如果没出错,就是安装成功了。
三.url和urllib
- 关于URL,百度百科的定义是这样:
url是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
- URL的组成:
例如书中给出的例子:
“http://www.pythonscraping.com/pages/page1.html”
这个URL中:
第一部分"http" : 协议部分,表示超文本传输协议;
第二部分"www.pythonscraping.com" : 文件所在的服务器的名称或IP地址;
第三部分pages/page1.html :到达这个文件的路径和文件本身的名称 - 关于 urllib库:
Python3中将python2.7的urllib和urllib2两个包合并成了一个urllib库,其主要包括一下模块:
urllib.request 请求模块
urllib.error 异常处理模块
urllib.parse url解析模块
urllib.robotparser robots.txt解析模块
四.运行BeautifulSoup
- 首先,从urllib.request 请求模块中,引入urlopen:
from urllib.request import urlopen
- 引入BeautifulSoup:
from bs4 import BeautifulSoup
- 建立一个名为html的对象,利用urlopen方法获取url ; 再调用html.read()获取网页的HTML内容,这样就可以把HTML内容传到名为bsObj的BeautifulSoup对象:
html=urlopen("http://www.pythonscraping.com/pages/page1.html")
bsObj=BeautifulSoup(html.read())
- 输出想要获取的结果:
print(bsObj.h1)
输出结果为:
An Interesting Title
输出的正是这个页面的标题
5.结果分析:
-
首先,我们去看看书中提供的url指向一个什么样的东西,在浏览器中输入所给的url就可以看到:
-
利用Chrome浏览器的开发者工具(F12即可),我们可以看到它的HTML代码:
-
可以看出,我们从网页中提取的h1标签被嵌在BeautifulSoup对象bsObj的第二层:
(html->body->h1),
但是,当我们从对象中提取h1标签,可以直接调用它:
bsObj.h1
其实,下列所有方法都可以调用它:
bsObj.html.body.h1
bsObj.body.h1
bsObj.html.h1
这也正体现了BeautifulSoup这个库的强大 -
同样的,如果想要获取别的标签内容,使用相同的方法即可,还是比较简单的,例如,我们将代码改为:
print(bsObj.title)
就可以获取标签title的内容:
- 如图,输出结果为 "A Useful Page"