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数据库相关推荐

  1. 牛客网数据库SQL实战25—— 获取员工其当前的薪水比其manager当前薪水还高的相关信息

    牛客网数据库SQL实战25-- 获取员工其当前的薪水比其manager当前薪水还高的相关信息 题目描述 获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999 ...

  2. python获取网页数据后写入mysql_HTTP协议与使用Python获取数据并写入MySQL

    一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movi ...

  3. 使用 Room 将数据保存到本地数据库学习日志+demo

    Android中使用 Room 并结合LiveData+ViewModel+RecyclerView将数据保存到本地数据库 Room理论学习 前期准备 导入库 Room三大组件之一:Entity Ro ...

  4. 一文搞定scrapy爬取众多知名技术博客文章保存到本地数据库,包含:cnblog、csdn、51cto、itpub、jobbole、oschina等

    本文旨在通过爬取一系列博客网站技术文章的实践,介绍一下scrapy这个python语言中强大的整站爬虫框架的使用.各位童鞋可不要用来干坏事哦,这些技术博客平台也是为了让我们大家更方便的交流.学习.提高 ...

  5. kettle 分析mysql日志_Kettle实战100篇 第20篇 MySQL数据库导出到ElasticSearch

    业务需求:在系统上线后,原系统的日志信息是存储到MySQL数据库中,但是随着日志数据越来越大,导致数据查询缓慢,加上日志数据并非业务系统关键数据,因此,系统考虑改版升级,使用ElasticSearch ...

  6. 怎样用php写入数据库表,PHP如何将数据写入到MYSQL数据库

    要想通过PHP将数据写入到MYSQL数据库,基本上要经历三步骤: 连接数据库 将数据写入数据库 关闭连接 连接数据库代码: define("DB_HOST","local ...

  7. mysql做kv数据库_如何将SQL数据映射到KV数据库

    日常吐槽 国外文章也不是都是好文章啊,不要见到英文就觉得高大上了-- 前言 越来越多的关系型数据库底层选择基于KV构建,例如TiDB的TiKV(RocksDB),cockroach的levelDB,M ...

  8. python爬取微博数据存入数据库_Python爬取微博数据并存入mysql,excel中

    寒假期间做微博数据统计,由于是部门要求,也没办法,自己又是一个懒人,直接用python实现吧.写的很粗糙,也很差,请大家别介意. 总的来说分成两个模块:一个爬取微博数据存入数据库,一个从数据库调取数据 ...

  9. 用html通过python调用mysql_HTTP协议与使用Python获取数据并写入MySQL

    一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movi ...

最新文章

  1. RabbitMQ (三)消息重试
  2. 了解关于Hadoop的12个事实
  3. vue状态管理存取数据_vue状态管理vuex从浅入深详细讲解
  4. 方立勋_30天掌握JavaWeb_Cookie
  5. PHP IDE phpstorm 快捷键
  6. 【转】博客园中应用LaTex进行公式编写
  7. angular 新建命令
  8. 深入解密来自未来的缓存-Caffeine
  9. 使用 Visual Studio 2012进行C语言开发
  10. 深入理解原型和原型链
  11. 【单目标优化求解】基于matlab水循环算法求解约束优化问题【含Matlab源码 1428期】
  12. oracle循环数据,oracle循环插入数据
  13. 官网下载mysql安装包
  14. 共轭梯度法python实现
  15. 8月刚入职字节跳动的测试开发面试题,附答案
  16. 7,JESD204B接口的关键问题
  17. 深度学习工程实践 5. libtorch+opencv使用复杂的训练分割模型(脸部,头发实现分割)
  18. 2022最新QQ协议登陆,QQ密码加密源代码
  19. linux yum安装驱动,centos8安装alsa驱动
  20. T9智能输入法实现原理和步骤

热门文章

  1. 论文浅尝 | 基于RNN与相似矩阵CNN的知识库问答
  2. 国科大prml10-无监督学习
  3. js几种常见排序的实现
  4. WOJ 18 动态无向图
  5. 使用nfs映射远程服务器磁盘目录
  6. Python爬虫入门四之Urllib库的高级用法
  7. 【SpringCloud】Netflix源码解析之Ribbon:负载均衡策略的定义和实现
  8. MySQL 授权远程登录(Ubuntu 环境)
  9. [wikioi]多源最短路
  10. Object to XML