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代码依赖的库的实现代码
Aug 09 Python
Django 使用logging打印日志的实例
Apr 28 Python
Python unittest模块用法实例分析
May 25 Python
pytorch 数据集图片显示方法
Jul 26 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
python如何发布自已pip项目的方法步骤
Oct 09 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
python3 selenium自动化 frame表单嵌套的切换方法
Aug 23 Python
简单了解pytest测试框架setup和tearDown
Apr 14 Python
python中Pexpect的工作流程实例讲解
Mar 02 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 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实现链结人气统计
2006/10/09 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
utf8的编码算法 转载
2006/12/27 Javascript
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
JS实现图片切换特效
2019/12/23 Javascript
python单线程实现多个定时器示例
2014/03/30 Python
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
Django实现学生管理系统
2019/02/26 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
python matplotlib 绘图 和 dpi对应关系详解
2020/03/14 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
苹果台湾官网:Apple台湾
2019/01/05 全球购物
销售演讲稿范文
2014/01/08 职场文书
欠款证明
2015/06/24 职场文书
python基于opencv批量生成验证码的示例
2021/04/28 Python
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技