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编写的微博应用
Oct 17 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
python实现批量修改文件名代码
Sep 10 Python
详解如何使用Python编写vim插件
Nov 28 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 Python
一看就懂得Python的math模块
Oct 21 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
详解python:time模块用法
Mar 25 Python
python sorted函数的小练习及解答
Sep 18 Python
Python lambda表达式原理及用法解析
Aug 18 Python
python编写实现抽奖器
Sep 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
php dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
Zend Guard使用指南及问题处理
2015/01/07 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
JavaScript输出所选择起始与结束日期的方法
2017/07/12 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
python去除所有html标签的方法
2015/05/05 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
flask框架视图函数用法示例
2018/07/19 Python
python中pip的安装与使用教程
2018/08/10 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
详解Python打包分发工具setuptools
2019/08/05 Python
python框架flask表单实现详解
2019/11/04 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
对公司合理化的建议书
2014/03/12 职场文书
商业融资计划书
2014/04/29 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
单位员工收入证明样本
2014/10/09 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
实习护士自荐信
2015/03/25 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
CSS3实现的侧滑菜单
2021/04/27 HTML / CSS
tensorboard 可视化之localhost:6006不显示的解决方案
2021/05/22 Python