在之前的博客中,我们学习了selenium的用法,它是一个动态抓取页面的方法,但是,动态抓取页面还有其他的方法,这里介绍Splash方法,并结合具体实例进行讲解。

一:Splash简介与准备

1.简介

  Splash是一个JavaScript渲染服务,说到js大家肯定会想到网页,对的,Splash是Scrapy中支持JavaScrapy渲染的工具,是一个带有HTTP API的轻量级浏览器,可以进行动态渲染页面的抓取。

2.安装

  Scrapy-Splash安装有两个方法,这里我们用Docker进行安装,因此首先要安装Docker(多容器技术,将应用和环境进行打包,形成一个独立的"应用",可以让每个应用隔离,适合于大规模爬虫系统),下载地址为:

  https://docs.docker.com/docker-for-windows/install/

  下载后安装,会出现 docker desktop requires Windows 10 Pro or Enterprise version 15063问题。

这个问题是windows10家庭版不支持Hyper-V,无法安装docker,需要下载docker toolbox安装。地址为:

  http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/



  也可以开启Hyper-V进行安装,这里就不具体说明了。

  安装后打开cmd控制台,会有下面的结果,说明运行成功(安装的过程很麻烦,需要耐心):

  下面就是用安装Scrapy-Splash了,安装的命令为:

docker run -p 8050:8050 scrapinghub/splash

  这里的话,我在环境配置上出了问题,再bios中把Intel Virtualization Technology已经设置为enable,但是再运行docker时还是出现了问题,在外部的因特尔虚拟化技术已经打开了,但是却用不了virutualBox虚拟机。这里等到之后的博客,继续为大家讲解Splash。如果大家有知道原因的话,可以和我交流。

二:验证码的识别(1)

  现在,许多网站都用各种各样的措施进行反爬虫,其中一项就是用验证码。而且验证码现在已经发展得有很多种,而且交互式验证码已经越来越流行,需要鼠标操作的也越来越多,这也造成爬虫的工作越发艰难,下面就先介绍如何用python识别常见的一种图形验证码。

图形验证码的识别

  图形验证码是最早的验证码,很常见,一般有字母和数字组成,我们先保存网上的一些验证码图片,如下:

(1)使用的识图技术

  OCR技术:光学字符识别,是指通过扫描字符·,然后通过形状将其翻译成电子文本的过程。

(2)识图用到的库

  tesserocr库:Python的一个OCR识别库,是对tesseract做的一层封装,因此需要先安装tesseract,然后安装tesserocr,安装过程这里就不详讲了。

(3)识图方法实现
import tesserocr
from PIL import Image image = Image.open('1.jpg')
result = tesserocr.image_to_text(image)
print(result)

识别前后的图片和结果如下:

  还有其他方法也可以识别验证码,就是用file_to_text()方法直接将图片文件转化为字符串,我们换张图片如下:

print(tesserocr.file_to_text('2.jpg'))

识别前后的图片和结果如下:

  我们看到识别的结果和我们想要的有所区别,但其实是线条阻挡了,在下面的博客中会介绍如何处理。

其他的验证码识别如下:

Scrapy-Splash简介及验证码的处理(一)的更多相关文章

  1. 爬虫基础(五)-----scrapy框架简介

    ---------------------------------------------------摆脱穷人思维 <五> :拓展自己的视野,适当做一些眼前''无用''的事情,防止进入只关 ...

  2. scrapy splash 之一二

    scrapy splash 用来爬取动态网页,其效果和scrapy selenium phantomjs一样,都是通过渲染js得到动态网页然后实现网页解析, selenium + phantomjs ...

  3. 爬虫开发7.scrapy框架简介和基础应用

    scrapy框架简介和基础应用阅读量: 1432 scrapy 今日概要 scrapy框架介绍 环境安装 基础使用 今日详情 一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数 ...

  4. scrapy+splash 爬取京东动态商品

    作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3159 splash是容器安装的,从docker官网上下载windows下的 ...

  5. scrapy架构简介

    一.scrapy架构介绍 1.结构简图: 主要组成部分:Spider(产出request,处理response),Pipeline,Downloader,Scheduler,Scrapy Engine ...

  6. Python scrapy爬取带验证码的列表数据

    首先所需要的环境:(我用的是Python2的,可以选择python3,具体遇到的问题自行解决,目前我这边几百万的数据量爬取) 环境: Python 2.7.10 Scrapy Scrapy 1.5.0 ...

  7. Scrapy+splash报错 Connection was refused by other side

    报错信息如下: Traceback (most recent call last):   File "/usr/local/lib/python3.7/site-packages/scrap ...

  8. Scrapy 框架简介

    Scrapy 框架 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的 ...

  9. 爬虫(九)scrapy框架简介和基础应用

    概要 scrapy框架介绍 环境安装 基础使用 一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能 ...

随机推荐

  1. 自定义滚动条样式纯(css)

    啥都不说先看图: 注: 只适合chrom,不适用IE和fireFox 下面展示代码: <html lang="en"> <head> <meta ch ...

  2. git设置github的远程仓库的相关操作

        git能够把github作为远程仓库,本地可以进行推送有关变更,从而多人可以进行协作开发工作.    1  ssh-keygen -t rsa -C "your-email@163. ...

  3. ubuntu 安装elasticsearch

    elasticsearch简介  环境准备 elasticsearch:7.0.0 kibana          :7.0.0 安装 1.新创建普通用户 elasticsearch不能用root账号 ...

  4. webpack中使用jquery

    首先我只有一个js文件,只用在那个文件中引入,因此 一  下载包 npm install jquery --save 二 在使用的jquery的文件顶部输入js代码 import $ from 'jq ...

  5. python的列表元素输出

    1)for循环输出 这种方法是大家最容易想到的,也是最简单的,但是它有一个弊端:它的输出是竖向排列的,而我们往往需要水平输出. >>> for i in [1,2,3]: print ...

  6. Windows 10 路由表管理

    基本管理命令: route print route命令基本格式: ROUTE [-f] [-p] [-|-] command [destination] [MASK netmask] [gateway ...

  7. 关于如何刷新清除某个特定网站的缓存---基于Chrome浏览器

    今天工作时又发现了一个小技巧 1.打开一个网站如:百度 2.打开F12开发者模式 3.右键浏览器的刷新按钮,会出现三个选项:正常重新加载,硬性重新加载,清空缓存并硬性重新加载 正常重新加载 Ctrl+ ...

  8. 杂项记录 arm64 的一些特性

    函数返回值:arm64 规定了整数型返回值放在 x0 寄存器里 sp(栈空间)字节对齐:该临时变量占用 4字节空间:又因为 arm64 下对于使用 sp 作为地址基址寻址的时候,必须要 16byte- ...

  9. Centos 7 LAMP+wordpress

    一.简介        LAMP--->Linux(OS).Apache(http服务器),MySQL(有时也指MariaDB,数据库) 和PHP的第一个字母,一般用来建立web应用平台. 它是 ...

  10. Paper | Xception: Deep Learning with Depthwise Separable Convolutions

    目录 故事 Inception结构和思想 更进一步,以及现有的深度可分离卷积 Xception结构 实验 这篇论文写得很好.只要你知道卷积操作或公式,哪怕没看过Inception,也能看懂. 核心贡献 ...