浦东区建设工程监督网站,优化网站建设seo,雅布设计介绍,青岛网站制作排名在对于爬取数量数量较少时#xff0c;我们可以将爬虫数据保存于CSV文件或者其他格式的文件中#xff0c;既简单又方便#xff0c;但是如果需要存储的数据量大#xff0c;又要频繁访问这些数据时#xff0c;就应该考虑将数据保存到数据库中了。目前主流的数据库有关系性数据…在对于爬取数量数量较少时我们可以将爬虫数据保存于CSV文件或者其他格式的文件中既简单又方便但是如果需要存储的数据量大又要频繁访问这些数据时就应该考虑将数据保存到数据库中了。目前主流的数据库有关系性数据库MySQL以及非关系性数据库MongoDB和Redis等。这里我先来讲讲MySQL。
1、MySQL数据库
MySQl数据库是一个中小型关系型数据库应用及其广泛开源高效免费可移植性好现在有很多大厂还是在广泛使用MySQL数据库。
1.关系型数据库概述
关系型数据库是建立在关系模型基础上的数据库简单的讲它由多张互相联结的二位表格组成每一行是一条记录每一列是一个字段而表就是某个实体的集合它展现的形式类似于EXCEL中常见的表格。 像SQLiteMySQLOracleSQL Server DB2等都属于关系型数据库。
2.下载和安装MySQL数据库
这里常规的安装方法我不再赘述如果后续有要求我会补上。安装本地测试集成环境
3、数据库管理工具Navicat
MySQL安装好之后下面就可以建立保存爬虫数据的数据库了。如果对MySQL数据库不是很精通甚至连SQL语句都不会怎么写那么Navicat绝对可以帮上忙。这是一个强大的数据库管理和设计工具支持WindowsMac OSLinux系统。通过直观的GUI(图形用户界面)可以让用户方便的管理MySQLOracleSQL ServerMongo 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#创建文件并添加一个工作表
workbookxlsxwriter.Workbook(demo.xlsx)
worksheetworkbook.add_worksheet()#在指定位置写入数据
worksheet.write(A1,这是A1的数据)
worksheet.write(A2,这是A2的数据)#关闭表格文件
workbook.close()#爬取便民查询网常用账号并写入到Excel
import re
import requests
import xlsxwriterheaders {
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
}responserequests.get(http://changyongdianhuahaoma.51240.com/,headersheaders).textpat1rtr bgcolor#EFF7F0[\s\S]*?td(.*?)/td[\s\S]*?td[\s\S]*?/td[\s\S]*?/tr
pat2rtr bgcolor#EFF7F0[\s\S]*?td[\s\S]*?/td[\s\S]*?td(.*?)/td[\s\S]*?/trpattern1re.compile(pat1)
pattern2re.compile(pat2)data1pattern1.findall(response)
data2pattern2.findall(response)resultlist[]#创建表格
workbookxlsxwriter.Workbook(demo2.xlsx)
worksheetworkbook.add_worksheet()for i in range(0,len(data1)):resultlist.append(data1[i]data2[i])#写入数据worksheet.write(Astr(i1),data1[i])worksheet.write(Bstr(i1),data2[i])print(resultlist)
# 关闭表格资源这样才会完成创建
workbook.close()#爬取便民查询网常用账号并写入到Mysql
#注意需要提前创建对应字段的数据库
import re
import requests
import pymysql#建立数据库连接
dbpymysql.Connect(hostlocalhost,port3306,userroot,passwdAA123456,dbspider_test,charsetutf8)
cursordb.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
}responserequests.get(http://changyongdianhuahaoma.51240.com/,headersheaders).text#处理数据
pat1rtr bgcolor#EFF7F0[\s\S]*?td(.*?)/td[\s\S]*?td[\s\S]*?/td[\s\S]*?/tr
pat2rtr bgcolor#EFF7F0[\s\S]*?td[\s\S]*?/td[\s\S]*?td(.*?)/td[\s\S]*?/trpattern1re.compile(pat1)
pattern2re.compile(pat2)data1pattern1.findall(response)
data2pattern2.findall(response)#清空数据库原来的内容
sqlldelete from tel
cursor.execute(sqll)
db.commit()resultlist[]
for i in range(0,len(data1)):resultlist.append(data1[i]data2[i])sqlinsert into tel(name,phone) values(data1[i],data2[i])cursor.execute(sql)print(resultlist)db.commit()
db.close()