Scrapy入门(1):安装及简介

简介

在边学边做中完成了第一个Python爬虫项目,成功使用scrapy框架抓取国外电商网站的商品信息。


scrapy安装

服务器系统环境

  • Mac OS
  • Python3.5(已安装pip)

安装scrapy

1
2
# 使用pip安装scrapy
pip3.5 install scrapy

scrapy入门

创建项目

1
2
3
4
5
cd /指定目录的路径/
scrapy startproject test0
# 创建spider文件
cd test0/spiders/
touch spider.py

项目主要文件介绍

项目目录下面,我们主要关注这三个文件:

  • items.py: 定义item类,也就是我们抓取的商品需要包含哪些属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from scrapy.item import Item, Field

class productItem(Item):
sourceWeb = Field() # 商品原网站
sourceWebURL = Field() # 商品原网站URL
sourceWebSKU = Field() # 商品原网站SKU,不区分颜色
sourceProductId = Field() # 商品原网站产品ID,区分颜色
itemName = Field() # 商品名称
price = Field() # 商品价格
category = Field() # 商品分类-大类
subCategory = Field() # 商品分类-小类
brand = Field() # 商品品牌
description = Field() # 商品描述
colourName = Field() # 商品颜色
imgList = Field() # 商品展示图片(多张图片,列表)
havaStockSize = Field() # 有库存的商品尺寸(多个尺寸,列表)
noneStockSize = Field() # 无库存的商品尺寸(多个尺寸,列表)
  • spider.py: 引用items.py定义的item类,编写爬取程序提取item,最后返回item结果
1
2
3
4
5
6
7
8
9
10
11
# 以下只是代码的部分主体,后文会详细说明
# 定义一个爬虫类
class freepeopleSpider(Spider):
name = 'freepeople'
allowed_domains = ["freepeople.com"]
start_urls = ["https://www.freepeople.com/fp-movement/"]

def parse(self, response):
item = productItem()
...对response进行处理,提取item...
return item
  • pipelines.py:针对spider.py返回的item结果进行转换、存储等操作
1
2
3
4
5
6
7
# 例:
# 去除商品名称两端的空白字符
item['itemName'] = item['itemName'].strip()
# 商品信息存储为json文件
with codecs.open('item.json', 'a', encoding='utf-8') as f:
f.write(json.dumps(dict(item), ensure_ascii=False) + "\n")
# 或者将商品信息存储到数据库

运行爬虫

1
2
3
# 此处的'freepeopleSpider'是spider.py文件内定义的爬虫类得名字,而不是项目的名字test0
# 所以我们可以在spider.py内定义多个爬虫类(比如每个网站一个类,多个类共用item.py、pipline.py文件),然后分别运行
scrapy crawl freepeopleSpider

That’s all.
Happy writing!