本文將介紹如何將抓好的item數據存入到mysql中
聲明:本文使用的python交互工具爲pymysql並非mysqldb,因爲網上使用pymysql存入數據的相關文章較少,所以寫了這篇文章供大家參考
環境:ubantu
準備工作:
items.py
將想要抓的數據累出來,下面是我要抓的數據:(我的項目名爲wens)
class WensItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
img_url = scrapy.Field()
name = scrapy.Field()
update_time = scrapy.Field()
update_word = scrapy.Field()
author = scrapy.Field()
steam.py(我的爬蟲腳本)
當然也別忘了引入
from wens.items import WensItem
至此準備工作全部完成,本文主要闡述如何將抓好的數據存入數據庫,對於如何抓取數據不再贅述。
pipelines.py
import pymysql
class writeMysql(object):
def __init__(self):
self.client = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root', #使用自己的用戶名
passwd='123', # 使用自己的密碼
db='chenguang', # 數據庫名
charset='utf8'
)
self.cur = self.client.cursor()
def process_item(self,item,spider):
# sql = 'insert into game(img_url,name,update_time,update_word,author) VALUES (%s,%s,%s,%s,%s)'%(item['img_url'],item['name'],item['update_time'],item['update_word'],item['author'])
#對於上條命令感覺和下面的sql語句相同,但是就是報語法錯誤,如果有大神知道希望能夠指出
sql = 'insert into game(img_url,name,update_time,update_word,author) VALUES (%s,%s,%s,%s,%s)'
lis = (item['img_url'],item['name'],item['update_time'],item['update_word'],item['author'])
self.cur.execute(sql,lis)
self.client.commit()
# self.cur.close()
# self.client.close()
# 對於這裏如果關閉的話只能能插入一條數據,也不知道應該在哪裏關閉,還沒有弄出來,但是不關閉也沒影響
return item
settings.py
別忘了在setting中註冊
ITEM_PIPELINES = {
'wens.pipelines.writeMysql': 200,
}
最後建立數據庫,我是用navicat(懶),創建數據庫及表的方法我就不貼出來了,需要注意的是創建的字段名需要和items.py中自己定義的相同。