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通过ssh-powershell监控windows的方法
Jun 02 Python
python Django框架实现自定义表单提交
Mar 25 Python
Python实现的矩阵类实例
Aug 22 Python
Python中的pygal安装和绘制直方图代码分享
Dec 08 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
Dec 14 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
May 10 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
Django admin model 汉化显示文字的实现方法
Aug 12 Python
python 多进程队列数据处理详解
Dec 23 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
Jun 29 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获取网页里所有图片并存入数组的方法
2015/04/06 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
载入jQuery库的最佳方法详细说明及实现代码
2012/12/28 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
React实现全选功能
2020/08/25 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
Python中常见的数制转换有哪些
2020/05/27 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
精彩的推荐信范文
2013/11/26 职场文书
机电一体化专业推荐信
2013/12/03 职场文书
创业计划书如何吸引他人眼球
2014/01/10 职场文书
法律进社区活动总结
2015/05/07 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
Python利用capstone实现反汇编
2022/04/06 Python