网站建设费入预付款什么科目,原创文章网站更新,视频分销网站建设,wordpress 分页 404python3使用scrapy获取数据然后保存至MySQL数据库#xff0c;我上一篇写了如何爬取数据保存为csv文件#xff0c;这一篇将会写如何将数据保存至数据库。思路大都一样#xff0c;我列一个思路#xff1a;1#xff1a;获取腾讯招聘网。2#xff1a;筛选信息获取我们想要的。…python3使用scrapy获取数据然后保存至MySQL数据库我上一篇写了如何爬取数据保存为csv文件这一篇将会写如何将数据保存至数据库。思路大都一样我列一个思路1获取腾讯招聘网。2筛选信息获取我们想要的。3将获取的信息按照规律保存至本地的txt文件。4读取txt文件的信息上传至MySQL数据库。(友情提示如果有朋友不怎么看得懂路径导入可以看看我之前写的自定义模块路径导入方法的文章)下面我们就按照这四步来实现目的。(声明一下除了数据库有关的代码有注释外其他有不懂的可以看上一篇生成csv文件的文章的注释)呈上代码(代码很简单只需要简单的分析就行了)# _*_ coding:utf-8 _*_import scrapy #下面这些都是基本的模块慢慢分析就行from scrapy.http import Requestfrom time import sleepimport pymysql #python3连接数据库的模块pymysqlimport osimport syssys.path.append(D:\PYscrapy\get_Field) #一样的路径导入以便调用下面两个模块from get_Field.items import GetItemimport mainclass Tencentzhaopin(scrapy.Spider):name fieldstart_urls [http://hr.tencent.com/position.php?start0#a]url http://hr.tencent.com/count 0filename data.txtif 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:breakconnect.commit() #我们需要提交数据库否则数据还是不能上传的con.close() #关闭游标connect.close() #关闭数据库print(Over!!!!!!!!!)def parse(self,response):self.count 1name response.xpath(//table//td[classl square]//a//text()).extract()genre response.xpath(//table//tr[not(classh)]//td[2][not(aligncenter)]//text()).extract()number response.xpath(//table//tr[not(classh)]//td[3][not(aligncenter)]//text()).extract()place response.xpath(//table//tr[not(classh)]//td[4][not(aligncenter)]//text()).extract()time response.xpath(//table//tr[not(classh)]//td[5][not(aligncenter)]//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(//*[idnext]//href).extract()new_url self.urlnew_url[0]print(Over)sleep(0.5)if self.count20:yield Request(urlnew_url,callbackself.parse) #循环获取20页的内容就行了else:self.database(self.filename) #当超过20页时跳出返回调用database函数存信息到数据库以上是完整的代码可以根据自己的实际情况来修改。难的地方应该没有但是对于一个初学者细节还要是有很多的我刚开始就是忘记了提交数据找了很久的问题郁闷。。。。。。相互学习可以用讨论希望对大家有帮助