本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

wzatv:范例+代码带你上手Python网页抓取BeautifulSoup库

时间:2017-08-04 02:50来源:本港台直播 作者:j2开奖直播 点击:
大数据文摘作品,转载要求见文末 编译 | 元元、康璐 网络上的信息是任何人穷极一生也无法全部了解的。你需要的或许不是简单的获得信息,而是一个可以收集,整理,分析信息,并

大数据文摘作品,转载要求见文末

编译 | 元元、康璐

网络上的信息是任何人穷极一生也无法全部了解的。你需要的或许不是简单的获得信息,而是一个可以收集,整理,分析信息,并且具有拓展性的方法。

你需要网页抓取(Web scraping)技术。

网页抓取可以自动提取网站上的数据信息,并把这些信息用一种容易理解的格式呈现出来。网页抓取应用广泛, 在本教程中我们将重点讲解它在金融市场领域的运用。

如果你是个投资达人,每天查找收盘价一定是个烦心事,更不用提数据来源于多个网站的时候。我们可以用代码写一个网络爬虫 (web scraper) 来帮助我们自动从网站获取股指信息,从而大大简化数据提取过程。

我们开始吧。

我们采用Python进行网页数据抓取,并采用简单强大的BeautifulSoup 库完成分析。

对于Mac用户来说, OS X操作系统已经预先安装好Python。您需要打开终端并输入python --version。您应该可以看到python的版本为2.7.x。

对于Windows用户而言,请由官方网站安装Python。

下一步,我们需要利用pip命令获取BeautifulSoup 库。Pip 是Python中管理库和包的工具。

在终端中输入:

注意:如果您不能运行上面的命令,在每行前面加上sudo 再试试。

基础知识

在学习代码之前,让我们先来了解HTML的基础知识和网页抓取的基本规则。

标签

如果你已经充分理解HTML标签,请跳过这一部分

这就是HTML网页的基本语法。

每一对<tag>标签内包含网页的一段代

1. <!DOCTYPE html>: HTML 文件必须以文件类型声明开头

2. HTML文件包含在<html>和<html/>标签之间

3. 元(meta)和脚本()声明包含在<head>和</head>标签之间

4. 网站上可见的部分包含在<body>和</body>标签之间

5. <h1>和<h6>标签之间的部分为网站标题

6. <p>标签用于定义段落

其他有用的标签还有:<a>是超链接的标签,<table>是表格的标签,<tr>是表格行的标签,<td>是表格列的标签。

并且,HTML标签常常带有标识(id) 或类(class)属性,标识码用来唯一的识别某个HTML标签,并且标识码的值在整个HTML文件中是唯一的。类属性可以定义同类HTML标签相同的样式。我们可以利用标识码和类来帮助我们定位想要的数据。

如果您想了解关于HTML标签,标识码和类的更多内容,请参考W3Schools 出品的教程。

网络抓取规则

1. 在您进行网络抓取时,你应该查看网站的条款和条件。请仔细阅读数据合法使用声明。通常情况下,您抓取的数据不能商用。

2. 您的程序不要过于频繁的向网站发出数据请求(也被称为垃圾请求),这种做法可能会使网站崩溃。请确保您的程序行为合理(也就是说和人类的行为相似)。对一个网站每秒进行一次数据请求是比较好的做法。

3. 网站的布局随时间不断变化,所以请您确保时常重新访问网站,如果需要的话,修改抓取代码。

查看页面

让我们以Bloomberg Quote网站的其中一页为例。

作为一个关注股票市场的投资人,我们想要从这一页得到股指名称(标准普尔500指数)和价格。首先,右键点击打开浏览器的检查器(inspector),查看网页。

请尝试把光标放在股指价格上,你应该可以看到价格周围的蓝色方块,如果你点击这个方块,atv,就可以选中浏览器控制台相应的HTML代码。

从结果可以看出,价格信息包含在好几层HTML标签中:<div> → <div> → <div>.

同样的,如果你把光标放在名称“标准普尔指数“上,并点击,可以看到控制台里这个信息包含在标签< iv>及< h1>之内。

现在我们知道如何依靠类标签找到我们需要的数据了。

学习代码

现在我们知道所需数据的位置,我们可以开始写代码构建我们的网络爬虫了。现在请打开您的文字编辑工具!

首先我们要导入我们要用的各种库。

# 导入各种库

import urllib2

from bs4 import BeautifulSoup

然后,我们定义一个变量(quote_page)并赋值为网站的网址链接。

# 赋值网站链接

quote_page = ‘:IND'

接着,利用Python的urllib2库获取方才定义的网址quote_page的 HTML网页信息。

# 检索网站并获取html代码,存入变量”page”中

page = urllib2.urlopen(quote_page)

最后,我们把网页解析为 BeautifulSoup格式,以便我们用BeautifulSoup 库来分析网页。

# 用 beautifulSoup 解析HTML代码并存入变量“soup”中`

soup = BeautifulSoup(page, ‘html.parser’)

现在我们有了包含整个网页的HTML代码的变量soup。我们就从soup开始着手提取信息。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容