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 链接和操作 memcache方法
Mar 04 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
python中的随机函数random的用法示例
Jan 27 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
用python标准库difflib比较两份文件的异同详解
Nov 16 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
浅析Python 序列化与反序列化
Aug 05 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
Python 用__new__方法实现单例的操作
Dec 11 Python
Python提取PDF指定内容并生成新文件
Jun 09 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
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
寻找网站后台地址的python脚本
2014/09/01 Python
python利用datetime模块计算时间差
2015/08/04 Python
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
个人求职简历的自我评价范文
2013/10/09 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
民政局个人整改措施
2014/09/24 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
太行山上观后感
2015/06/05 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
趣味运动会赞词
2015/07/22 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python