Scrapy 数据采集 —— 外贸产品站
目标:利用Python,拷贝某外贸产品站(https://keeksdesignerhandbags.com)的数据,需采集的字段如下:
产品目录(用于重构自己产品站的目录)
产品名称
产品价格
产品描述
产品model(唯一产品识别码)
产品图片,用产品model进行命名,方便数据库和WEB服务器布局识别
环境:
Windows 11
Python 3.8.9
Pycharm
Scrapy 2.7.1
创建项目
略
创建爬虫
略
正文开始
1,切换到项目文件夹下的items.py中确定要爬取的字段,代码如下:
2,定义要爬取的字段后就可以在项目文件夹下的爬虫文件开始页面解析规则制定了。这个站是shop**搭建的(据说是第三方托管和维护的,自己操作不到源码的,等同于用户数据你也看不到)。
思路:
a,请求开始页为:https://keeksdesignerhandbags.com/collections/shop。从该页面拿到产品列表,并进行翻页可以拿到该站所有的产品数据;
b,拿到产品列表后请求产品详情页,拿到产品的其他字段;
c,传递给Scrapy的item对象,以便通过管道进行存储;
爬虫文件用的模板是Scrapy的基础模板(basic),也可以用爬虫模板crawl。爬虫文件spiders/keek.py代码如下:
这个站是需要外网访问的,Scrapy好像不支持像requests库的那样的携带代理请求的方式。requests库要求的是代理是json格式,而Scrapy要求的是字符串格式,度娘了很多文章,都没有实现scrapy携带sock5代理请求,有路过的大神烦请指点。最终数据是放在vps上采集完成的。
3,数据存储。
根据需求,数据要存储到csv文档中,以便提取字段作为自己搭站的批量表;第二个是图片保存。切换到项目文件夹下的pipelines.py文件,代码如下:
4,最后在设置中启动管道,切换到项目文件夹下的settings.py中,取消管道文件定义段的注释,加上如下代码:
5,反爬措施。请求头更改和代理,在项目文件夹下的middlewares.py中定义,这个站没有反爬,就没做这步。
爬取结果截图:
csv数据保存结果:

图片保存截图:

单图片文件夹存储截图:

申明:本文仅用于学习和交流使用。