最近Python大火,为了跟上时代,试着自学了下。Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv、json等文件中。
今天我们就试着用Scrapy来爬取简书某位作者的全部文章。
在本篇教程中,我们假定您已经安装好Scrapy。 如若不然,请参考 安装指南 。
1.创建项目
在开始爬取之前,我们必须创建一个新的Scrapy项目,我这里命名为jianshu_article。打开Mac终端,cd到你打算存储代码的目录中,运行下列命令:
//Mac终端运行如下命令:
scrapy startproject jianshu_article
2.创建爬虫程序
//cd到上面创建的文件目录
cd jianshu_article
//创建爬虫程序
scrapy genspider jianshu jianshu.com
/*
文件说明:
scrapy.cfg 项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)
items.py 设置数据存储模型,用于结构化数据,如:Django的Model
pipelines 数据处理行为,如:一般结构化的数据持久化
settings.py 配置文件,如:USER_AGENT(模拟浏览器,应对网站反爬),递归的层数、并发数,延迟下载等
spiders 爬虫目录,如:创建文件,编写爬虫规则
*/
为了方便编写程序,我们用Pycharm打开项目,执行完上面的命令程序会自动创建目录及文件,其中生成了一个jianshu.py的文件,后面我们主要逻辑都将写在此文件中。
jianshu.py
3.设置数据模型
双击items.py文件。
找到你想爬取的简书作者首页,如我自己的首页https://www.jianshu.com/u/6b14223f1b58,用谷歌浏览器打开,空白处鼠标右击,单击“检查”进入控制台开发者模式:
打开控制台.png
通过分析网页源码,我们大概需要这些内容:
# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html
import scrapy
class JianshuArticalItem(scrapy.Item):
avatar = scrapy.Field() #头像
nickname = scrapy.Field() #昵称
time = scrapy.Field() #发表时间
wrap_img = scrapy.Field() #封面(缺省值)
title = scrapy.Field() #标题
abstract = scrapy.Field() #正文部分显示
<