scrapy介绍:
Scrapy是python主流爬虫框架,可以很方便的通过url抓取web信息,同时与传统的requests库相比,提供了更多的工具和更高的并发。推荐从官方学习网站上学习。
不过,你一点scrapy资料都不知道也没有关系,读完本文一样能撸出来
scrapy实战:
本篇文章是利用Scrapy扒取安智市场的app详情页,如点击查看和平精英,包括app名、版本号、图标icon、分类、时间、大小、下载量、作者、简介、更新说明、软件截图、精彩内容等,扒取的图片资源icon和市场展示图(app截图)下载到本地,并将所有数据存储到数据库。
考虑的问题:
- 存储的数据库设计
- 图片资源链接存在重定向
- 下载app的图标需为.png后缀
- ...
需要先熟悉Scrapy框架的同学:点击学习
数据库设计:
创建的为mysql数据库,名称为app_anzhigame
,表名为games
,安智市场的市场图限制为4-5张,简介等为1500字以内,图片均为相对地址
# 建库
CREATE DATABASE app_anzhigame CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
USE app_anzhigame;
DROP TABLE games;
# 建表
CREATE TABLE games(
id INTEGER(11) UNSIGNED AUTO_INCREMENT COLLATE utf8mb4_general_ci,
name VARCHAR(20) NOT NULL COLLATE utf8mb4_general_ci COMMENT '游戏名' ,
versionCode VARCHAR(10) COLLATE utf8mb4_general_ci COMMENT '版本号' NOT NULL DEFAULT 'v1.0',
icon VARCHAR(100) COLLATE utf8mb4_general_ci COMMENT '游戏图标icon' NOT NULL DEFAULT '',
type VARCHAR(20) COLLATE utf8mb4_general_ci COMMENT '分类' NOT NULL DEFAULT '',
onlineTime VARCHAR(20) COLLATE utf8mb4_general_ci COMMENT '上线时间',
size VARCHAR(10) COLLATE utf8mb4_general_ci COMMENT '大小' NOT NULL DEFAULT '0B',
download VARCHAR(10) COLLATE utf8mb4_general_ci COMMENT '下载量' NOT NULL DEFAULT '0',
author VARCHAR(20) COLLATE utf8mb4_general_ci COMMENT '作者',
intro VARCHAR(1500) COLLATE utf8mb4_general_ci COMMENT '简介',
updateInfo VARCHAR(1500) COLLATE utf8mb4_general_ci COMMENT '更新说明',
highlight VARCHAR(1500) COLLATE utf8mb4_general_ci COMMENT '精彩内容',
image1 VARCHAR(100) COLLATE utf8mb4_general_ci COMMENT '市场图1',
image2 VARCHAR(100) COLLATE utf8mb4_general_ci COMMENT '市场图2',
image3 VARCHAR(100) COLLATE utf8mb4_general_ci COMMENT '市场图3',
image4 VARCHAR(100) COLLATE utf8mb4_general_ci COMMENT '市场图4',
image5 VARCHAR(100) COLLATE utf8mb4_general_ci COMMENT '市场图5',
link VARCHAR(200) COLLATE utf8mb4_general_ci COMMENT '爬取链接',
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE current_timestamp COMMENT '更新时间',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT '安智市场爬取游戏列表';
创建item:
创建项目scrapy startproject anzhispider
,修改items.py
class AnzhispiderItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()