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中的装饰器使用
Jun 20 Python
Swift 3.0在集合类数据结构上的一些新变化总结
Jul 11 Python
Python使用pylab库实现画线功能的方法详解
Jun 08 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
Jan 22 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
django自定义模板标签过程解析
Dec 14 Python
python操作cfg配置文件方式
Dec 22 Python
tensorflow 重置/清除计算图的实现
Jan 19 Python
python中wx模块的具体使用方法
May 15 Python
python如何提升爬虫效率
Sep 27 Python
Anaconda的安装与虚拟环境建立
Nov 18 Python
Django开发RESTful API实现增删改查(入门级)
May 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
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
进一步探究Python中的正则表达式
2015/04/28 Python
利用python爬取软考试题之ip自动代理
2017/03/28 Python
利用matplotlib+numpy绘制多种绘图的方法实例
2017/05/03 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
python中 * 的用法详解
2019/07/10 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
入党申请自荐书范文
2014/02/11 职场文书
继承公证书
2014/04/09 职场文书
销售求职信范文
2014/05/26 职场文书
庆六一开幕词
2015/01/29 职场文书
教师年度个人总结
2015/02/11 职场文书
文艺委员竞选稿
2015/11/19 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
python Django框架快速入门教程(后台管理)
2021/07/21 Python
vue实现在data里引入相对路径
2022/06/05 Vue.js