python网页数据抓取(如何依靠Python的urllib2库获取方才定义的HTML网页信息)

优采云 发布时间: 2022-04-04 13:11

  python网页数据抓取(如何依靠Python的urllib2库获取方才定义的HTML网页信息)

  .

  同样,如果您将光标放在名称“S&P”上并单击,您可以看到此信息收录在选项卡和控制台中。

  

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

  学习编码

  现在我们知道所需的数据在哪里,我们可以开始编写代码来构建我们的网络爬虫。立即打开您的文本编辑工具!

  首先,我们必须导入我们将要使用的各种库。

  # 导入各种库

import urllib2

from bs4 import BeautifulSoup

  然后,我们定义一个变量(quote_page)并为其分配网站的URL链接。

  # 赋值网站链接

quote_page = ‘http://www.bloomberg.com/quote/SPX:IND'

  接下来,使用Python的urllib2库获取刚刚定义的URLquote_page的HTML页面信息。

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

page = urllib2.urlopen(quote_page)

  最后,我们将网页解析成 BeautifulSoup 格式,这样我们就可以使用 BeautifulSoup 库来解析网页了。

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

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

  现在我们有了收录整个网页的 HTML 代码的变量汤。我们开始从汤中提取信息。

  不要忘记我们的数据存储在唯一的层中。BeautifulSoup 库中的 find() 函数可以帮助我们提取不同层次的内容。我们需要的 HTML 类“名称”在整个页面中是唯一的,因此我们可以简单地查找它

  # 获取“名称”类的代码段落并提取相应值

name_box = soup.find(‘h1’, attrs={‘class’: ‘name’})

  我们拿到标签后,就可以使用name_box的text属性来获取对应的值了

  name = name_box.text.strip() # strip() 函数用于去除前后空格

print name

  使用类似的方法,我们可以得到股票指数的价格数据。

  # 获取股指价格数据

price_box = soup.find(‘div’, attrs={‘class’:’price’})

price = price_box.text

print price

  

  运行程序时,您应该会看到程序输出当前标准普尔 500 指数的价格。

  以 Excel CSV 格式导出数据

  现在我们已经学会了如何获取数据,是时候学习如何存储数据了。Excel 逗号分隔数据格式 (CSV) 是一个不错的选择。这使我们能够在 Excel 中打开数据文件以进行查看和进一步处理。

  在此之前,我们需要导入 Python 的 csv 模块和 datetime 模块。Datetime 模块用于获取数据记录时间。请将以下代码行插入您的导入代码部分。

  import csv

from datetime import datetime

  在代码的最底部,添加将数据写入 CSV 文件的代码。

  # 以“添加”模式打开一个csv文件, 以保证文件原有信息不被覆盖

with open(‘index.csv’, ‘a’) as csv_file:

writer = csv.writer(csv_file)

writer.writerow([name, price, datetime.now()])

  

  现在,如果您运行该程序,您应该能够导出 index.csv 文件。您可以在Excel中打开文件,看到有一行数据,如图所示。

  所以如果你每天运行这个程序,你可以很容易地得到标准普尔的价格,而不必像以前那样在 网站 上翻找。

  更进一步(高级用法)

  多个股票指数

  抓住一个股票指数对你来说还不够,对吧?我们可以尝试同时提取多个股票指数信息。首先,我们需要修改 quote_page 以将其定义为 URL 数组。

  quote_page = [‘http://www.bloomberg.com/quote/SPX:IND', ‘http://www.bloomberg.com/quote/CCMP:IND']

  然后我们把代码中的数据提取部分改成了for循环。这个循环可以一个一个地处理 URL,并将变量 data 中的所有数据存储为一个元组。

  # for 循环

data = []

for pg in quote_page:

# 检索网站并返回HTML代码,存入变量‘page’

page = urllib2.urlopen(pg)

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

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

# 获取“名称”类的代码段落并提取相应值

name_box = soup.find(‘h1’, attrs={‘class’: ‘name’})

name = name_box.text.strip() # strip() is used to remove starting and trailing

# 获取股指价格数据

price_box = soup.find(‘div’, attrs={‘class’:’price’})

price = price_box.text

# 用元组类型存储数据

data.append((name, price))

  并且,修改save部分,逐行保存数据

  # 以“添加”模式打开一个csv文件, 以保证文件原有信息不被覆盖

with open(‘index.csv’, ‘a’) as csv_file:

writer = csv.writer(csv_file)

# for 循环

for name, price in data:

writer.writerow([name, price, datetime.now()])

  再次运行程序,应该可以同时提取两个股指的价格信息了!

  先进的抓取技术

  BeautifulSoup 库使用简单,可以很好地完成少量的 网站 抓取。但是如果你对大量抓取的信息感兴趣,你可以考虑其他方法:

  

  DRY 是“不要重复你所做的事情”的缩写。您可以尝试像链接中的这个人一样自动化您的日常工作。您还可以考虑其他有趣的项目,例如跟踪您的 Facebook 朋友何时在线(当然是在他们同意的情况下),或者在论坛中获取讲座主题列表以尝试自然语言处理(这是当前的热门话题在人工智能中)!

  原文链接:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线