Python 绘图,我只用 Matplotlib(二)
上篇文章,我们了解到 Matplotlib 是一个风格类似 Matlab 的基于 Python 的绘图库。
它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。
而且我们也可以方便地将它作为绘图控件,嵌入GUI应用程序中。
本文主要走进 Matplotlib 的世界,初步学会绘制图形。
1.基础知识在学习绘制之前,先来了解下 Matplotlib 基础概念。
1-1.库我们绘制图形主要用到两个库,matplotlib.pyplot和numpy。
在编码过程中,这两个库的使用频率较高,而这两个库的名字较长。
这难免会给我们带来不便。所以我们一般给其设置别名, 大大减少重复性工作量。具体如下代码:
12import matplotlib.pyplot as plt # 导入模块 matplotlib.pyplot,并简写成 plt import numpy as np # 导入模块 numpy,并简写成 np
numpy 是 Python 用于数学运算的库,它是在安装 matplotlib 时候顺带安装的。
pyplot 是 mat ...
Python 绘图,我只用 Matplotlib(一)
当我们的爬虫程序已经完成使命,帮我们抓取大量的数据。你内心也许会空落落的。或许你会疑惑,自己抓取这些数据有啥用?如果要拿去分析,那要怎么分析呢?
说到数据分析,Python 完全能够胜任这方面的工作。Python 究竟如何在数据分析领域做到游刃有余?
因为它有“四板斧”,分别是Matplotlib、NumPy、SciPy/Pandas。
Matplotlib 是画图工具,NumPy 是矩阵运算库,SciPy 是数学运算工具,Pandas 是数据处理的工具。
1.为什么选择 Matplotlib?Python 有很多强大的画图库,为什么我偏偏独爱 Maplotlib?我先买个关子,先来看看还有哪些库。
1-1.SeabornSeaborn 是一个基于 Matplotlib 的高级可视化效果库, 偏向于统计作图。
因此,针对的点主要是数据挖掘和机器学习中的变量特征选取。
相比 Matplotlib ,它语法相对简化些,绘制出来的图不需要花很多功夫去修饰。
但是它绘图方式比较局限,不过灵活。
1-2.BokehBokeh 是基于 javascript 来实现交互可视化库,它 ...
爬虫与反爬虫的博弈
今天猴哥给大家说说爬虫与反爬虫的博弈。
1.前言近来这两三个月,我陆续将自己学到的爬虫技术分享出来。
以标准网络库 urllib 的用法起笔,接着介绍各种内容提供工具,再到后续的 scrapy 爬虫框架系列。
我的爬虫分享之旅已经接近尾声了。
本文就来聊聊如何防止爬虫被 ban 以及如何限制爬虫。
2.介绍我们编写的爬虫在爬取网站的时候,要遵守 robots 协议,爬取数据做到“盗亦有道”。
在爬取数据的过程中,不要对网站的服务器造成压力。
尽管我们做到这么人性化。对于网络维护者来说,他们还是很反感爬虫的。
因为爬虫的肆意横行意味着自己的网站资料泄露,甚至是自己刻意隐藏在网站的隐私的内容也会泄露。
所以,网站维护者会运用各种方法来拦截爬虫。
3.攻防战3-1.场景一防:检测请求头中的字段,比如:User-Agent、referer等字段。
攻:只要在 http 请求的 headers 中带上对于的字段即可。下图中的七个字段被大多数浏览器用来初始化所有网络请求。建议将以下所有字段都带上。
3-2.场景二防:后台对访问的 IP 进行统计,如果单个 IP 访问超过设定的阈值,给予封锁。虽 ...
学会运用爬虫框架 Scrapy (五) —— 部署爬虫
本文是 Scrapy 爬虫系列的最后一篇文章。
主要讲述如何将我们编写的爬虫程序部署到生产环境中。
我们使用由 scrapy 官方提供的爬虫管理工具 scrapyd 来部署爬虫程序。
1.为什么使用 scrapyd?一是它由 scrapy 官方提供的,二是我们使用它可以非常方便地运用 JSON API来部署爬虫、控制爬虫以及查看运行日志。
2.使用 scrapyd2-1.原理选择一台主机当做服务器,安装并启动 scrapyd 服务。再这之后,scrapyd 会以守护进程的方式存在系统中,监听爬虫地运行与请求,然后启动进程来执行爬虫程序。
2-2.安装 scrapyd使用 pip 能比较方便地安装 scrapyd。
1234pip install scrapyd # 如果出现因下载失败导致安装不上的情况,可以先启动 ss 再执行安装命令# 或者在终端中使用代理pip --proxy http://代理ip:端口 install scrapyd
2-3.启动 scrapyd在终端命令行下以下命令来启动服务:
1scrapyd
启动服务结果如下:
scrapyd 也提供了 web 的接 ...
学会运用爬虫框架 Scrapy (四) —— 高效下载图片
爬虫程序爬取的目标通常不仅仅是文字资源,经常也会爬取图片资源。这就涉及如何高效下载图片的问题。
这里高效下载指的是既能把图片完整下载到本地又不会对网站服务器造成压力。
也许你会这么做,在 pipeline 中自己实现下载图片逻辑。
但 Scrapy 提供了图片管道ImagesPipeline,方便我们操作下载图片。
1.为什么要选用 ImagesPipeline ?ImagesPipeline 具有以下特点:
将所有下载的图片转换成通用的格式(JPG)和模式(RGB)
避免重新下载最近已经下载过的图片
缩略图生成
检测图像的宽/高,确保它们满足最小限制
2.具体实现2-1.定义字段在 item.py 文件中定义我们两个字段image_urls 和 images_path
12345678import scrapyclass PicsDownloadItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() image_urls = sc ...
学会运用爬虫框架 Scrapy (三)
上篇文章介绍 Scrapy 框架爬取网站的基本用法。但是爬虫程序比较粗糙,很多细节还需打磨。
本文主要是讲解 Scrapy 一些小技巧,能让爬虫程序更加完善。
1.设置 User-agentScrapy 官方建议使用 User-Agent 池, 轮流选择其中一个常用浏览器的 User-Agent来作为 User-Agent。
scrapy 发起的 http 请求中 headers 部分中 User-Agent 字段的默认值是Scrapy/VERSION (+http://scrapy.org),我们需要修改该字段伪装成浏览器访问网站。
1)同样在 setting.py 中新建存储 User-Agent 列表,
1234567891011121314151617181920212223242526272829303132333435UserAgent_List = [ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.3 ...
学会运用爬虫框架 Scrapy (二)
上篇文章介绍了爬虫框架 Scrapy 如何安装,以及其特性、架构、数据流程。
相信大家已经对 Scrapy 有人了初步的认识。
本文是 Scrapy 系列文章的第二篇,主要通过一个实例讲解 scrapy 的用法。
1.选取目标网络爬虫,顾名思义是对某个网站或者系列网站,按照一定规则进行爬取信息。
爬取程序的首要工作当然是选定爬取目标。
本次爬取目标选择是V电影,网址是http://www.vmovier.com/。
爬取内容是[最新推荐]栏目的前15条短视频数据信息。具体信息包括封面、标题、详细说明以及视频播放地址。
2.定义 Item为什么将爬取信息定义清楚呢?
因为接下来 Item 需要用到。在 Item.py 文件中,我们以类的形式以及 Field 对象来声明。
其中 Field 对象其实是一个字典类型,用于保存爬取到的数据。而定义出来的字段,可以简单理解为数据库表中的字段,但是它没有数据类型。
Item 则复制了标准的 dict API,存放以及读取跟字典没有差别。
V电影的 Item,我们可以这样定义:
12345678910111213import scrapyclas ...
学会运用爬虫框架 Scrapy (一)
对于规模小、爬取数据量小、对爬取速度不敏感的爬虫程序, 使用 Requests 能轻松搞定。
这些爬虫程序主要功能是爬取网页、玩转网页。
如果我们需要爬取网站以及系列网站,要求爬虫具备爬取失败能复盘、爬取速度较高等特点。
很显然 Requests 不能完全满足我们的需求。
因此,需要一功能更加强大的第三方爬虫框架库 —— Scrapy
1.简介 ScrapyScrapy 是一个为了方便人们爬取网站数据,提取结构性数据而编写的分布式爬取框架。
它可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中。
因其功能颇多,所以学会它需要一定的时间成本。
1-1.Scrapy 的特性Scrapy 是一个框架。因此,它集一些各功能强大的 python 库的优点于一身。下面列举其一些特性:
HTML, XML源数据 选择及提取 的内置支持
提供了一系列在spider之间共享的可复用的过滤器(即 Item Loaders),对智能处理爬取数据提供了内置支持。
通过 feed导出 提供了多格式(JSON、CSV、XML),多存储后端(FTP、S3、本地文件系统)的内置支持
提供了media ...
用 Python 学习数据结构, 有它就不用愁
数据结构,我们对它已经是耳熟能详。
对于计算机相关专业的大学生来说,它是一门专业必修课。
从事软件开发的人员则把它作为谋生必备技能。这充分体现数据结构的重要性。
因此,我们对数据结构是不得不学。
虽然数据结构的实现不限制语言,但市面上很多教程书籍都是以 C 语言作为编程语言进行讲解。
如果你喜欢且在学习 Python,可能会陷入苦于这样的烦恼中。
那就是没有 Python 版本的数据结构实现代码。
莫慌!我给大家推荐一个第三方库,它能让你这种烦恼立刻云消雾散。
GitHub仓库
Pygorithm 是由一个热心肠的印度小哥编写的开源项目。
他编写创建该库的初衷是处于教学目的。
我们不仅可以阅读源码的方式学习数据结构,而且可以把它当做现成工具来使用。
1.安装安装 python 库,我推荐使用 pip 方式,方便又省事。
1234pip install Pygorithm# 如果出现因下载失败导致安装不上的情况,可以先启动 ss 再执行安装命令# 或者在终端中使用代理pip --proxy http://代理ip:端口 install Pygorithm
2.支持的类型Pygor ...
爬虫实战二:爬取电影天堂的最新电影
前面两篇文章介绍 requests 和 xpath 的用法。我们推崇学以致用,所以本文讲解利用这两个工具进行实战。
1.爬取目标本次爬取的站点选择电影天堂,网址是: www.ydtt8.net。
爬取内容是整个站点的所有电影信息,包括电影名称,导演、主演、下载地址等。具体抓取信息如下图所示:
2.设计爬虫程序2-1.确定爬取入口电影天堂里面的电影数目成千上万,电影类型也是让人眼花缭乱。
我们为了保证爬取的电影信息不重复, 所以要确定一个爬取方向。
目前这情况真让人无从下手。
但是,我们点击主页中的【最新电影】选项,跳进一个新的页面。蓦然有种柳暗花明又一村的感觉。
由图可知道,电影天堂有 5 个电影栏目,分别为最新电影、日韩电影、欧美电影、国内电影、综合电影。
每个栏目又有一定数量的分页,每个分页有 25 条电影信息。
那么程序的入口可以有 5 个 url 地址。
这 5 个地址分别对应每个栏目的首页链接。
2-2.爬取思路知道爬取入口,后面的工作就容易多了。
我通过测试发现这几个栏目除了页面的 url 地址不一样之外,其他例如提取信息的 xpath 路径是一样的。
因此,我把 5 ...