1 止步听风

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 6w+

Python网络爬虫(二十四)——Scrapy-Redis

Scrapy-Redis 分布式爬虫组件Scrapy 是一个框架,他本身是不支持分布式的。如果我们想要做分布式的爬虫,就需要借助一个组件叫做 Scrapy-Redis,这个组件正是利用了 Redis 可以分布式的功能,集成到 Scrapy 框架中,使得爬虫可以进行分布式。可以充分的利用资源(多个ip、更多带宽、同步爬取)来提高爬虫的爬行效率。分布式爬虫的优点:可以充分利用多台机器的带宽 可以充分利用多台机器的 ip 地址 多台机器做,爬取效率更高分布式爬虫必须要解决的问题:分布式爬虫是

2020-05-25 23:40:42

Python网络爬虫(二十三)——Redis

概述redis 是一种支持分布式的非关系型数据库,数据是保存在内存中,同时 redis 可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比 memcached 支持更多的数据结构。redis 和 memcached memcached redis 类型 纯内存数据库 内存磁盘同步数据库 数据类型 在定义value时就要固定数据类型 不需要 ...

2020-05-25 23:11:46

Python网络爬虫(二十二)——Downloader Middlewares

在 Scrapy 框架中的 Engine 和 Downloader 之间存在一个 Downloader Middlewares,我们知道 spider 发送的请求需要通过 Engine 发送给 Downloader 进行下载,而 Downloader 完成下载后的响应要通过 Engine 发送到 spider 进行解析。而下载器中间件则可以在请求发送给 Downloader 和响应发送给 Engine 之前执行某些操作,如设置代理,请求头等,而这些操作都是通过两个函数实现的:process_reques

2020-05-25 17:33:39

Python网络爬虫(二十一)——Request 和 Response

Requestclass Request(object_ref): def __init__(self, url, callback=None, method='GET', headers=None, body=None, cookies=None, meta=None, encoding='utf-8', priority=0, dont_filter=False, errback=None, flags=None, cb

2020-05-25 16:17:52

Python网络爬虫(二十)——Scrapy Shell

之前我们使用 Scrapy 简单实验了一下该框架,利用该框架确实使整个过程简单了很多,能够使用户更加专注于整体的实现而不是细枝末节。但是也有一点不太方便,就是在调试代码的代码的时候,需要等待较长的时间才能够看到结果,这也会影响整个开发的效率。而 Scrapy Shell 则可以部分解决该问题。Scrapy Shell启动打开终端 进入到 Scrapy 项目所在的目录,执行命令:scrapy shell domainname示例这里以下面的为例,简单说明 Scrapy Shell 的

2020-05-25 12:32:48

Python网络爬虫(十九)——CrawlSpider

在之前 Scrapy 的基本使用当中,spider 如果要重新发送请求的话,就需要自己解析页面,然后发送请求。而 CrawlSpider 则可以通过设置 url 条件自动发送请求。CrawlSpider 是 Spider 的一个派生类,相对于 Spider 来说,功能进行了更新,使用也更加方便。CrawlSpider创建 CrawlSpider和之前创建 spider 一样,虽然可以在创建 Scrapy 项目之后手动构造 spider,但是 Scrapy 也给出了在终端下创建 CrawlSp

2020-05-25 11:51:17

Python网络爬虫(十八)——Scrapy基本使用

因为 Scrapy 作为爬虫的一个工具来说功能比较强大,这里会分几篇文章来说明。创建项目Scrapy 的项目构建是通过终端完成的,在要放置项目的目录下执行:scrapy startproject projectname此时就在终端当前的目录下创建了名为 projectname 的项目。项目结构项目构建后,会自动生成一系列文件,这些文件共同构成了该爬虫项目,文件主要有:items.py:用来存放爬虫获取的数据模型,也就是事先对数据结构进行定义middlewares.py:用来

2020-05-25 08:42:36

Python网络爬虫(十七)——Scrapy架构

概述对于爬虫来说,整个爬虫包括了网络请求、数据解析、数据请求、设置代理、多线程等内容,这些部分在之前的内容中都分别进行了说明。因此如果在之前要完成一个爬虫的话,就要使用上面提到的所有工具,从头开始一步一步构建自己的爬虫,这无疑是一项繁琐的工作,而 Scrapy 解决了这个问题。Scrapy 则实现了上边的所有功能,Scrapy 通过将基本的功能进行封装,从而提高了开发的效率。而正是因为它强大的功能,使得它也区别于之前提到的实现某一项功能的工具。这里先说明 Scrapy 框架。数据流上边红

2020-05-24 20:56:46

Python网络爬虫(十六)——Tesseract

对于用户来说,当然希望自己的爬虫能够爬取到自己想要的资源,但是对于服务来说,有时候却并不希望自己服务器上的资源那么轻易的被爬虫获取到。因此就出现了反爬虫,图形验证码就是这样一种机制。各种验证码可以说是判断操作者是人还是机器的一个重要手段,而光学文字识别(Optical Character Recognition,OCR)可以或多或少解决这个问题。TesseractTesseract 是一个 OCR 库,通过训练该库可以识别任何字体。安装该项目的 github 地址为:https://gi

2020-05-24 17:59:48

Python网络爬虫(十五)——Selenium

AJAX对于静态网页来说,在你发出请求的时候会请求全部的资源,而对于网页资源涉及较多,有一部分资源加载较慢的网页来说,等所有的资源全部加载完毕之后才显示整个网页的策略则会大大影响用户的使用。而动态网页则可以避免这个问题。异步 JavaScript 和 XML(Asynchronouse JacaScript and XML)能够在后台与服务器进行少量的数据交换,从而可以使网页实现异步更新,这样就可以在不重新加载整个页面的情况下,对网页的数据进行更新,通过 AJAX 加载的数据可以通过 JSON 将数

2020-05-24 10:42:37

Python网络爬虫(十四)——threading

简介对于爬取图片或者爬取章节数目过多的小说来说,采取同步的方式进行下载会导致效率的下降,这对于网络爬虫来说是一个很大的缺陷。而使用多线程则可以避免这个问题,提高整个爬取过程的效率。多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。threadingthreading 是 python 中用来进行多线程的一个模块。基本使用import threadingi

2020-05-24 00:15:28

Python网络爬虫(十三)——MongoDB

简介MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。启动 MongoDB将 MongoDB 制作为 Windows 服务启动 MongoDB 之后,如果需要一直使用 MongoDB 的服务,该终端就不能关闭,而且在启动的时候需要指定 data 的路径,这是有点麻烦的。而通过将之制作成 Windo.

2020-05-23 22:05:28

Python网络爬虫(十二)——MySQL

简介MySQL 是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。GUI有时候使用 cmd 进行数据库操作不太方便,因此会借助于 GUI 来进行数据库的编辑和修改,常见用于 MySQL 的 GUI 工具有 workbench 和 navicat,前者是官方出的 GUI。python 库如果我们想要将爬取到的数据以数据库的形式存储时,就需要 python 和 MySQL 的连接。常见的驱动 MySQL 的 pyt

2020-05-22 13:53:51

Python网络爬虫(十一)——csv

简介逗号分隔值(Comma-Separated Values,csv),有时也称为字符分隔值,因为分隔字符也可以不是逗号 逗号分隔值文件以纯文本形式存储表格数据 CSV 文件由任意数目的记录组成,记录间以某种换行符分隔 每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符 通常,所有记录都有完全相同的字段序列 CSV 文件格式的通用标准并不存在,但是在 RFC 4180 中有基础性的描述 使用的字符编码同样没有被指定,但是 bitASCII 是最基本的通用编码读写文

2020-05-21 20:55:03

Python网络爬虫(十)——json

简介JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它是基于 ECMAScript(欧洲计算机协会制定的 js 规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。json 主要的优点有:层次结构简洁清晰 易于阅读和编写 易于机器解析和生成 网络传输效率高JSON 数据格式对象:以‘{’开始,以‘}’结束,和 python 中的字典类似 数组:以‘[’开始,以‘]’结束,和 python 中的列表类似 整型、浮点型、布尔类.

2020-05-21 19:24:41

Python网络爬虫(九)——re

正则表达式正则表达式(Regular Expression)是一种文本模式,包括普通字符(如 a-z)和特殊字符(元字符) 正则表达式使用单个字符串来描述,用来匹配一系列满足某个句法规则的字符串匹配规则匹配某个字符串import retext = 'hello'ret = re.match('he',text)print(ret.group())结果为:he匹配任意字符(.)import retext = "ab"ret = re.match('.',te

2020-05-21 16:50:36

Python网络爬虫(八)——CSS选择器

CSS层叠样式表(Cascading Style Sheets,CSS)是一种用来表现 XML/HTML 等文件样式的计算机语言。CSS 不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页个元素进行格式化。CSS 能够对网页中元素位置的排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。CSS 选择器而使用 CSS 选择器可以对 HTML 页面总的元素实现一对一、一对多或者多对多的控制。每一条 CSS 样式定义由两部分构成:[cod

2020-05-21 14:35:10

Python网络爬虫(七)——BeautifulSoup4

简介BeautifulSoup4 也是一个 XML/HTML 的解析器,能够解析和提取 XML/HTML 数据。与基于 lxml 的局部遍历不同,BeautifulSoup4 则是基于 DOM(Document Object Model),一般会载入整个文档,解析整个 DOM 树,因此与 lxml 相比,BeautifulSoup4 解析时的时间和内存开销都会大的多。BeautifulSoup4 在解析 XML 之外,还支持 CSS 选择器,Python 中的 HTML 解析器和 lxml 中的

2020-05-19 00:57:02

Python网络爬虫(六)——lxml

XpathXpath即为 xml 路径语言(XML Path Language),它是一种用来确定 XML 文档中某部分位置的语言,能够对 XML/HTML 文档中的元素进行遍历和查找。示例 HTML 片段<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book> <title lang="eng">Harry Potter</title> <price&.

2020-05-18 21:47:50

Python网络爬虫(五)——requests

requests 也是用于发起网络请求的一个 python 库。大致的逻辑差不多,接口可能有区别。发送 get 请求def get(url, params=None, **kwargs): r"""Sends a GET request. :param url: URL for the new :class:`Request` object. :param params: (optional) Dictionary, list of tuples or bytes to

2020-05-16 23:00:24

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。