scrapy读取mysql数据库_python3实战scrapy获取数据保存至MySQL数据库

python3使用scrapy获取数据然后保存至MySQL数据库,我上一篇写了如何爬取数据保存为csv文件,这一篇将会写如何将数据保存至数据库。

思路大都一样,我列一个思路:

1:获取腾讯招聘网。

2:筛选信息获取我们想要的。

3:将获取的信息按照规律保存至本地的txt文件。

4:读取txt文件的信息上传至MySQL数据库。

68f82b13d1efd7ad3238c4930281e5e1.png

(友情提示:如果有朋友不怎么看得懂路径导入,可以看看我之前写的自定义模块路径导入方法的文章)

下面我们就按照这四步来实现目的。

(声明一下,除了数据库有关的代码有注释外,其他有不懂的可以看上一篇生成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函数存信息到数据库

以上是完整的代码,可以根据自己的实际情况来修改。

难的地方应该没有,但是对于一个初学者,细节还要是有很多的,我刚开始就是忘记了提交数据,找了很久的问题,郁闷。。。。。。

相互学习,可以用讨论,希望对大家有帮助

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497999.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

共享单车技术含量,一篇文章全说透了!

来源&#xff1a;物联网智库 概要&#xff1a;共享单车已经成为了中国新四大发明之一&#xff0c;被输往了世界上很多城市。 共享单车已经成为了中国新四大发明之一&#xff0c;被输往了世界上很多城市。在我看来&#xff0c;虽然共享单车的实现并不复杂&#xff0c;其实质是一…

PostgreSQL 分页——示例

SQL 语句 select * from ( select * from logizard.t04_case_dtl_wk where slip_id order100~1~l001 order by case_id ) as T04 limit 5 offset 0 ;结果图

人工智能企业自动化的关键现状和战略影响

来源&#xff1a;腾股创投&#xff08;微信ID: tengguvc&#xff09; 人工智能和机器学习在亚马逊 Alexa 等面向消费者的应用领域取得了长足的进步&#xff0c;在企业内的的部署也不断涌现。 关于 AI 自动化对企业的影响范围和影响程度的意见不一。 一方面&#xff0c;牛津大学…

Mac 右键拷贝文件失效

问题&#xff1a;Mac 右键拷贝文件失效&#xff0c;有时候拷贝可以成功&#xff0c;有时候拷贝不成功 发现问题所在&#xff1a;开了百度翻译的划词&#xff0c; 解决&#xff1a;把划词关掉就好了&#xff0c;或者设置划词快捷键翻译就好了&#xff0c;反正就不要一划就翻译那…

为什么神经网络会把乌龟识别成步枪?现在的 AI 值得信任吗?

来源&#xff1a;36Kr 概要&#xff1a;人工智能的快速发展的确值得欣喜&#xff0c;但快速发展的背后还有各种不完善的地方。 人工智能的快速发展的确值得欣喜&#xff0c;但快速发展的背后还有各种不完善的地方。比如&#xff0c;前不久麻省理工学院的一些学生&#xff0c;利…

Struts2自定义标签——示例

自定义Button功能描述&#xff1a; <tangs:button items"apple,orange,banana"/> 解析后为&#xff1a; <input type"button" name"apple" value"apple" /> <input type"button" name"orange…

深度学习的核心:掌握训练数据的方法

来源&#xff1a;云栖社区 概要&#xff1a;今天我们将讨论深度学习中最核心的问题之一&#xff1a;训练数据。 Hello World&#xff01; 今天我们将讨论深度学习中最核心的问题之一&#xff1a;训练数据。深度学习已经在现实世界得到了广泛运用&#xff0c;例如&#xff1a;无…

python停止运行tensorflow_Tensorflow 开启训练后卡死

毕设做深度学习的课题&#xff0c;使用到了TensorFlow&#xff0c;但训练时出现了问题&#xff1a;跑脚本开启训练之后&#xff0c;跑完不到100次就会卡死&#xff0c;然后显示python已停止工作这是我的训练的代码# 导入数据集import load_record# 导入TensorFlow并创建Session…

Struts2自定义标签(template)——示例

来源&#xff1a;http://www.blogjava.net/natlive/archive/2009/05/21/271890.html Struts2 的UITag原理&#xff1a; Struts2 UITag分三部份组成&#xff0c;一部份用于定义Tag的内容与逻辑的UIBean&#xff0c;一部份用于定义JSP Tag&#xff0c;也就是平时我们定义的那种&…

详解5G的六大关键技术

来源&#xff1a;电子产品世界 概要&#xff1a;在5G研发刚起步的情况下&#xff0c;如何建立一套全面的5G关键技术评估指标体系和评估方法&#xff0c;实现客观有效的第三方评估&#xff0c;服务技术与资源管理的发展需要&#xff0c;同样是当前5G技术发展所面临的重要问题。 …

为什么说特斯拉研发自动驾驶AI芯片应该引起注意?

来源&#xff1a;36Kr 概要&#xff1a;对于特斯拉而言&#xff0c;研发这款芯片配套算法本质上还是对率先将自动驾驶汽车商业化节点的争夺。 特斯拉Model 3的量产问题仍未彻底解决&#xff0c;CEO Elon Musk又抛出了自研自动驾驶芯片的重磅新闻。 Elon Musk和特斯拉Autopilo…

stm32usb做虚拟串口和键盘_关于stm32f103的USB虚拟串口程序移植

手边有个项目要用到USB传数据到主机&#xff0c;虽然有很多种方式&#xff0c;但最后还是选择了USB虚拟串口模式&#xff0c;将数据上传至pc端&#xff1b;然而这就涉及到了移植问题&#xff0c;在keil下官方已经给出了一个完整的USB TO VCOM的demo&#xff0c;但在我的主机上装…

4篇Nature同时揭示DNA自组装技术,离人造生命又近了一步

来源&#xff1a;刘盼科学网博客 概要&#xff1a; 科学家一直渴望利用自组装来构建人造物体&#xff0c;以达到细胞或细胞器的尺寸和复杂性&#xff0c;以便为研究&#xff0c;工程和医学应用构建合成的细胞机器。 iNature&#xff1a;自组装过程以各种形式存在于自然界中&…

均方距离计算公式_均值、方差、均方值、均方差计算

1、均值 均值表示信号中直流分量的大小,用E(x)表示。对于高斯白噪声信号而言,它的均值为0,所以它只有交流分量。 2、均值的平方 均值的平方,用{E(x)}^2表示,它表示的是信号中直流分量的功率。 3、均方值 均方值表示信号平方后的均值,用E(x^2)表示。均方值表示信号的平均功…

推动大数据和AI应用场景的落地,加速实现与产业融合。

来源&#xff1a;猎云网 概要&#xff1a;在新时代下&#xff0c;如何利用大数据与人工智能技术&#xff0c;大幅提升数据效率与业务决策&#xff0c;化数据新技术力为业务新能力&#xff0c;化业务新能力为商业新物种&#xff0c;成为各行各业在未来生存下去的关键。 今日&am…

web.config 指定的默认页失效

web.config 指定的默认页失效 解决方法&#xff1a; IIS 配置如下&#xff1a;

CCF大数据专家委:2018年大数据发展趋势预测

来源&#xff1a;大潘点点 概要&#xff1a;2018年大数据发展趋势预测 1、机器学习继续成为大数据智能分析的核心技术 2、人工智能和脑科学相结合&#xff0c;成为大数据分析领域的热点 3、数据科学带动多学科融合 4、数据学科虽然兴起&#xff0c;但是学科突破进展缓慢 5、推动…

connectionstring mysql_Entity Framework 6 自定义连接字符串ConnectionString连接MySQL

在开始介绍之前&#xff0c;首先来看看官方对Entity Framework的解释&#xff1a;Entity Framework (EF) is an object-relational mapper that enables .NET developers to work with relational data using domain-specific objects. It eliminates the need for most of the…

学界 | OpenAI 发布稀疏计算内核,更宽更深的网络,一样的计算开销

作者&#xff1a;杨晓凡 概要&#xff1a;OpenAI 的研究人员们近日发布了一个高度优化的 GPU 计算内核&#xff0c;它可以支持一种几乎没被人们探索过的神经网络架构&#xff1a;带有稀疏块权重的网络。 OpenAI 的研究人员们近日发布了一个高度优化的 GPU 计算内核&#xff0…