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 布尔操作实现代码
Mar 23 Python
python获取文件版本信息、公司名和产品名的方法
Oct 05 Python
python通过pil为png图片填充上背景颜色的方法
Mar 17 Python
python语言使用技巧分享
May 31 Python
Python使用matplotlib填充图形指定区域代码示例
Jan 16 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
详解从Django Rest Framework响应中删除空字段
Jan 11 Python
Python入门Anaconda和Pycharm的安装和配置详解
Jul 16 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
Python如何读写字节数据
Aug 05 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中批量修改文件后缀名的函数代码
2011/10/23 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
jquery选择器简述
2015/08/31 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
Django模板Templates使用方法详解
2019/07/19 Python
浅谈Django中的QueryDict元素为数组的坑
2020/03/31 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
Python numpy大矩阵运算内存不足如何解决
2020/11/19 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
耐克美国官网:Nike.com
2016/08/01 全球购物
行政主管岗位职责
2013/11/18 职场文书
高中生学习生活的自我评价
2013/11/27 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
服务承诺口号
2014/05/22 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
年终工作总结范文2014
2014/11/27 职场文书
学生会干部任命书
2015/09/21 职场文书
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL