【Python爬虫】数据存储

系统 586 0

数据存储


1.存储至TXT

a+为Python文件的读写模式,表示将对文件使用附加读写方式打开,如果该文件不存在,就会创建一个新文件。

一般在读取文件的时候可以使用r方式,如果文件不存在,就会返回错误,而且无法向该文件中写入数据,这样就保证了读取文件的可靠性。

综上所述,地址可以写成如下3种形式:

(1)with open('C:\\you\desktop\\title.txt',"a+") as f:

(2)with open(r'C:\you\desktop\title.txt',"a+") as f:

(3)with open('C:/you/desktop/title.txt',"a+") as f:

有时候需要把几个变量写入TXT文件中,这时分隔符就比较重要了,可以采用Tab进行分隔,因为在字符串中一般不会出现Tab符号。用'\t'.join()将变量链接成一个字符串。

            
              output = '\t'.join(['name','title','age','gender'])
with open('./test.txt', "a+") as f:
    f.write(output)
    f.close()
            
          

2.存储至CSV

CSV文件的每一行都用换行符分隔,列与列之间用逗号分隔。

            
              #!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@File  : Save01.py
@Author: Xinzhe.Pang
@Date  : 2019/7/7 0:42
@Desc  : 
"""
import csv

output_list = ['1', '2', '3', '4']
with open('test2.csv', 'a+', encoding='UTF-8', newline='') as csvfile:
    w = csv.writer(csvfile)
    w.writerow(output_list)

with open('test2.csv', 'r', encoding='UTF-8') as csvfile:
    csv_reader = csv.reader(csvfile)
    for row in csv_reader:
        print(row)
        print(row[0])

            
          

3.存储至MySQL数据库

首先用pip安装mysqlclient库,连接Python和MySQL。

            
              #!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@File  : Save02.py
@Author: Xinzhe.Pang
@Date  : 2019/7/7 23:41
@Desc  : 
"""
import MySQLdb

conn = MySQLdb.connect(host='***.***.***.***', user='*****', passwd='******', db='******', charset='utf8')
cur = conn.cursor()
cur.execute("INSERT INTO urls(url,content) VALUES('www.google.com','Google搜索')")
cur.close()
conn.commit()
conn.close()

            
          

其中,conn=MySQLdb.connect()用于创建数据库的连接,cur=conn.cursor()通过获取的数据库连接conn下的cursor()方法来创建游标。之后,通过游标cur操作execute()方法可以写入纯SQL语句。

最后,在完成对MySQL数据库的操作后,记得关闭游标cur和连接conn。

将爬取的博客标题和URL保存到数据库中:

            
              #!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@File  : Save03.py
@Author: Xinzhe.Pang
@Date  : 2019/7/9 23:21
@Desc  : 
"""
import requests
from bs4 import BeautifulSoup
import MySQLdb

conn = MySQLdb.connect(host='**.**.**.**', user='****', passwd='***', db='****', charset='utf8')
cur = conn.cursor()

link = "http://www.santostang.com/"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
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()
    cur.execute("INSERT INTO urls(url,content) VALUES(%s, %s)", (url, title))
cur.close()
conn.commit()
conn.close()

            
          

4.存储至MongoDB数据库

MongoDB是一款基于分布式文件存储的数据库。在Windows中,data文件夹用来存放MongoDB数据,db文件夹用来存放MongoDB的数据库,log文件夹用来存放数据库的操作记录。

使用MongoDB有两种启动方式,一种是以程序的方式打开,另一种是以Windows服务的方式打开。

SQL与MongoDB术语的比较
SQL术语 MongoDB术语 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins   表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

 

 

 

 

 

 

 

 

 

MongoDB的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型。

            
              #!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@File  : Save04.py
@Author: Xinzhe.Pang
@Date  : 2019/7/9 23:41
@Desc  : 
"""
import requests
import datetime
from bs4 import BeautifulSoup
from pymongo import MongoClient

client = MongoClient('****', 27017)
db = client.blog_database
collection = db.blog

link = "http://www.santostang.com/"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
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)

            
          

【Python爬虫】数据存储_第1张图片

5.使用图形化管理工具

RoboMongo是MongoDB的图形化管理工具,只要会使用mongo shell,就可以使用RoboMongo。

【Python爬虫】数据存储_第2张图片

参考资料:《Python网络爬虫从入门到实践》


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请请扫描上面二维码支持博主1元、2元、5元等您想捐的金额吧,狠狠点击下面给点支持吧

发表我的评论
最新评论 总共0条评论