日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/7/23 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。