首页 > 数据库 >爬虫之数据库存储

爬虫之数据库存储

时间:2023-04-07 11:25:13浏览次数:42  
标签:存储 worksheet 数据库 爬虫 Navicat 爬取 MySQL data1

在对于爬取数量数量较少时,我们可以将爬虫数据保存于CSV文件或者其他格式的文件中,既简单又方便,但是如果需要存储的数据量大,又要频繁访问这些数据时,就应该考虑将数据保存到数据库中了。目前主流的数据库有关系性数据库MySQL,以及非关系性数据库MongoDB和Redis等。这里我先来讲讲MySQL。

1、MySQL数据库

MySQl数据库是一个中小型关系型数据库,应用及其广泛,开源,高效,免费,可移植性好,现在有很多大厂还是在广泛使用MySQL数据库。

1.关系型数据库概述

关系型数据库,是建立在关系模型基础上的数据库,简单的讲,它由多张互相联结的二位表格组成,每一行是一条记录,每一列是一个字段,而表就是某个实体的集合,它展现的形式类似于EXCEL中常见的表格。

像SQLite,MySQL,Oracle,SQL Server DB2等都属于关系型数据库。

2.下载和安装MySQL数据库

这里常规的安装方法我不再赘述,如果后续有要求,我会补上。安装本地测试集成环境

3、数据库管理工具Navicat

MySQL安装好之后,下面就可以建立保存爬虫数据的数据库了。如果对MySQL数据库不是很精通,甚至连SQL语句都不会怎么写,那么Navicat绝对可以帮上忙。这是一个强大的数据库管理和设计工具,支持Windows,Mac OS,Linux系统。通过直观的GUI(图形用户界面),可以让用户方便的管理MySQL,Oracle,SQL Server,Mongo DB等数据库。

3.1 Navicat下载和安装

进入Navicat官网下载Navicat for MySQL,下载地址为:Navicat下载地址

3.2 连接MySQL数据库服务器

Navicat安装完成后,运行 Navicat。首先完成与MySQL数据库服务器的连接。单机“连接”按钮,在弹出的“新建连接”对话框中输入MySQL配置信息,如连接名为mysql(名称自定义),密码为安装MySQL时设置的密码,其余配置默认设置,单击“连接测试”按钮,确保连接成功,最后单机“确定”按钮,完成与MySQl服务器的连接。

3.3 新建数据库

与MySQL数据库服务器建立连接后,就可以操作MySQL数据库了。新建一个数据库,用于存储爬取的信息。右击连接名mysql,在弹出的快捷菜单中,选择“新建数据库”命令,输入数据库名,设置字符集和排序规则,单机“确定”。

3.4 新建表

在新建的数据库crawler中新建一个用于存储爬取测试的表test。字段这里根据爬取的内容设置,比如:id的设置为int型,主键,不是null,自动递增,其余字段均为varchar型。

Python爬虫之数据写入

#写入到Excel
import xlsxwriter

#创建文件,并添加一个工作表
workbook=xlsxwriter.Workbook('demo.xlsx')
worksheet=workbook.add_worksheet()

#在指定位置写入数据
worksheet.write("A1","这是A1的数据")
worksheet.write("A2","这是A2的数据")

#关闭表格文件
workbook.close()

 

#爬取便民查询网常用账号,并写入到Excel
import re
import requests
import xlsxwriter

headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Ap\
pleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Sa\
fari/537.36"
}

response=requests.get("http://changyongdianhuahaoma.51240.com/",headers=headers).text

pat1=r'<tr bgcolor="#EFF7F0">[\s\S]*?<td>(.*?)</td>[\s\S]*?<td>[\s\S]*?</td>[\s\S]*?</tr>'
pat2=r'<tr bgcolor="#EFF7F0">[\s\S]*?<td>[\s\S]*?</td>[\s\S]*?<td>(.*?)</td>[\s\S]*?</tr>'

pattern1=re.compile(pat1)
pattern2=re.compile(pat2)

data1=pattern1.findall(response)
data2=pattern2.findall(response)

resultlist=[]

#创建表格
workbook=xlsxwriter.Workbook("demo2.xlsx")
worksheet=workbook.add_worksheet()

for i in range(0,len(data1)):
	resultlist.append(data1[i]+data2[i])

	#写入数据
	worksheet.write("A"+str(i+1),data1[i])
	worksheet.write("B"+str(i+1),data2[i])

print(resultlist)
# 关闭表格资源,这样才会完成创建
workbook.close()

 

#爬取便民查询网常用账号,并写入到Mysql 
#注意:需要提前创建对应字段的数据库
import re
import requests
import pymysql

#建立数据库连接
db=pymysql.Connect(host="localhost",port=3306,user="root",passwd="AA123456",db="spider_test",charset="utf8")
cursor=db.cursor()


#爬取数据
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Ap\
pleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Sa\
fari/537.36"
}

response=requests.get("http://changyongdianhuahaoma.51240.com/",headers=headers).text


#处理数据
pat1=r'<tr bgcolor="#EFF7F0">[\s\S]*?<td>(.*?)</td>[\s\S]*?<td>[\s\S]*?</td>[\s\S]*?</tr>'
pat2=r'<tr bgcolor="#EFF7F0">[\s\S]*?<td>[\s\S]*?</td>[\s\S]*?<td>(.*?)</td>[\s\S]*?</tr>'

pattern1=re.compile(pat1)
pattern2=re.compile(pat2)

data1=pattern1.findall(response)
data2=pattern2.findall(response)

#清空数据库原来的内容
sqll="delete from tel"
cursor.execute(sqll)
db.commit()

resultlist=[]
for i in range(0,len(data1)):
	resultlist.append(data1[i]+data2[i])

	sql="insert into tel(name,phone) values('"+data1[i]+"','"+data2[i]+"')"
	cursor.execute(sql)

print(resultlist)

db.commit()
db.close()

标签:存储,worksheet,数据库,爬虫,Navicat,爬取,MySQL,data1
From: https://www.cnblogs.com/q-q56731526/p/17295588.html

相关文章

  • java简易爬虫Crawler
    这是我的第一个java爬虫,比较简单,没有队列,广度优先算法等,用list集合代替了队列。而且只爬取一个网址上面的图片,并不是将网址中的链接<href>加入队列,然后下载一个网址一个网址下载其中的图片。不过,这是前期的,处于摸索阶段,后期学完队列和广算后,在涉及一点多线程,肯定会比想象中的更......
  • android之简单数据存储Preference
    这里的持久化其实就是本地配置文件的读写,实现方法是通过Activity.getPreferences(int)获取SharedPreferences对象,然后操作配置文件的读写,值得注意的是以下几点:1)Activity.getPreferences(intmode)等价于Content.getSharedPreferences(Stringfilename,intmod......
  • 如何利用代理IP优化网络爬虫
    网络爬虫会自动扫描互联网,搜集大量数据并将它们组织起来。但是,许多网站都采取了反爬虫策略,限制了网络爬虫的活动。这时候,代理IP就起到了关键作用。代理IP可以让网络爬虫“变身”为不同的可以合法访问网站的用户,从而绕过网站的反爬虫机制,保护了网络爬虫的稳定运行。而且,使用代理IP......
  • pg数据库查找外键但没有索引的sql
    SELECTpg_index.indexrelid::regclass,'createindex'||relname||'_'||array_to_string(column_name_list,'_')||'_idxon'||conrelid||'('||array_to_string(column_name_list,......
  • Android存储用户登录信息最好的方式之一-Shared Preferences
    对于Android应用程序,存储用户登录信息的最佳方式是使用SharedPreferences。SharedPreferences是Android提供的一个轻量级存储机制,可以存储简单的键值对数据。它非常适合存储用户设置、用户偏好和其他应用程序数据,包括登录信息。SharedPreferences具有以下优点:轻量级:Shared......
  • scrapy通用爬虫及反爬技巧
    一、通用爬虫通用爬虫一般有以下通用特性:爬取大量(一般来说是无限)的网站而不是特定的一些网站。不会将整个网站都爬取完毕,因为这十分不实际(或者说是不可能)完成的。相反,其会限制爬取的时间及数量。在逻辑上十分简单(相较于具有很多提取规则的复杂的spider),数据会在另外的阶......
  • HDFS存储介绍
    1:datanode数据节点-存放数据的2:namenode 名字节点-主要是存放元数据的,比如:文件大小 名称存放位置等3:secondarynamenode是存放fimage信息的,具体解释如下:namenode   fimage   editlognamenode中每次有信息变化的时候,都会放到editlog中,然后由editlog同步......
  • 开源云原生存储rook:块存储快速入门实战
    BlockDevices(块存储)在Rook中,块存储有两种存储类型:副本存储和纠删码存储。这两种存储类型都可以在Kubernetes集群中使用,可以通过在CephBlockPool中指定不同的存储类别来实现。「副本存储:」 是一种基于副本的存储方式,其中数据被复制到多个节点上,以提高数据的可靠性和可......
  • 数据库系统原理之数据管理技术的发展
    数据管理技术的发展第一节数据库技术发展概述数据模型是数据库系统的核心和基础以数据模型的发展为主线,数据库技术可以相应地分为三个发展阶段:第一代的网状、层次数据库系统第二代的关系数据库系统新一代的数据库系统一、第一代数据库系统层次数据库系统层次模......
  • vcenter的一个报错“数据存储与数据中心具有相同的url”
     解决方案:1、虚拟机应该不是全新安装的,尝试新安装一个虚拟机,试试看2、应该是主机数据中心有重复,我重新创建了个数据中心,在另一个数据中心,可以将此主机进行添加!我感觉应该是主机所在的数据中心有数据重复了,也就是那个url。3、原来添加过这个节点,如果该vc里注册过模版,就会保......