Python编程
未读
在项目中,我们可能遇到有定时任务的需求。其一:定时执行任务。例如每天早上 8 点定时推送早报。其二:每隔一个时间段就执行任务。比如:每隔一个小时提醒自己起来走动走动,避免长时间坐着。
今天,我跟大家分享下 Python 定时任务的实现方法。
1.第一种办法是最简单又最暴力。那就是在一个死循环中,使用线程睡眠函数 sleep()。
12345678910111213from datetime import datetimeimport time'''每个 10 秒打印当前时间。'''def timedTask(): while True: print(datetime.now().strftime("%Y-%m-%d %H:%M:%S")) time.sleep(10)if __name__ == '__main__': timedTask()
这种方法能够执行固定间隔时间的任务。如果timedTask()函数之后还有些操作,我们还使用死循环 ...
上篇文章,我已经讲解绘制图像大致步骤,接下来的系列文章将分别对各种图形做讲解。其实就是了解各个图种的绘图 API。文章就讲解第一种图形,柱状图。
1.基础绘制柱状图,我们主要用到bar()函数。只要将该函数理解透彻,我们就能绘制各种类型的柱状图。
我们先看下bar()的构造函数:bar(x,height, width,*,align='center',**kwargs)
x包含所有柱子的下标的列表
height包含所有柱子的高度值的列表
width每个柱子的宽度。可以指定一个固定值,那么所有的柱子都是一样的宽。或者设置一个列表,这样可以分别对每个柱子设定不同的宽度。
align柱子对齐方式,有两个可选值:center和edge。center表示每根柱子是根据下标来对齐, edge则表示每根柱子全部以下标为起点,然后显示到下标的右边。如果不指定该参数,默认值是center。
其他可选参数有:
color每根柱子呈现的颜色。同样可指定一个颜色值,让所有柱子呈现同样颜色;或者指定带有不同颜色的列表,让不同柱子显示不同颜色。
edgecolor每根柱子边框的颜 ...
本文介绍猴哥对于Python中的Iterable、Iterator、generator的理解。
1.Iterable我们一般称Iterable为可迭代对象。
Python 中任意的对象,只要它定义了可以返回一个迭代器的__iter__方法,或者定义了可以支持下标索引的__getitem__方法,那么它就是一个可迭代对象。
我们常用到的集合数据类型都是 Iterable。
例如列表(list)、元组(tuple)、字典(dict)、集合(set)、字符串(str)等。
我定义了一个列表 numlist,打印出该列表的方法。
1234numlist = [1, 2, 3]print(numlist)print(numlist.__iter__) # 调用__iter__方法print(numlist.__getitem__) # 调用__getitem__方法
运行结果如下:
根据运行结果,我们可知列表就是个可迭代对象。
Python 的collections 库有个isinstance()函数。可以用来判断一个对象是否是 Iterable 对象。
12345from co ...
上篇文章,我们了解到 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 完全能够胜任这方面的工作。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 访问超过设定的阈值,给予封锁。虽 ...
Python爬虫入门
未读本文是 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 的接 ...
Python爬虫入门
未读爬虫程序爬取的目标通常不仅仅是文字资源,经常也会爬取图片资源。这就涉及如何高效下载图片的问题。
这里高效下载指的是既能把图片完整下载到本地又不会对网站服务器造成压力。
也许你会这么做,在 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 ...
Python爬虫入门
未读上篇文章介绍 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 ...
Python爬虫入门
未读上篇文章介绍了爬虫框架 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 ...