python网页数据抓取(如何依靠Python的urllib2库获取方才定义的HTML网页信息)
优采云 发布时间: 2022-04-04 13:11python网页数据抓取(如何依靠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 朋友何时在线(当然是在他们同意的情况下),或者在论坛中获取讲座主题列表以尝试自然语言处理(这是当前的热门话题在人工智能中)!
原文链接: