- 概述
一、基本存储:存储至TXT或CSV
二、存储至MongoDB数据库
(1)下载安装MongoDB
(2)MongoDB的基本概念
(3)Python操作MongoDB数据库
(4)RoboMongo的安装和使用
概述
主要是介绍两种存储数据的方法:
(1)存储在文件中,包括TXT文件和CSV文件。
(2)存储在数据库中,包括MySQL关系数据库和MongoDB数据库。
返回
一、基本存储:存储至TXT或CSV
1、把数据存储至TXT
title = "This is a test sentence."
with open('title.txt', "a+") as f:f.write(title)f.close()
有时需要把几个变量写入TXT文件中,这时分隔符就比较重要了。可以采用Tab进行分隔,因为在字符串中一般不会出现Tab符号。我们可以使用join函数
将变量连接成一个字符串。
Python中有.join()
和os.path.join()
两个函数,具体作用如下:
. join()
: 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
os.path.join()
: 将多个路径组合后返回
>>
>> a=['1','2','3','4','5']
>> ' '.join(a)
1 2 3 4 5
>>';'.jion(a)
1-2-3-4-5
>>'.'.join(a)
1.2.3.4.5
>>
>>b='hello world'
>> ' '.join(b)
h e l l o w o r l d
>>'-' .join(b)
h-e-l-l-o- -w-o-r-l-d
>>':'.jion(b)
h:e:l:l:o: :w:o:r:l:d
>>
>>c=('1','2','3','4','5')
>>' '.join(c)
1 2 3 4 5
>>'-'.join(c)
1-2-3-4-5
>>':'.join(c)
1:2:3:4:5
>>
>>d={'name1':'a','name2':'b','name3':'c','name4':'d'}
>>' '.join(d)
name1 name2 name3 name4
>>'-'.join(d)
name1-name2-name3-name4
>>':'.join(d)
name1:name2:name3:name4
>>
>> import os
>>os.path.join('/hello/','good/date','datbody')
hello/good/date/datbody
2、把数据存储至CSV
CSV(Comma-Separated Values)是逗号分隔值的文件格式,其文件以纯文本的形式存储表格数据(数字和文本)。CSV文件的每一行都用换行符分隔,列与列之间用逗号分隔。
相对于TXT文件,CSV文件既可以用记事本打开,又可以用Excel打开,表现为表格格式。CSV的使用分为读取和写入两个方面,首先介绍CSV的读取。
假如我们创建了一个Excel文件,里面的表格是4 x 4的:
之后存为CSV,文件名为test1.csv,尝试从中读取数据:
import csv
with open('test1.csv', 'r', encoding='UTF-8') as csvfile:csv_reader = csv.reader(csvfile)for row in csv_reader:print(row)print(row[0])
结果如下:
可见,csv_reader把每一行数据转化成了一个列表(list),列表中从左至右的每个元素是一个字符串。接下来我们使用writerow()方法把一个列表直接写入一列中:
import csvoutput_list = ['1', '2', '3', '4']with open('test2.csv', 'a+', encoding='UTF-8', newline='') as csvfile:w = csv.writer(csvfile)w.writerow(output_list)
结果如下:
返回
二、存储至MongoDB数据库
在网络爬虫的时候需要存储大量数据,而且有时爬取返回的数据是JSON格式,这时选择使用NoSQL数据库存储就容易多了。NoSQL泛指非关系型数据库。相比于关系数据库MySQL,NoSQL自诞生之初就容易扩展,数据之间无关系,具有非常高的读写性能。
(1)下载安装MongoDB
MongoDB是一款基于分布式文件存储的数据库,本身就是为了为Web应用提供可扩展的高性能数据存储。因此,使用MongoDB存储网络爬虫再合适不过了。
下面介绍Windows系统下的安装:
首先下载MongoDB,下载windows的msi版本:
https://www.mongodb.com/download-center/community
然后,根据提示来安装,可以选择Complete安装完整版本,也可以选择Custom自己定制安装。为了方便,建议选择Complete。
然后我们会看到出现了两个文件夹,其中data文件夹是用来存放MongoDB数据库的(database),log文件夹用来存放数据库的操作记录。
接下来,就是启动MongoDB了,有两种方式,这里我介绍一种较为简单的方式,以Windows服务的方式打开。我们需要以管理员的身份运行cmd.exe,注意一定要是管理员的身份,输入:
net start MongoDB
然后看到下面的界面就代表已经成功启动了。
(2)MongoDB的基本概念
为了更好地理解MongoDB的基本概念,如文档、集合和数据库,我们可以将MongoDB和SQL的一些概念进行比较:
我们可以使用SQL的概念理解MongoDB,如MongoDB中的集合(collection)类似MySQL中的表格,文档(document)类似MySQL中的数据记录行(row),域(field)类似MySQL中的数据字段(column)
不过MongoDB和SQL数据库有很大区别,MongoDB的文档不需要设置相同的子段,并且相同的子段不需要相同的数据类型。
(3)Python操作MongoDB数据库
我们需要用pip安装PyMongo库,连接Python和MongoDB。在命令行输入:
pip intsall pymongo
安装完成后,可以尝试用python操作MongoDB,监测能否正常连接到数据库:
from pymongo import MongoClient
client = MongoClient('localhost',27017)
db = client.blog_database
collection = db.blog
首先,我们需要连接MongoDB客户端,然后连接数据库blog_database,如果该数据库不存在,就会创建一个数据库。接下来选择该数据库的集合blog,该集合不存在时也会创建一个。上述代码运行成功代表没有问题。
接下来,我们爬取博客主页的所有文章标题并存储至MongoDB数据库:
import requests
import datetime
from bs4 import BeautifulSoup
from pymongo import MongoClientclient = MongoClient('localhost',27017)
db = client.blog_database
collection = db.bloglink = "http://www.santostang.com/"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) \AppleWebKit/537.36 (KHTML, like Gecko) \Chrome/70.0.3538.25 \Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400 ','Host': 'www.santostang.com'}
r = requests.get(link, headers=headers)soup = BeautifulSoup(r.text, "lxml")
title_list = soup.find_all("h1", class_="post-title")
for eachone in title_list:url = eachone.a['href']title = eachone.a.text.strip()post = {"url": url, "title": title, "date":datetime.datetime.utcnow()}collection.insert_one(post)
我们使用insert_one()函数将字典加入集合collection中。
然后,我们进入bin文件夹,打开Mongo.exe程序,输入:
use blog_database
db.blog.find.pretty()
这样就能查询数据集合的数据了,如下图:
如果还想深入学习python操作MongoDB数据库,可以到PyMongo官方网站学习,地址为:
https://api.mongodb.com/python/current/index.html
(4)RoboMongo的安装和使用
RoboMongo是MongoDB的图形化管理工具,只要会使用mongo shell,就可以用RoboMongo。
如果你想可视化地管理MongoDB的数据,可以试一试使用RoboMongo。下面介绍怎么安装:
首先,进入https://robomongo.org/download下载RoboMongo:
下载完成后,我们会得到两个文件:
这里我们打开robo3t-1.3.1-windows-x86_64-7419c406.exe文件,根据提示安装。
然后在打开的界面选择Create,默认选项单击save:
之后,对于新创建的这个连接,单击Connect:
最后我们就可以看到数据库的所有信息了:
返回