將scrapy爬蟲框架爬取到的資料存入mysql資料庫
阿新 • • 發佈:2018-12-15
使用scrapy爬取網站資料,是一個目前來說比較主流的一個爬蟲框架,也非常簡單。 1、建立好專案之後現在settings.py裡面把ROBOTSTXT_OBEY的值改為False,不然的話會預設遵循robots協議,你將爬取不到任何資料。 2、在爬蟲檔案裡開始寫你的爬蟲,你可以使用xpath,也可以使用css選擇器來解析資料,等將資料全部解析完畢之後再items檔案裡面去宣告你的欄位
import scrapy class JobspiderItem(scrapy.Item): zwmc = scrapy.Field() zwxz = scrapy.Field() zpyq = scrapy.Field() gwyq = scrapy.Field()
3、然後再爬蟲檔案裡面先去匯入items裡面宣告欄位的類,接著建立item物件,寫入值,最後別忘了把item給yield出去
item = JobspiderItem()
item['zwmc'] = zwmc
item['zwxz'] = money
item['zpyq'] = zpyq
item['gwyq'] = gzyq
yield item
4、接下來就是存入mysql資料庫了: 1.在pipelings.py檔案裡面先匯入item類以及pymysql模組
from ..jobspider.items import JobspiderItem
import pymysql
2.然後就開始連線資料庫以及寫入資料庫,我這裡是直接先將mysql資料庫以及資料表建立好了,並沒有在程式碼裡面建立
class JobspiderPipeline(object): def __init__(self): # 1. 建立資料庫的連線 self.connect = pymysql.connect( # localhost連線的是本地資料庫 host='localhost', # mysql資料庫的埠號 port=3306, # 資料庫的使用者名稱 user='root', # 本地資料庫密碼 passwd='123456', # 表名 db='job51', # 編碼格式 charset='utf8' ) # 2. 建立一個遊標cursor, 是用來操作表。 self.cursor = self.connect.cursor() def process_item(self, item, spider): # 3. 將Item資料放入資料庫,預設是同步寫入。 insert_sql = "INSERT INTO job(zwmc, zwxz, zpyq, gwyq) VALUES ('%s', '%s', '%s', '%s')" % (item['zwmc'], item['zwxz'], item['zpyq'], item['gwyq']) self.cursor.execute(insert_sql) # 4. 提交操作 self.connect.commit() def close_spider(self, spider): self.cursor.close() self.connect.close()
5、最後就是去settings.py檔案裡面將ITEM_PIPELINES給解註釋了