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 getopt模块处理命令行选项实例
May 13 Python
python中pygame模块用法实例
Oct 09 Python
Python数据结构之Array用法实例
Oct 09 Python
python简单猜数游戏实例
Jul 09 Python
Python数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
python turtle工具绘制四叶草的实例分享
Feb 14 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
pytorch实现手写数字图片识别
May 20 Python
python异常中else的实例用法
Jun 15 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服务器页面间跳转实现方法
2012/08/02 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
解决js中window.open弹出的是上次的缓存页面问题
2013/12/29 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
深入解读Python解析XML的几种方式
2016/02/16 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
python 实现批量图片识别并翻译
2020/11/02 Python
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
什么是数组名
2012/05/10 面试题
CAD制图设计师自荐信
2014/01/29 职场文书
李强感恩观后感
2015/06/17 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js