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 相关文章推荐
30分钟搭建Python的Flask框架并在上面编写第一个应用
Mar 30 Python
Python中函数的参数传递与可变长参数介绍
Jun 30 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
Python 读写文件的操作代码
Sep 20 Python
在pycharm中使用git版本管理以及同步github的方法
Jan 16 Python
python验证码图片处理(二值化)
Nov 01 Python
Pycharm小白级简单使用教程
Jan 08 Python
解决TensorFlow GPU版出现OOM错误的问题
Feb 03 Python
PyQt5实现登录页面
May 30 Python
python如何查看网页代码
Jun 07 Python
python drf各类组件的用法和作用
Jan 12 Python
python 如何在测试中使用 Mock
Mar 01 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
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
php实现微信扫码支付
2017/03/26 PHP
javascript动态加载三
2012/08/22 Javascript
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
JavaScript实现分页效果
2017/03/28 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
python使用pandas实现数据分割实例代码
2018/01/25 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
什么时候用assert
2015/05/08 面试题
大学生暑期实践感言
2014/02/26 职场文书
护理见习报告范文
2014/11/03 职场文书
中国世界遗产导游词
2015/02/13 职场文书
大学学生个人总结
2015/02/15 职场文书
大学生见习总结报告
2015/06/24 职场文书
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript