1 创建项目

  • 点击WEB中的Create创建项目

  • 填入相关项目名和其实爬取URL

  • 创建后进入项目首页

  • 右边 Handler 是pyspider的主类,整个爬虫一个Handler,其中可定义爬虫的爬取、解析、存储逻辑;crawl_config 中定义项目爬取配置;on_start() 爬取入口,通过调用 crawl() 方法新建爬取请求,第一个参数是爬取的URL,另外一个参数callback指定爬取成功后的解析方法,即index_page()。index_page() 接收Response参数,Response对接了pyquery,可直接调用doc()解析页面;detail_page() 方法接收Response参数,抓取详情页信息,不生成新的请求,对Response解析后以字典形式返回数据。
  • 左边,上面绿色和灰色是运行参数内容,下面点击左边RUN按钮,运行项目,follow中是请求连接,点击连接右边运行三角,进入页面;html是源码;web是渲染页面; enable css selecter helper帮助进行css选择,在右边代码中选中doc方法引号中内容后,点击web窗口右上方箭头实现右边代码css选择替换;massage是页面信息。
  • 点击run运行项目

  • 发现follows中出现一条消息,点击follows

  • 出现如下界面

  • 点击三角运行符号,进入该界面

  • 出现页面所有请求后,点击HTML显示源码,点击web展示页面,如果web窗口太小,可以通过开发者模式调整(尝试网上说的修改debug.min.css失败)

  • 选择右边index_page()方法中的css选择器内容,点击左边enable css selecter helper然后选择对应元素,在3位置出现选择的元素后,点击右边箭头,对右边代码选中内容进行替换

  • 再次点击左边run,follows变成10条选中css的请求连接。

  • 要想选择多页,即实现自动翻页爬取,修改index_page()内容
@config(age=10 * 24 * 60 * 60)
def index_page(self, response):
for each in response.doc('li > .tit > a').items():
self.crawl(each.attr.href, callback=self.detail_page)
next=response.doc('.next').attr.href
self.crawl(next,callback=self.index_page)
  • 再次点击run,follows变成11(多了next)
  • 随便点进一个内容连接,发现没有图片,需要修改crawl添加fetch参数,修改后,重新run
self.crawl(each.attr.href, callback=self.detail_page,fetch_type='js')

  • 然后修改detail_page(),设置要保存的数据信息
@config(priority=2)

    def detail_page(self, response):

        return {

            "url": response.url,

            "title": response.doc('#booktitle').text(),

            "date":response.doc('.when .data').text(),

            "day":response.doc('.howlong .data').text(),

            "who":response.doc('.who .data').text(),

            "text":response.doc('#b_panel_schedule').text(),

            "image":response.doc('.cover_img').attr.src,

        }
  • 点击run运行成功后,点击右边save保存项目

  • 之后就可以返回pyspider首页,管理项目

  • 选择项目运行状态,设置rate/burst【rate表示1s发出多少个请求;burst相当于流控制中令牌桶算法的令牌数;这两个值越大爬取速率越快,也越有可能被封】; progress 四个进度条各时间段状态,蓝色等待执行,绿色成功执行,黄色失败后等待重试,红色失败太多被忽略的任务actions可以运行项目查看结果。
  • 我们可以看一下result,右上角可以下载数据

2 pyspider用法详解

  • 命令行:

pyspider all / pyspider # 启动

pyspider [OPTIONS] COMMAND [ARGS]

可以指定配置文件访问,pyspider -c pyspider.json all

也可以单独运行一个组件,pyspider scheduler/fetcher/processor [OPTIONS]

更换端口运行 pyspider webui --port 5001 ,也可以写进配置文件中

  • crawl方法参数配置:

url 可以是列表也可以是字符串;callback 回调函数解析响应的方法;age 任务的有效时间;priority 优先级越大越优先;exetime 定时任务,时间戳类型;retries 重试次数,默认为3;itag 判定网页是否发生变化的节点值;auto_recrawl 值为true即开启后爬取任务过期后悔重新执行;method HTTP请求方式默认是GET;params 定义get请求参数;data 定义POST表单数据;files 定义上传文件;user_agent;headers;cookies;connect_timeout 初始化最长等待时间,默认20s;timeout 抓取最长等待时间,默认120s;allow_redirects 自动处理重定向,默认True;validate_cert 是否验证证书 对HTTPS有效,默认True;proxy 代理;fetch_type 开启PhantomJS渲染;js_script 页面加载后执行的js脚本;js_run_at js脚本运行位置,默认document-end;js_viewport_width/js_viewport_height js渲染时窗口大小;load_iamges 在加载js页面时是否加载图片,默认否;save 可以在不同方法直接传递参数;cancel 取消任务,如果一个任务是active状态,需要设置force_update为True;force_update 强制更新状态

  • 任务区分

pyspider判断两个任务是否重复,对URL的MD5值作为任务的唯一ID。重写task_id()方法可以改变ID计算方式,进行区分如相同URL的post和get

  • 全局配置

在crawl_config中进行指定

  • 定时爬取

可以在on_start前的every属性设置爬取的时间间隔,24*60代表每天执行一次。index_page上面的age代表过期时间,如果未到过期时间是不会重新执行的。

  • 项目状态

TODO 刚创建还没有实现;STOP 停止某项目抓取;CHECKING 正在运行的项目被修改后;DEBUG/RUNNIG 调试/运行;PAUSE 暂停,爬取中多次连续错误,会被自动设置暂停,一段时间后继续爬取;

  • 抓取进度

progress 四个进度条各时间段状态,蓝色等待执行,绿色成功执行,黄色失败后等待重试,红色失败太多被忽略的任务。

  • 删除项目

pyspider没有删除项目的选项,如果要删除,将项目状态设置为STOP,分组名称设置为delete,24h后自动删除。

PySpider爬取去哪儿攻略数据项目的更多相关文章

  1. Python爬虫系列之爬取美团美食板块商家数据(二)

    今天为大家重写一个美团美食板块小爬虫,说不定哪天做旅游攻略的时候也可以用下呢.废话不多说,让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: requests模块: argpar ...

  2. Java爬虫系列四:使用selenium-java爬取js异步请求的数据

    在之前的系列文章中介绍了如何使用httpclient抓取页面html以及如何用jsoup分析html源文件内容得到我们想要的数据,但是有时候通过这两种方式不能正常抓取到我们想要的数据,比如看如下例子. ...

  3. 爬虫(二)Python网络爬虫相关基础概念、爬取get请求的页面数据

    什么是爬虫 爬虫就是通过编写程序模拟浏览器上网,然后让其去互联网上抓取数据的过程. 哪些语言可以实现爬虫    1.php:可以实现爬虫.php被号称是全世界最优美的语言(当然是其自己号称的,就是王婆 ...

  4. 使用 Scrapy 爬取去哪儿网景区信息

    Scrapy 是一个使用 Python 语言开发,为了爬取网站数据,提取结构性数据而编写的应用框架,它用途广泛,比如:数据挖掘.监测和自动化测试.安装使用终端命令 pip install Scrapy ...

  5. 网络字体反爬之pyspider爬取起点中文小说

    前几天跟同事聊到最近在看什么小说,想起之前看过一篇文章说的是网络十大水文,就想把起点上的小说信息爬一下,搞点可视化数据看看.这段时间正在看爬虫框架-pyspider,觉得这种网站用框架还是很方便的,所 ...

  6. python 爬取天猫美的评论数据

    笔者最近迷上了数据挖掘和机器学习,要做数据分析首先得有数据才行.对于我等平民来说,最廉价的获取数据的方法,应该是用爬虫在网络上爬取数据了.本文记录一下笔者爬取天猫某商品的全过程,淘宝上面的店铺也是类似 ...

  7. Python网络爬虫第三弹《爬取get请求的页面数据》

    一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...

  8. Python爬虫《爬取get请求的页面数据》

    一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...

  9. 02. 爬取get请求的页面数据

    目录 02. 爬取get请求的页面数据 一.urllib库 二.由易到难的爬虫程序: 02. 爬取get请求的页面数据 一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用 ...

随机推荐

  1. ES6中的新数据类型——Symbol

    今天小编和大家来聊一聊es6中新增的一个原始数据类型Symbol.在es5中原始数据类型(基本数据类型)有以下六种:Undefind.Null.Bool. String.Number.Object.今 ...

  2. Java IO学习笔记七:多路复用从单线程到多线程

    作者:Grey 原文地址:Java IO学习笔记七:多路复用从单线程到多线程 在前面提到的多路复用的服务端代码中, 我们在处理读数据的同时,也处理了写事件: public void readHandl ...

  3. Unity3D学习笔记1——绘制一个三角形

    目录 1. 绪论 2. 概述 3. 详论 3.1. 准备 3.2. 实现 3.3. 解析 3.3.1. 场景树对象 3.3.2. 绘制方法 4. 结果 1. 绪论 最近想学习一下Unity3d,无奈发 ...

  4. 快速串讲——JVM内存的区域划分

    目的 快速定位JVM内存泄漏或者溢出等问题. 面试基础题,加分项. 文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍. 程序计数器(Progra ...

  5. 入门Kubernetes - 滚动升级/回滚

    一.前言 上一篇文章中对yaml文件格式进行了解,并对k8s中各种主要资源通过yaml创建时的定义模板.接来下就进一步学习k8s的各种特点.并应用在示例中. 接下来先实现.Net Core Api程序 ...

  6. 尝鲜一试,Azure静态网站应用服务(Azure Static Web Apps) 免费预览,协同Github自动发布静态SPA

    背景 最近在浏览微软的文档的时候发现,微软喜欢用Hugo这个文档框架,有些技术产品的文档页面就用Hugo来做的,同时搭配Github + Azure Static Web Apps Service这个 ...

  7. Vue3全家桶升级指南二ref、toRef、toRefs的区别

    ref是对原始数据的拷贝,当修改ref数据时,模板中的视图会发生改变,但是原始数据并不会改变. toRef是对原始数据的引用,修改toRef数据时,原始数据也会发生改变,但是视图并不会更新. 在vue ...

  8. JS刷新窗口的几种方式

    浮层内嵌iframe及frame集合窗口,刷新父页面的多种方法   <script language=JavaScript>       parent.location.reload(); ...

  9. Datahub 0.8.5发布! 通用的元数据搜索和发现工具

    近期Datahub 发布了最新的版本0.8.5,作为LinkedIn开源的通用的元数据搜索和发现工具.Datahub近一年来有了巨大的发展,也成为了很多公司进行元数据管理的调研方向并进行使用的选择. ...

  10. DRF之权限和频率限制

    一.权限 权限可以限制用户对视图的访问和对具体数据对象的访问. 在执行视图的dispatch方法前,会先进行视图访问权限的判断 在通过get_object获取对象时,会进行模型对象访问权限的判断 源码 ...