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 str与repr的区别
Mar 23 Python
Python发送Email方法实例
Aug 21 Python
python实现在sqlite动态创建表的方法
May 08 Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
Apr 28 Python
pytorch 数据集图片显示方法
Jul 26 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
pycharm新建一个python工程步骤
Jul 16 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
python修改文件内容的3种方法详解
Nov 15 Python
Anaconda的安装及其环境变量的配置详解
Apr 22 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源码之 ext/mysql扩展部分
2009/07/17 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
php+xml编程之xpath的应用实例
2015/01/24 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
node.js的事件机制
2017/02/08 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
python 3.8.3 安装配置图文教程
2020/05/21 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
班组长岗位职责范本
2014/01/05 职场文书
办加油卡单位介绍信
2014/01/09 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
2014年材料员工作总结
2014/11/19 职场文书
党校培训学习心得体会
2016/01/06 职场文书
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript
python内置进制转换函数的操作
2021/06/02 Python
如何解决php-fpm启动不了问题
2021/11/17 PHP