scrapy读取mysql数据库_python3实战scrapy获取数据保存至MySQL数据库
python3使用scrapy获取数据然后保存至MySQL数据库,我上一篇写了如何爬取数据保存为csv文件,这一篇将会写如何将数据保存至数据库。
思路大都一样,我列一个思路:
1:获取腾讯招聘网。
2:筛选信息获取我们想要的。
3:将获取的信息按照规律保存至本地的txt文件。
4:读取txt文件的信息上传至MySQL数据库。
(友情提示:如果有朋友不怎么看得懂路径导入,可以看看我之前写的自定义模块路径导入方法的文章)
下面我们就按照这四步来实现目的。
(声明一下,除了数据库有关的代码有注释外,其他有不懂的可以看上一篇生成csv文件的文章的注释)
呈上代码(代码很简单,只需要简单的分析就行了):
# _*_ coding:utf-8 _*_
import scrapy #下面这些都是基本的模块,慢慢分析就行
from scrapy.http import Request
from time import sleep
import pymysql #python3连接数据库的模块pymysql
import os
import sys
sys.path.append("D:\PYscrapy\get_Field") #一样的路径导入以便调用下面两个模块
from get_Field.items import GetItem
import main
class Tencentzhaopin(scrapy.Spider):
name = "field"
start_urls = ["http://hr.tencent.com/position.php?&start=0#a"]
url = "http://hr.tencent.com/"
count = 0
filename = "data.txt"
if os.path.exists(filename) == True:
os.remove(filename)
def database(self,path): #调用这个自定义函数来实现对数据库的操作
connect = pymysql.connect(
user = "root",
password = "xxxxxxxx", #连接数据库,不会的可以看我之前写的连接数据库的文章
port = 3306,
host = "127.0.0.1",
db = "MYSQL",
charset = "utf8"
)
con = connect.cursor() #获取游标
con.execute("create database w_tencent") #创建数据库,!!!!这一条代码仅限第一次使用,有了数据库后就不用再使用了
con.execute("use w_tencent") #使用数据库
con.execute("drop table if exists t_zhaopin") #判断是否存在这个数据库表
sql = '''create table t_zhaopin(name varchar(40),genre varchar(20),number bigint,place varchar(40),time varchar(20))'''
con.execute(sql) #执行sql命令 创建t_zhaopin表来保存信息
with open(path,"r") as f: #打开path本地文档
while True:
info = f.readline() #一行一行的读取文档信息
if info:
info = info.strip() #去掉换行符
info = info.split(";") #以;来分割将信息变换为列表形式
name = info[0]
genre = info[1]
number = info[2]
place = info[3]
time = info[4]
con.execute("insert into t_zhaopin(name,genre,number,place,time)values(%s,%s,%s,%s,%s)",[name,genre,number,place,time])
# 这一句就是将信息保存至t_zhaopin表中
else:
break
connect.commit() #我们需要提交数据库,否则数据还是不能上传的
con.close() #关闭游标
connect.close() #关闭数据库
print("Over!!!!!!!!!")
def parse(self,response):
self.count += 1
name = response.xpath('//table//td[@class="l square"]//a//text()').extract()
genre = response.xpath('//table//tr[not(@class="h")]//td[2][not(@align="center")]//text()').extract()
number = response.xpath('//table//tr[not(@class="h")]//td[3][not(@align="center")]//text()').extract()
place = response.xpath('//table//tr[not(@class="h")]//td[4][not(@align="center")]//text()').extract()
time = response.xpath('//table//tr[not(@class="h")]//td[5][not(@align="center")]//text()').extract()
with open(self.filename,"a") as f: #将我们获取到的信息保存到本地
for i in range(len(genre)): #以某个属性的长度来循环
f.write(name[i]+";") #我们将这些信息保存起来,并用;来分隔
f.write(genre[i]+";")
f.write(number[i]+";")
f.write(place[i]+";")
f.write(time[i]+"\n")
new_url = response.xpath('//*[@id="next"]//@href').extract()
new_url = self.url+new_url[0]
print("Over")
sleep(0.5)
if self.count<=20:
yield Request(url=new_url,callback=self.parse) #循环获取20页的内容就行了
else:
self.database(self.filename) #当超过20页时跳出返回,调用database函数存信息到数据库
以上是完整的代码,可以根据自己的实际情况来修改。
难的地方应该没有,但是对于一个初学者,细节还要是有很多的,我刚开始就是忘记了提交数据,找了很久的问题,郁闷。。。。。。
相互学习,可以用讨论,希望对大家有帮助
scrapy读取mysql数据库_python3实战scrapy获取数据保存至MySQL数据库相关推荐
- 牛客网数据库SQL实战25—— 获取员工其当前的薪水比其manager当前薪水还高的相关信息
牛客网数据库SQL实战25-- 获取员工其当前的薪水比其manager当前薪水还高的相关信息 题目描述 获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999 ...
- python获取网页数据后写入mysql_HTTP协议与使用Python获取数据并写入MySQL
一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movi ...
- 使用 Room 将数据保存到本地数据库学习日志+demo
Android中使用 Room 并结合LiveData+ViewModel+RecyclerView将数据保存到本地数据库 Room理论学习 前期准备 导入库 Room三大组件之一:Entity Ro ...
- 一文搞定scrapy爬取众多知名技术博客文章保存到本地数据库,包含:cnblog、csdn、51cto、itpub、jobbole、oschina等
本文旨在通过爬取一系列博客网站技术文章的实践,介绍一下scrapy这个python语言中强大的整站爬虫框架的使用.各位童鞋可不要用来干坏事哦,这些技术博客平台也是为了让我们大家更方便的交流.学习.提高 ...
- kettle 分析mysql日志_Kettle实战100篇 第20篇 MySQL数据库导出到ElasticSearch
业务需求:在系统上线后,原系统的日志信息是存储到MySQL数据库中,但是随着日志数据越来越大,导致数据查询缓慢,加上日志数据并非业务系统关键数据,因此,系统考虑改版升级,使用ElasticSearch ...
- 怎样用php写入数据库表,PHP如何将数据写入到MYSQL数据库
要想通过PHP将数据写入到MYSQL数据库,基本上要经历三步骤: 连接数据库 将数据写入数据库 关闭连接 连接数据库代码: define("DB_HOST","local ...
- mysql做kv数据库_如何将SQL数据映射到KV数据库
日常吐槽 国外文章也不是都是好文章啊,不要见到英文就觉得高大上了-- 前言 越来越多的关系型数据库底层选择基于KV构建,例如TiDB的TiKV(RocksDB),cockroach的levelDB,M ...
- python爬取微博数据存入数据库_Python爬取微博数据并存入mysql,excel中
寒假期间做微博数据统计,由于是部门要求,也没办法,自己又是一个懒人,直接用python实现吧.写的很粗糙,也很差,请大家别介意. 总的来说分成两个模块:一个爬取微博数据存入数据库,一个从数据库调取数据 ...
- 用html通过python调用mysql_HTTP协议与使用Python获取数据并写入MySQL
一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movi ...
最新文章
- RabbitMQ (三)消息重试
- 了解关于Hadoop的12个事实
- vue状态管理存取数据_vue状态管理vuex从浅入深详细讲解
- 方立勋_30天掌握JavaWeb_Cookie
- PHP IDE phpstorm 快捷键
- 【转】博客园中应用LaTex进行公式编写
- angular 新建命令
- 深入解密来自未来的缓存-Caffeine
- 使用 Visual Studio 2012进行C语言开发
- 深入理解原型和原型链
- 【单目标优化求解】基于matlab水循环算法求解约束优化问题【含Matlab源码 1428期】
- oracle循环数据,oracle循环插入数据
- 官网下载mysql安装包
- 共轭梯度法python实现
- 8月刚入职字节跳动的测试开发面试题,附答案
- 7,JESD204B接口的关键问题
- 深度学习工程实践 5. libtorch+opencv使用复杂的训练分割模型(脸部,头发实现分割)
- 2022最新QQ协议登陆,QQ密码加密源代码
- linux yum安装驱动,centos8安装alsa驱动
- T9智能输入法实现原理和步骤