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 相关文章推荐
详解Django中Request对象的相关用法
Jul 17 Python
Python语言生成水仙花数代码示例
Dec 18 Python
matplotlib绘图实例演示标记路径
Jan 23 Python
Python读取properties配置文件操作示例
Mar 29 Python
解决pandas使用read_csv()读取文件遇到的问题
Jun 15 Python
深入解析python中的实例方法、类方法和静态方法
Mar 11 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
Python实现把多维数组展开成DataFrame
Nov 30 Python
使用python实现数组、链表、队列、栈的方法
Dec 20 Python
基于Python fminunc 的替代方法
Feb 29 Python
DRF框架API版本管理实现方法解析
Aug 21 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
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
php常用表单验证类用法实例
2015/06/18 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
2020/07/20 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
材料物理专业大学毕业生求职信
2013/10/15 职场文书
外贸英语专业求职信范文
2013/12/25 职场文书
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
大一新生期末自我评价
2014/09/12 职场文书
心灵捕手观后感
2015/06/02 职场文书
余世维讲座观后感
2015/06/11 职场文书
员工规章制度范本
2015/08/07 职场文书
python中的getter与setter你了解吗
2022/03/24 Python
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python