python网页数据抓取(先导入PythonCSV模块的使用方法及获取方法(图))
优采云 发布时间: 2021-10-21 15:22python网页数据抓取(先导入PythonCSV模块的使用方法及获取方法(图))
获取我们的数据:
# 获取 Class 对应的标签
name_box = soup.find('h1', attrs={'class': 'name'})
一旦我们得到了标签,我们就可以使用 text 方法来获取里面的内容:
name = name_box.text.strip() # strip() 用来移除首尾的空白符
print name
同样,使用以下方法获取价格:
# 获取价格
price_box = soup.find('div', attrs={'class':'price'})
price = price_box.text
print price
当您运行程序时,您应该能够看到标准普尔 500 指数的价格:
导出为 ExcelCSV 格式
接下来,我们需要导出采集的数据。在导出文件格式的选择上,Excel的CSV逗号分隔文档是一个不错的选择,可以直接通过Excel打开,进行简单的数据处理。
但是我们需要先导入Python CSV模块,请在您的模块导入区添加以下代码:
import csv
from datetime import datetime
在代码的最底部,添加以下代码:
# 添加内容,这样就不会替换掉老数据了
with open('index.csv', 'a') as csv_file:
writer = csv.writer(csv_file)
writer.writerow([name, price, datetime.now()])
现在当你允许该程序时,你可以看到一个 index.csv 文件,用 Excel 打开它,你可以看到类似的数据:
现在您可以使用该程序为您获取标准普尔 500 指数的价格数据。
更近一步(高级用户)
多个索引
抓取索引对您来说还不够有趣,对吧?我们可以尝试同时提取多个索引。
首先,将 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)
# 使用 beautiful soap 解析 html 并存储在变量 `soup` 中。
soup = BeautifulSoup(page, 'html.parser')
# 拿出 标签的 name 并获取它的值
name_box = soup.find('h1', attrs={'class': 'name'})
name = name_box.text.strip() # strip() 用来一处开始和结尾的空白
# 获取索引的 price
price_box = soup.find('div', attrs={'class':'price'})
price = price_box.text
# 保存数据到元组
data.append((name, price))
另外,修改保存部分,逐行保存数据。
# 以添加模式打开一个 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 非常简单,非常适合小规模的网络爬虫。但是,如果您对更*敏*感*词*地抓取数据感兴趣,则应该考虑以下其他替代方案:
Scrapy 是一个强大的 Python 爬虫框架,它试图将一些公共 API 集成到您的代码中。数据检索的效率远高于页面爬取的效率。例如,查看 Facebook Graph API,它将帮助您获取 Facebook 页面的隐藏数据。当数据量过大时,可以考虑使用类似于 MySQL 的数据库后端来存储您的数据。采用 DRY 方法
DRY 的意思是“不要重复自己”,并尝试像这个人一样自动化你的日常工作。其他一些有趣的项目可能会考虑跟踪您的 Facebook 好友的活跃时间(当然在他们同意的情况下),或者获取论坛主题列表并尝试自然语言处理(这是当前人工智能的热门话题)!
如果您有任何问题,请随时在下面留言。
参考\
\
本文所有翻译仅供学习交流使用,转载请务必注明译者、出处及本文链接
我们的翻译工作符合 CC 协议。如果我们的工作侵犯了您的权益,请及时与我们联系。