使用Scrapy爬取圖片入庫,並儲存在本地
上
篇部落格已經簡單的介紹了爬取資料流程,現在讓我們繼續學習scrapy
目標:
爬取愛卡汽車標題,價格以及圖片存入資料庫,並存圖到本地
好了不多說,讓我們實現下效果
我們仍用scrapy框架來編寫我們的專案:
1.首先用命令建立一個爬蟲專案(結合上篇部落格),併到你的專案裡如圖所示
2.先到你的settings.py中配置 ,這裡需要注意要 爬圖(配置一個爬圖管道 ImagesPipeline 為系統中下載圖片的管道),
同時還有存圖地址(在專案中建立一個為images的資料夾),
存圖有多種方式,本人只是列舉其中一種,大家可採取不同的方法
3.然後開啟你的爬蟲檔案(即:car.py)開始編寫你要爬取的資料,這裡需要注意,要將start_urls[] 改為我們要爬取的Url 地址,然後根據xpath爬取圖片
(這裡程式碼得自己寫,不要複製)
4.爬取的欄位要跟 items.py裡的一致
5.在命令列輸入啟動爬蟲命令 scrapy crawl car 執行就能看到爬到圖片存放在本地如下
6.最後入庫,看你要入那個庫,這裡可入mysql和mongdb
mysql: 需提前創好庫以及表,表中欄位
import pymysql # class NewcarPipeline(object): # 連線mysql改為你的使用者密碼以及自己的庫 # def __init__(self): # self.conn = pymysql.connect(host='127.0.0.1',user='root', password='123456', db='zou') # 建立cursor物件 # self.cursor = self.conn.cursor() # # 傳值 # def process_item(self, item, spider): # name = item['name'] # content = item['content'] # price = item['price'] # image = item['image_urls'] # # insert into 你的表名,括號裡面是你的欄位要一一對應 # sql = "insert into zou(name,content,price) values(%s,%s,%s)" # self.cursor.execute(sql, (name,content,price)) # self.conn.commit() # return item #關閉爬蟲 # def close_spider(self, spider): # self.conn.close()
mongdb: 不用提前建好庫,表
from pymongo import MongoClient # class NewcarPipeline(object): # def open_spider(self, spider): # # 連埠 ip # self.con = MongoClient(host='127.0.0.1', port=27017) # # 庫 # db = self.con['p1'] # # 授權 # self.con = db.authenticate(name='wumeng', password='123456', source='admin') # # 集合 # self.coll = db[spider.name] # def process_item(self, item, spider): # # 新增資料 # self.coll.insert_one(dict(item)) # return item # def close_spider(self): # # 關閉 # self.con.close()
7.執行 啟動爬蟲命令 scrapy crawl car 就可在庫中看到資料.
至此爬蟲專案做完了,這只是一個簡單的爬蟲,僅供參考,如遇其他方面的問題,可參考本人部落格!盡情期待!