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 collections模块实例讲解
Apr 07 Python
python3生成随机数实例
Oct 20 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
python标准库os库的函数介绍
Feb 12 Python
彻底搞懂 python 中文乱码问题(深入分析)
Feb 28 Python
如何在django中运行scrapy框架
Apr 22 Python
Python-jenkins模块获取jobs的执行状态操作
May 12 Python
Python flask框架端口失效解决方案
Jun 04 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
python中__slots__节约内存的具体做法
Jul 04 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
咖啡知识大全
2021/03/03 新手入门
用PHP制作静态网站的模板框架(一)
2006/10/09 PHP
PHP游戏编程25个脚本代码
2011/02/08 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
layui实现数据分页功能
2019/07/27 Javascript
在nodejs中创建child process的方法
2021/01/26 NodeJs
python实现定时同步本机与北京时间的方法
2015/03/24 Python
python中metaclass原理与用法详解
2019/06/25 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
Python线程threading模块用法详解
2020/02/26 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
python 用struct模块解决黏包问题
2020/11/07 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
英文商务邀请信
2014/01/22 职场文书
文明礼仪标语
2014/06/13 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
python process模块的使用简介
2021/05/14 Python
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技