Scrapy 數(shù)據(jù)采集 —— 外貿(mào)產(chǎn)品站
目標(biāo):利用Python,拷貝某外貿(mào)產(chǎn)品站(https://keeksdesignerhandbags.com)的數(shù)據(jù),需采集的字段如下:
產(chǎn)品目錄(用于重構(gòu)自己產(chǎn)品站的目錄)
產(chǎn)品名稱
產(chǎn)品價(jià)格
產(chǎn)品描述
產(chǎn)品model(唯一產(chǎn)品識(shí)別碼)
產(chǎn)品圖片,用產(chǎn)品model進(jìn)行命名,方便數(shù)據(jù)庫(kù)和WEB服務(wù)器布局識(shí)別
環(huán)境:
Windows 11
Python 3.8.9
Pycharm
Scrapy 2.7.1
創(chuàng)建項(xiàng)目
略
創(chuàng)建爬蟲(chóng)
略
正文開(kāi)始
1,切換到項(xiàng)目文件夾下的items.py中確定要爬取的字段,代碼如下:
2,定義要爬取的字段后就可以在項(xiàng)目文件夾下的爬蟲(chóng)文件開(kāi)始頁(yè)面解析規(guī)則制定了。這個(gè)站是shop**搭建的(據(jù)說(shuō)是第三方托管和維護(hù)的,自己操作不到源碼的,等同于用戶數(shù)據(jù)你也看不到)。
思路:
a,請(qǐng)求開(kāi)始頁(yè)為:https://keeksdesignerhandbags.com/collections/shop。從該頁(yè)面拿到產(chǎn)品列表,并進(jìn)行翻頁(yè)可以拿到該站所有的產(chǎn)品數(shù)據(jù);
b,拿到產(chǎn)品列表后請(qǐng)求產(chǎn)品詳情頁(yè),拿到產(chǎn)品的其他字段;
c,傳遞給Scrapy的item對(duì)象,以便通過(guò)管道進(jìn)行存儲(chǔ);
爬蟲(chóng)文件用的模板是Scrapy的基礎(chǔ)模板(basic),也可以用爬蟲(chóng)模板crawl。爬蟲(chóng)文件spiders/keek.py代碼如下:
這個(gè)站是需要外網(wǎng)訪問(wèn)的,Scrapy好像不支持像requests庫(kù)的那樣的攜帶代理請(qǐng)求的方式。requests庫(kù)要求的是代理是json格式,而Scrapy要求的是字符串格式,度娘了很多文章,都沒(méi)有實(shí)現(xiàn)scrapy攜帶sock5代理請(qǐng)求,有路過(guò)的大神煩請(qǐng)指點(diǎn)。最終數(shù)據(jù)是放在vps上采集完成的。
3,數(shù)據(jù)存儲(chǔ)。
根據(jù)需求,數(shù)據(jù)要存儲(chǔ)到csv文檔中,以便提取字段作為自己搭站的批量表;第二個(gè)是圖片保存。切換到項(xiàng)目文件夾下的pipelines.py文件,代碼如下:
4,最后在設(shè)置中啟動(dòng)管道,切換到項(xiàng)目文件夾下的settings.py中,取消管道文件定義段的注釋,加上如下代碼:
5,反爬措施。請(qǐng)求頭更改和代理,在項(xiàng)目文件夾下的middlewares.py中定義,這個(gè)站沒(méi)有反爬,就沒(méi)做這步。
爬取結(jié)果截圖:
csv數(shù)據(jù)保存結(jié)果:

圖片保存截圖:

單圖片文件夾存儲(chǔ)截圖:

申明:本文僅用于學(xué)習(xí)和交流使用。