文章目录

  • 一、安装Scrapy
  • 二、Scrapy项目生成
  • 三、爬取壁纸图片链接
    • 1、修改settings文件
    • 2、写item文件
    • 3、写爬虫文件
    • 4、写pipelines文件
    • 5、执行爬虫项目
  • 四、未来可期

一、安装Scrapy

  1. Anaconda安装
    如果你的python是使用anaconda安装的,可以用这种方法。
conda install Scrapy
  1. Windows安装
    如果你的python是从官网下载的,你需要先安装以下的库:

    • lxml
    • pyOpenSSL
    • Twisted
    • PyWin32

安装完上述库之后,就可以安装Scrapy了,命令如下:

pip install Scrapy

我是通过anaconda安装的python,Windows方法参考自崔庆才老师著的《Python3网络爬虫开发实战》

二、Scrapy项目生成

项目生成的位置是自己可以控制的,比如我是把项目放在了D盘的scrapy_test这个文件夹。

操作如下:

  1. win+R
  2. 点击确定,打开cmd
  3. 依次输入以下命令,便可以切换到自己想要的路径(需要根据自己的情况进行更改)
d:  # 切换到D盘cd scrapy_test  # 切换到D盘的scrapy_test文件夹

  1. 输入命令scrapy startproject 项目名,创建项目文件夹
    示例如下:
scrapy startproject firstpro

  1. 切换到新创建的文件夹
cd firstpro
  1. 输入命令scrapy genspider 爬虫名 爬取网址的域名 ,创建爬虫项目
    示例如下:
scrapy genspider scenery pic.netbian.com

  1. 至此,一个scrapy项目创建完毕。

三、爬取壁纸图片链接

1、修改settings文件

打开settings.py

  • 修改第20行的机器人协议
  • 修改第28行的下载间隙(默认是注释掉的,取消注释是3秒,太长了,改成1秒)
  • 修改第40行,增加一个请求头
  • 修改第66行,打开一个管道

详细修改内容如下:

ROBOTSTXT_OBEY = FalseDOWNLOAD_DELAY = 1DEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en','User-Agent':'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'
}ITEM_PIPELINES = {'firstpro.pipelines.FirstproPipeline': 300,
}

2、写item文件

打开items.py

我准备爬取的内容为每张图片的名称和链接,于是我就创建了name和link这两个变量。
Field()方法实际上就是创建了一个字典。

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.htmlimport scrapyclass FirstproItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()name = scrapy.Field()link = scrapy.Field()pass

3、写爬虫文件

打开scenery.py(打开自己的爬虫文件,这里以我的为例)

import scrapy
from ..items import FirstproItemclass ScenerySpider(scrapy.Spider):name = 'scenery'allowed_domains = ['pic.netbian.com']start_urls = ['https://pic.netbian.com/4kfengjing/']  # 起始urlpage = 1def parse(self, response):items = FirstproItem()lists = response.css('.clearfix li')for list in lists:items['name'] = list.css('a img::attr(alt)').extract_first()  # 获取图片名items['link'] = list.css('a img::attr(src)').extract_first()  # 获取图片链接yield itemsif self.page < 10:  # 爬取10页内容self.page += 1url = f'https://pic.netbian.com/4kfengjing/index_{str(self.page)}.html'  # 构建urlyield scrapy.Request(url=url, callback=self.parse)  # 使用callback进行回调pass
  • 构建url
    第二页链接:https://pic.netbian.com/4kfengjing/index_2.html
    第三页链接:https://pic.netbian.com/4kfengjing/index_3.html
    根据第二第三页的链接,可以很容易的看出来,变量只能index_处的数字,且变化是逐次加1的规律。

  • css选择器
    scrapy的选择器对接了css选择器,因此定位元素,我选择了css选择器。::attr()是获取属性;extract_first()是提取列表的第一个元素。

4、写pipelines文件

打开pipelines.py
在pipeline,我们可以处理提取的数据。为了方便,我选择直接打印。

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html# useful for handling different item types with a single interface
from itemadapter import ItemAdapterclass FirstproPipeline:def process_item(self, item, spider):print(item)return item

5、执行爬虫项目

在cmd(好久没用了,应该没关掉吧)中输入命令scrapy crawl 爬虫名
以我的作为示例:

scrapy crawl scenery

这样是不是有点麻烦,而且生成的结果在cmd中,观感很差。

优化方案

在spiders文件夹中新建run.py文件(名称随意哈),输入代码(如下),执行run.py文件即可。

from scrapy import cmdlinecmdline.execute('scrapy crawl scenery'.split())  # 记得爬虫名改成自己的

输出结果:

咱就是这观感,是不是比在cmd中好得不要太多。

四、未来可期

文章到这里就要结束了,但故事还没有结局

如果本文对你有帮助,记得点个赞

【Python爬虫Scrapy框架】一、Scrapy爬虫框架的入门案例相关推荐

  1. python提取发票信息发票识别_(附完整python源码)基于tensorflow、opencv的入门案例_发票识别二:字符分割...

    (附完整python源码)基于tensorflow.opencv的入门案例_发票识别二:字符分割 发布时间:2018-05-14 20:16, 浏览次数:1201 , 标签: python tenso ...

  2. 附完整python源码)基于tensorflow、opencv的入门案例_发票识别一:关键区域定位

    发票识别一:从一张发票照片精确定位出"发票号码"."发票代码"的数字区域 注:该代码适用于 "国税通用机打发票".尽量拍摄下正常摆放的完整发 ...

  3. Java日志框架 -- SLF4J日志门面(入门案例、SLF4J优点、SLF4J日志绑定、SL4J桥接旧的日志框架)

    1. SLF4J日志门面 JCL日志门面逐渐被淘汰了,因为他无法动态的扩展具体的日志实现框架. 简单日志门面(Simple Logging Facade For Java) SLF4J主要是为了给Ja ...

  4. python爬虫scrapy框架教程_Python爬虫教程-30-Scrapy 爬虫框架介绍

    从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框 ...

  5. python 爬虫框架_Python网络爬虫-scrapy框架的使用

    1. Scrapy 1.1 Scrapy框架的安装 Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted .lxml和pyOpenSSL.在不同的平台环境下,它所依赖 ...

  6. Python 爬虫进阶三之 Scrapy 框架安装配置

    初级的爬虫我们利用 urllib 和 urllib2 库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架 Scrapy,这安装过程也是煞费苦心哪,在此整理如下. 官网 官方安装文档 安装p ...

  7. Python 框架 之 Scrapy 爬虫(二)

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取)所设计的, 也可以应 ...

  8. linux scrapy 定时任务_2019Python学习教程(全套Python学习视频):Scrapy爬虫框架入门...

    Scrapy爬虫框架入门 Scrapy概述 Scrapy是Python开发的一个非常流行的网络爬虫框架,可以用来抓取Web站点并从页面中提取结构化的数据,被广泛的用于数据挖掘.数据监测和自动化测试等领 ...

  9. python爬虫框架学习_学习Python爬虫必备框架:Scrapy

    一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据. 但目前Scrapy的用途十分广泛, ...

  10. python爬虫抓取分页_Scrapy爬虫框架之Scrapy爬取分页数据(一)

    Python应用场景 Scrapy 爬虫框架 课程特色 时间就是生命,浓缩才是精华 (4小时,完成了Scrapy爬虫必备知识点讲解) 课程体系完整 ( 应用场景.Scrapy体系结构.分页爬虫.整站爬 ...

最新文章

  1. R语言使用ggpubr包的ggbarplot函数可视化分组条形图(grouped bar plot)、并添加误差条(error bar、误差条显示平均值+/-sd)、不添加填充色、添加jitter抖动
  2. centos7 systemctl 管理 mysql
  3. hadoop2 作业执行过程之作业提交
  4. python家的杨辉三角
  5. jquery实现页面加载时删除特定class 的div内前三个字符
  6. SpringBoot Admin2.0 集成 Java 诊断神器 Arthas 实践
  7. 分析Java中的三种不同变量的区别
  8. 中科慧眼双目安装pcl
  9. java求一个正整数的位数_java经典问题——求正整数的位数
  10. Java基于SSM的宠物店管理系统
  11. 台式计算机能不能安装蓝牙驱动,win7电脑蓝牙驱动怎么安装,详细教您怎么安装...
  12. 读《三体》差点污了我的三观
  13. 苹果4怎么越狱_它的维生素C含量是苹果的4倍,是我国第4大主粮,土豆怎么种植的...
  14. python乘法口诀表
  15. ppt如何替换其他mo ban_PPT如何做视觉化的数据图表?
  16. openldap范例数据库mysql_用mysql作openldap的后台数据库
  17. 如何将RAW格式的磁盘修改为NTFS?教给你三种操作方法
  18. 如何将您的智能手机用作Amazon Fire TV遥控器
  19. 【Code】OJ推荐
  20. stringbuilder截取最后一个字符

热门文章

  1. 【社保—五险一金科普】
  2. 杭州初中计算机老师怎么样,杭州中学两位老师,获得浙江省优质课评比一等奖。学生激动留言,这么多年老师还是这么漂亮!...
  3. Win10系统安装office后excel等文件图标显示异常
  4. 零基础快速做一个语音控制系统
  5. excel批量删除数值前几位
  6. 通过游戏编程学Python(番外篇)— 乱序成语、猜单词
  7. HBuilder 开发工具
  8. 腾讯云内容分发网络 CDN 产品认证课程笔记(二)——腾讯云CDN介绍
  9. 【JZOJ 5424】【NOIP2017提高A组集训10.25】凤凰院凶真
  10. word2016自动目录样式修改