Scrapy使用的基本流程与实例讲解


Posted in Python onOctober 21, 2018

前面已经介绍过如何创建scrapy的项目,和对项目中的文件功能的基本介绍。

这次,就来谈谈使用的基本流程:

(1)首先第一点,打开终端,找到自己想要把scrapy工程创建的路径。这里,我是建立在桌面上的。打开终端,输入:
cd Desktop 就进入了桌面文件存储位置。

Scrapy使用的基本流程与实例讲解

(2)创建scrapy工程。终端输入:scrapy startproject image

Scrapy使用的基本流程与实例讲解

终端输入:cd image

继续输入:scrapy genspider imageSpider pic.netbian.com

Scrapy使用的基本流程与实例讲解

(3)在pycharm中打开刚才桌面的文件,进入settings.py设置爬虫规则。可以将规则直接注释掉,或者改为False

Scrapy使用的基本流程与实例讲解

(4) 回到爬虫文件。

Scrapy使用的基本流程与实例讲解

更改start_url,将爬虫默认的第一个网址更改为需要爬取的网站网址即可。

(5)下面就可以爬取数据了,这里选择了下载图片。

爬取完数据之后,要在存储数据的items.py文件中传输给管道

接下来在爬虫文件中引入管道模型。

from ..items import ImageItem

在爬虫文件中的parse函数中使用在items.py文件中创建的数据模型。

item = ImageItem()

注意点:

有时候在终端输出的时候,如果返回内容是scrapy.selector ,如果对象类型是scrapy.selector,那么这个对象可以被继续迭代,也可以用xpath继续寻找里面的内容。

如果终端遇到这个问题:

# ValueError:Missing scheme in request url:h

那么就需要使用extract()将xpath对象转化成列表对象。而列表对象,可以继续被迭代,但是不可以使用xpath来寻找里面的对象。

在下载之前还需要在settings.py文件中,对图片下载的路径和存储位置进行设置。

Scrapy使用的基本流程与实例讲解

下面附代码如下。仅有爬虫文件的代码:

# -*- coding: utf-8 -*-
import scrapy
from ..items import ImageItem
class ImagespiderSpider(scrapy.Spider):
  name = 'imageSpider'
  allowed_domains = ['pic.netbian.com']
  start_urls = ['http://pic.netbian.com/4kmeinv/']
 
  def parse(self, response):
    img_list = response.xpath('//ul[@class="clearfix"]/li/a/img/@src')
    # 找到了很多src属性值,现在进行遍历,分别使用每一个
    for img in img_list:
      # 使用在items.py中创建的数据模型item
      item = ImageItem()
      print('--------------------')
      img = img.extract()
      # 拼接图片的url,得到完整的下载地址
      src = 'http://pic.netbian.com' +img
      # 将得到的数据放入到模型中
      # 因为是下载地址,所以要用列表包起来,否则会报错。
      item['src'] = [src]
      yield item
    next_url = response.xpath('//div[@class="page"]/a[text()="下一页"]/@href').extract()
    print('*****************************************************************')
    if len(next_url)!=0:
      url = 'http://pic.netbian.com'+next_url[0]
      # 将url传给scrapy.Request 得到的结果继续用self.parse进行处理
      yield scrapy.Request(url=url,callback=self.parse)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
用Python进行TCP网络编程的教程
Apr 29 Python
详解Python读取配置文件模块ConfigParser
May 11 Python
Python中matplotlib中文乱码解决办法
May 12 Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 Python
python实现定时发送qq消息
Jan 18 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
python实现最大优先队列
Aug 29 Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
Python机器学习三大件之一numpy
May 10 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 #Python
Python3 读、写Excel文件的操作方法
Oct 20 #Python
python numpy数组的索引和切片的操作方法
Oct 20 #Python
详解Python字典小结
Oct 20 #Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 #Python
Django中的ajax请求
Oct 19 #Python
Tesserocr库的正确安装方式
Oct 19 #Python
You might like
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP安全配置
2006/12/06 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
JQuery中extend使用介绍
2014/03/13 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
推荐11个实用Python库
2015/01/23 Python
用python实现百度翻译的示例代码
2018/03/09 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
Python利用命名空间解析XML文档
2020/08/10 Python
写演讲稿要注意的六件事
2014/01/14 职场文书
参观考察邀请函范文
2014/01/29 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
优秀应届生求职信
2014/06/16 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
具结保证书
2015/01/17 职场文书
中班下学期个人总结
2015/02/12 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
迎国庆主题班会
2015/08/17 职场文书
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
如何用JS实现简单的数据监听
2021/05/06 Javascript