15

初识python爬虫框架scrapy

好东西要学习

项目目录结构

这些文件分别是:

  • scrapy.cfg: 项目的配置文件
  • tutorial/: 该项目的python模块。之后您将在此加入代码。
  • tutorial/items.py: 项目中的item文件.
  • tutorial/pipelines.py: 项目中的pipelines文件.
  • tutorial/settings.py: 项目的设置文件.
  • tutorial/spiders/: 放置spider代码的目录.

接下来,进入到项目目录中:

创建一个新的spider:

可用的工具命令(tool commands)

可以通过运行命令来获取关于每个命令的详细内容:

您也可以查看所有可用的命令:

Scrapy提供了两种类型的命令。一种必须在Scrapy项目中运行(针对项目(Project-specific)的命令),另外一种则不需要(全局命令)。全局命令在项目中运行时的表现可能会与在非项目中运行有些许差别(因为可能会使用项目的设定)。

全局命令:

项目(Project-only)命令:

自定义项目命令

您也可以通过 COMMANDS_MODULE 来添加您自己的项目命令。您可以以 scrapy/commands 中Scrapy commands为例来了解如何实现您的命令。

COMMANDS_MODULE

Default: '' (empty string)

用于查找添加自定义Scrapy命令的模块。

例子:

Continue reading

14

FileZilla连接ftp服务器失败,提示”AUTH TLS”解决方法

使用FileZilla工具连接ftp连接失败,提示”AUTH TLS”,用浏览器试了一下”ftp:ip地址”,输入用户名、密码后可以正常访问。所以应该是FileZilla软件连接配置有点问题。

1.连接的提示

连接时并没有提示用户名、密码错误,说明是正确的;查了下,原因是服务器不支持FTP over TLS的连接方式。

980380-20170409120055175-1739663121

2.解决方法

在FileZilla的站点管理器中,选择加密方式是:只使用普通FTP(不安全)方式,再重新连接。

980380-20170409120138050-251587653

3.重新连接

980380-20170409120130457-517232311

4.注

(1).FTP over TLS指客户端显示请求(客户端发送”AUTH TLS”命令)对FTP会话加密。但服务器拒绝请求TLS的连接,这是由于不支持FTP over TLS的连接方式造成的。

14

RSA非对称加密之PHP生成pem公钥私钥对及使用的两个实例

PHP生成pem公钥私钥对

如果不能生成密钥对,则修改验证变量$confs数组中的config值。

最初我不能生成公钥,是因为函数openssl_pkey_export(),只使用一前面两个参数,后台增加了后面两个参数就可以了。原因是:因为openssl_pkey_new($confs)中使用了$confs,那么函数openssl_pkey_export()也必须加入参数$confs。

实例一:

公钥加密(openssl_public_encrypt),
私钥解密(openssl_private_decrypt)。
私钥加密(openssl_private_encrypt),
公钥解密(openssl_public_decrypt)。
都是一个道理,代码类似。

RSA加密解密有个填充方式padding的参数,不同编程语言之间交互,需要注意这个。

padding can be one of OPENSSL_PKCS1_PADDINGOPENSSL_SSLV23_PADDINGOPENSSL_PKCS1_OAEP_PADDING,OPENSSL_NO_PADDING

值得注意的是,如果选择密钥是1024bit长的(openssl genrsa -out rsa_private_key.pem 1024),那么支持加密的明文长度字节最多只能是1024/8=128byte;

如果加密的padding填充方式选择的是OPENSSL_PKCS1_PADDING(这个要占用11个字节),那么明文长度最多只能就是128-11=117字节。如果超出,那么这些openssl加解密函数会返回false。

这时有个解决办法,把需要加密的源字符串按少于117个长度分开为几组,在解密的时候以172个字节分为几组。

其中的『少于117』(只要不大于117即可)和『172』两个数字是怎么来的,值得一说。

为什么少于117就行,因为rsa encrypt后的字节长度是固定的,就是密钥长1024bit/8=128byte。因此只要encrypt不返回false,即只要不大于117个字节,那么返回加密后的都是128byte。

172是因为什么?因为128个字节base64_encode后的长度固定是172。

这里顺便普及下base64_encode。encode的长度是和原文长度有个计算公式:

$len2 = $len1%3 >0 ? (floor($len1/3)*4 + 4) : ($len1*4/3);

 

实例二:

明文超出长度的代码(前提是1024bit的密钥长,OPENSSL_PKCS1_PADDING的填充方式,否则数字要变化)

在实际应用中,分析使用场景,再把两个实例再进行一下结合,相信就会更加美妙了,这里就不多写了。

PHP加密函数 sha256 sha512 sha256_file() sha512_file()

14

PHP把.cer证书内容转.pem格式字符串的封装函数

IOS的.cer证书内容转为pem格式内容

 

13

封装了两个PHP对称加密解密函数

为发数据传输的相对安全,在实际制作中,php对称加密解密相对简单有效而又很常用的选择。

对称加密函数一

对称加密封装函数二

php中所有加密算法和模型

RSA非对称加密之PHP生成pem公钥私钥对及使用的两个实例

 

13

PHP加密函数 sha256 sha512 sha256_file() sha512_file()

PHP sha256 sha512目前(PHP 7.1)没有内置的函数来计算,sha1() sha1_file() md5() md5_file()分别可以用来计算字符串和文件的sha1散列值和md5散列值,当前最新版本PHP 7.1 sha256() sha256_file() sha512() sha512_file()这样的函数也没有。SHA-2是SHA-224、SHA-256、SHA-384,和SHA-512的合称。
PHP 计算sha256 sha512可以使用hash()函数实现,计算文件的sha256 sha512则可以使用hash_file()实现。
hash($algo , $data, $rawOutput);
hash_file($algo , $filepath, $rawOutput);
其中$algo是算法,可以是sha256, sha512等值,支持的算法可以使用hash_algos()查看,该函数返回所有支持的算法。
$data是需要计算hash值的字符串,$filepath是需要计算hash值的文件名,可以是相对路径也可以是绝对路径。
$rawOutput是一个可选的布尔值参数,如果为true,则返回二进制数据,如果为false则返回字符串,默认值为false.
我们可以封装自定义函数来实现PHP 计算sha256 sha512以及其他类型的hash值。
以下代码实现PHP sha256() sha256_file() sha512() sha512_file() Continue reading

11

iOS开发证书配置和安装的详细步骤

首先说下写这篇文章的目的:
- 1、本篇文章所处环境为最新版Xcode7和最新版Apple Developer官网
- 2、以下所有截图均来自作者手动截图,以力保解读详细~。
- 3、这篇文章主要针对提交AppStore证书和个人真机调试证书的配置和使用,如需查询企业证书的配置和使用:


  1. 首先登陆Apple Developer官网开发者账号登陆

20160323160935828

20160323161000031


2、 初始化界面是这样子的(貌似是废话): Continue reading

08

物联开发相关名词解释

物联网

物联网是新一代信息技术的重要组成部分,IT行业又叫:泛互联,意指物物相连,万物万联。其英文名称是“The Internet of things”。由此,“物联网就是物物相连的互联网”。这有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;第二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信。因此,物联网的定义是通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物品与互联网相连接,进行信息交换和通信,以实现对物品的智能化识别、定位、跟踪、监控和管理的一种网络。

物联卡

物联卡,又叫物联网卡,物联网卡是由移动、电信、联通运营商提供的2/3/4G卡,外观与普通SIM卡基本一样,采用专用号段,满足智能硬件和物联网行业对设备联网的需求。

物联卡功能主要有:
1、基础通信能力:GPRS通信能力和短信通信能力,短信可提供不同优先级服务(重发频次、储存时间),充分满足不同集团客户需求。
2、终端状态查询:向客户提供开关机信息、终端位置信息、终端GPRS上线、离线、IP、APN等信息查询。
3、账务信息查询:向客户提供账户信息查询,提供账户欠费、流量超标等事件的提醒功能。
4、业务统计分析:向用户提供多维度的业务报表统计及分析等。
5、灵活计费功能:根据客户需求提供流量池、生命周期等多种计费方式。

流量卡和物联卡的区别:
物联卡业务是中国移动面向物联网用户提供的采用物联网专用的10648和14765号段作为MSISDN的移动通信接入业务,通过专用网元设备支持短信和GPRS等基础通信服务,并提供通信状态管理和通信鉴权等智能通道服务,默认开通物联网专用的短信接入服务号和物联网专用APN。
主要的区别就是计费方式的区别。
物联卡通常按照流量来收费,但是暂时没有或很少面向个人销售的物联卡,通常都是面向企业销售的批量的物联卡。

上位机、下位机

上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机single chip microcomputer/slave computer/lower computer之类的。

在概念上,控制者和提供服务者是上位机,被控制者和被服务者是下位机,也可以理解为主机和从机的关系,但上位机和下位机是可以转换的。
上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。简言之如此,实际情况千差万别,但万变不离其宗:上下位机都需要编程,都有专门的开发系统。

通常上位机和下位机通讯可以采用不同的通讯协议,可以有RS232的串口通讯或者采用RS485串行通讯。当用计算机和PLC通讯的时候,不但可以采用传统的D形式的串行通讯,还可以采用更适合工业控制的双线的PROFIBUS-DP通讯。采用封装好的程序开发工具就可以实现PLC和上位机的通讯,当然可以自己编写驱动类的接口协议控制上位机和下位机的通讯。

下位机会有相关的API文档或光盘或其它影像资料等。 Continue reading

07

PHP生成条形码

barcode官网下载barcodegen.1d-php5.v5.0.1.zip版本,查看官方文档

解压文件存放到本地测试服务器中,访问/index.php,跳转到/html/BCGcode39.php,页面效果如下:

20180407151049

生成条形码后,可以到此官网进行校验。

实例:

提交数据 /html/image.php?filetype=PNG&dpi=72&scale=2&rotation=0&font_family=Arial.ttf&font_size=10&text=961001272500&thickness=30&checksum=&code=BCGcode39

image.php 程序源码

 

07

百度云服务器之Nginx环境下伪静态配置

在网站根目录创建文件 bcloud_nginx_user.conf

将伪静态规则写在中括号内 location / { …… }

下面是一位客户从百度的Lighttpd环境迁移到Nginx环境之后,我帮他修改的规则。

写完规则,记得重启nginx,才能去吃饭哦!!!

相关文档:

百度Nginx环境高级配置

Nginx伪静态配置和常用Rewrite伪静态规则集锦

BCH配置伪静态

Windows主机IIS7开启伪静态功能Rewite

Apache Rewrite规则(伪静态)实例