网页数据抓取软件(Python代码段落并提取相应值__box)
优采云 发布时间: 2021-10-19 17:02网页数据抓取软件(Python代码段落并提取相应值__box)
代码段并提取对应值
name_box = soup.find('h1', attrs={'class':'name'})
拿到label后,我们可以使用name_box的text属性来获取对应的值
name = name_box.text.strip() # strip() 函数用于去除前后空格
印刷名称
使用类似的方法,我们可以得到股票指数价格数据。
# 获取股指价格数据
price_box = soup.find('div', attrs={'class':'price'})
价格 = price_box.text
印刷价格
当您运行程序时,您应该能够看到程序输出标准普尔 500 指数的当前价格。
以 Excel CSV 格式导出数据
我们已经学习了如何获取数据,现在我们将学习如何存储数据。Excel 的逗号分隔数据格式 (CSV) 是一个不错的选择。这样,我们就可以在 Excel 中打开数据文件进行查看和进一步处理。
在此之前,我们需要导入 Python 的 csv 模块和 datetime 模块。Datetime 模块用于获取数据记录时间。请将以下代码行插入您的导入代码部分。
导入 csv
从日期时间导入日期时间
在代码底部,添加将数据写入 CSV 文件的代码。
#以“添加”方式打开一个csv文件,保证文件的原创信息不被覆盖
使用 open('index.csv','a') 作为 csv_file:
writer = csv.writer(csv_file)
writer.writerow([名称, 价格, datetime.now()])
现在,如果您运行该程序,您应该能够导出一个 index.csv 文件。可以在Excel中打开文件,看到如图所示的一行数据。
所以如果你每天运行这个程序,你就可以轻松获得标准普尔指数价格,而不必像以前那样在网站上搜索。
更进一步(高级用法)
多个股票指数
抓取一个股指信息对你来说还不够,对吧?我们可以尝试同时提取多个股指信息。首先,我们需要修改 quote_page 以将其定义为 URL 数组。
quote_page = [':IND',':IND']
然后我们把代码的数据提取部分改成了for循环。这个循环可以一个一个地处理URL,并将变量data中的所有数据以元组类型存储。
# for 循环
数据 = []
对于quote_page中的pg:
# 检索网站并返回HTML代码,并将其存储在变量'page'中
页 = urllib2.urlopen(pg)
# 使用 beautifulSoup 解析 HTML 代码并将其存储在变量 `soup` 中
汤 = BeautifulSoup(page,'html.parser')
# 获取“名称”类别
代码段并提取对应值
name_box = soup.find('h1', attrs={'class':'name'})
name = name_box.text.strip() # strip() 用于去除开头和结尾
# 获取股指价格数据
price_box = soup.find('div', attrs={'class':'price'})
价格 = price_box.text
# 使用元组类型存储数据
data.append((名称,价格))
并且,修改保存部分,逐行保存数据
#以“添加”方式打开一个csv文件,保证文件的原创信息不被覆盖
使用 open('index.csv','a') 作为 csv_file:
writer = csv.writer(csv_file)
# for 循环
对于名称,数据中的价格:
writer.writerow([名称, 价格, datetime.now()])
重新运行程序,应该可以同时提取两个股指价格信息了!
先进的爬虫技术
BeautifulSoup 库使用方便,可以很好的做少量的网站爬取。但是如果你对大量的爬取信息感兴趣,可以考虑其他方法:
1. Scrapy,一个强大的 Python 数据捕获框架。
2. 您可以尝试将一些公共应用程序编程接口 (API) 集成到您的代码中。这种获取数据的方法远比网络爬行高效。例如,您可以尝试 Facebook Graph API。该 API 可以帮助您获取 Facebook 网站 上未显示的隐藏信息。
3. 如果数据量太大,可以考虑使用类似于MySQL的数据库后端来存储数据。
采取“不要重复”的方法
DRY 是英语中“不要重复你做过的事情”的缩写。您可以尝试像链接中的人一样自动化您的日常工作。同时,你也可以考虑其他有趣的项目,比如掌握你的 Facebook 好友的在线时间(当然他们同意),或者在论坛中获取讲座主题列表来尝试自然语言处理(这是当前人工智能的热门话题)!
原文链接
本文观点仅代表作者本人。36氪是信息发布平台,36氪仅提供信息存储空间服务。