param

python--spider验证码

随声附和 提交于 2019-12-01 08:46:45
目前,许多网站采取各种各样的措施来反爬虫,其中一个措施就是使用验证码。 验证码的花样也越来越多,几个数字组合的简单的图形验证码,英文字母和混淆曲线相结合的方式。大概包括: 普通图形验证码 极验滑动验证码 点触验证码 微博宫格验证码 接下里我们来具体了解一下。 1 图形验证码 图形验证码是最早出现也是最简单的一种验证码,一般由 4 位字母或者数字组成。 本节我们用OCR技术来识别图形验证码。(Optical Character Recognition,光学字符识别,将图片、照片上的文字内容,直接转换为可编辑文本) 安装 tesserocr 库 1.1 获取验证码 我们找一张验证码图片,为方便测试,我们保存到本地。(注册知网的时候可以看到需要输入验证码:http://my.cnki.net/elibregister/) 打开开发者工具,找到验证码元素。它是一张图片,它的 src 属性是 CheckCode.aspx 。可通过(http://my.cnki.net/elibregister/CheckCode.aspx),直接看到验证码,右键保存即可。 1.2 识别测试 tesserocr.image_to_text() tesserocr.file_to_text() import tesserocr from PIL import Image image = Image.open(

JavaScript(9)—— CSS定位综合练习

喜夏-厌秋 提交于 2019-12-01 08:42:16
画布上画矩形 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Drawing</title> <link rel="stylesheet" href="../vendor/bootstrap-4.3.1-dist/css/bootstrap.min.css"> <link rel="stylesheet" href="draw.css"> <script src="../vendor/jquery-3.4.1.js"></script> <script src="../vendor/bootstrap-4.3.1-dist/js/bootstrap.min.js"></script> <script src="../base.js"></script> <script src="draw.js"></script> <script> $(function(){ init(); }) </script> </head> <body> <div

不依赖Python第三方库实现梯度下降

主宰稳场 提交于 2019-12-01 07:19:36
认识 梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模), 我感觉, 其实就是 偏导数向量方向呗 , 沿着这个 向量方向可以找到局部的极值 . from random import random def gradient_down(func, part_df_func, var_num, rate=0.1, max_iter=10000, tolerance=1e-10): """ 不依赖第三库实现梯度下降 :param func: 损失(误差)函数 :param part_df_func: 损失函数的偏导数向量 :param var_num: 变量个数 :param rate: 学习率(参数的每次变化的幅度) :param max_iter: 最大计算次数 :param tolerance: 误差的精度 :return: theta, y_current: 权重参数值列表, 损失函数最小值 """ theta = [random() for _ in range(var_num)] # 随机给定参数的初始值 y_current = func(*theta) # 参数解包 for i in range(max_iter): # 计算当前参数的梯度(偏导数导数向量值)

BOSS 直聘整站爬取思路总结

♀尐吖头ヾ 提交于 2019-12-01 07:18:31
一、目标网站 BOSS 直聘 (www.zhipin.com) 二、分析思路 考虑到要进行整站爬取, 首先要熟悉这个网站的各个板块结构是怎么样的. 首先用浏览器访问 BOSS 直聘首页 (www.zhipin.com). 在首页面, 按照从上到下从左到右的顺序浏览各个板块, 通过分析比较各个板块内容, 决定采用左侧导航栏提供的职位分类来根据职位结合城市信息获取整站数据. 分析页面源码, 解析出所有职位分类信息以及深层链接, 将链接拼接完整, 根据数据特点构建数据结构, 将构建好的数据结构采用 MongoDB 进行持久化. (这里采用 MongoDB 的原因是其为文档型数据库, 存储数据较为灵活, 不用像 MySQL 这种关系型数据库需要事先考虑表结构以及字段相关的设计) 到此, 对整站所有职位按照分类已全部解析入库, 接下来需要根据职位分类结合城市信息获取到所有城市的招聘岗位信息. 采用抽样分析, 随机选择几个职位与城市的组合进行查询, 对比查询结果发现是以 URL 参数影响最终查询结果的. 职位编号唯一对应某一个职位, 城市编号唯一对应某一个城市. 由上面的步骤获取到了所有职位对应的链接地址, 其中包含职位的编号, 因此这里不需要再考虑职位编号. 点击页面上 所有城市 标签, 弹出一个模态框可进行城市选择, 考虑此为一个异步请求, 接着分析页面元素, 发现 所有城市 对应 < a

8-5接口测试用例设计与编写-4

浪子不回头ぞ 提交于 2019-12-01 06:59:10
1.查看testerhome精华帖的数量 package com.csj2018; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.util.JSONPObject; import io.restassured.internal.ValidatableResponseImpl; import io.restassured.response.Response; import io.restassured.response.ValidatableResponse; import org.testng.annotations.Test; import io.restassured.RestAssured.*; import io.restassured.matcher.RestAssuredMatchers.*; import org.hamcrest.Matchers.*; import java.util.HashMap; import java.util.List; import java.util.Map; import io.restassured.module.jsv.JsonSchemaValidator.*; import static io

vs2017js 方法注释

吃可爱长大的小学妹 提交于 2019-12-01 06:57:16
vs2017给js方法加注释,就像给C#类似 例如 function test1(a,b,c){ .... } 在function的上一行,打一个 " / " 再连续按两下 " * " 就会出现注释 /** * 这里可以写一些方法描述 * @param {number} a 参数说明 * @param {number} b * @param {number) c */ @param {number} 这大括号里是参数的类型,可以写 js的参数类型, number string.. 也可以写 {a:number,b:number} 这种的 ..typescript的类型 注释写好后,调用方法是,就会像C#方法那样,有提示了 来源: https://www.cnblogs.com/mirrortom/p/11665398.html

laravel框架使用阿里短信接入

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-01 05:47:48
EG: accessKeyid和accessKeySecret还有模板ID、签名名称这几项必要参数自己去阿里云获取一、下载SDK和demo 下载并解压后 在laravel框架的app目录下创建libs/Aliyun目录并将上面两个文件夹复制进去,如果按照此方法则不需要改命名空间,如果你放在别的地方就根据你的路径修改一下命名空间 在根目录的composer.json里添加如下配置: 然后在cmd中进入根目录然后进行 composer dumpautoload 执行后若出现如下图所示,则表示更新成功 二、代码部分 1、首先引入文件并载入短信平台节点 use Aliyun\Core\Config; use Aliyun\Core\Profile\DefaultProfile; use Aliyun\Core\DefaultAcsClient; use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest; use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest; Config::load(); 2、发送代码 public function send(Request $request) { $phone = $request['phone'];//接收的手机号 //print_r(

服务端调用接口实例

丶灬走出姿态 提交于 2019-12-01 05:37:35
前言:   在做小程序的开发时需要获取用户的openId用来做唯一标识,来获取对应用户的相关数据   官方的文档说明上有四个必须传的参数   其中appId和appSecret可在自己的微信公众号平台上获取,同时这些也是属于私密信息,应该妥善保管的,因为微信手机客户端是很容易反编译获取到这些信息的,所以在前端的ajax请求将这些参数传到后台是不可取的,最好的方式是将这两个参数在后台传入,然后发送请求至官方接口 1.模拟Http请求    package com.btw.util; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.Reader; import java.net.HttpURLConnection; import java.net.ProtocolException; import java.net.URL; import java.util.Map; public class HttpUtil { /** * 请求类型: GET */ public final static String GET = "GET"; /** * 请求类型: POST */

sequelize的使用

时间秒杀一切 提交于 2019-12-01 05:23:14
nodejs使用express框架 ,用sequelize实现分页 我们直接来分析代码 //这里我们引用了utils工具 var utils = require ( '../lib/utils' ); app.post( '/articleList' , function (req,res) { //我们首先获取前端传来的page 和pagesize 的值 var page, pageSize = '' ; if (req.param( 'page' )&&utils.trim(req.param( 'page' ))!= "" ){ page= parseInt (utils.trim(req.param( "page" ))); } if (req.param( 'rows' )&&utils.trim(req.param( 'rows' ))!= "" ){ pageSize= parseInt (utils.trim(req.param( "rows" ))); } //使用sequelize中的findAndCountAll()方法 Article. //自己定义的模型 findAndCountAll({ where: '' , //为空,获取全部,也可以自己添加条件 offset:(page - 1 ) * pageSize, //开始的数据索引,比如当page=2

jsonp的原理介绍及Promise封装

左心房为你撑大大i 提交于 2019-12-01 04:55:11
什么叫jsonp? jsonp是json with padding(填充式json或参数式json)的简写,是通过ajax请求跨域接口,获取数据的新实现方式 jsonp的实现原理: 动态创建script标签,因为script标签是没有同源策略限制,可以跨域的。 把script标签的src指向正式服务端地址,这个地址跟个参数callback=xxx, 服务端在返回数据时,在xxx里包裹一个方法(里面是返回的数据),相当于在前端执行xxx这个方法,但是浏览器并没有这个方法,所以在发送请求之前在window注册这个方法,这样的话相当于在前端执行window.xxx()这个方法去获取数据。 具体看接下来的实现! https://github.com/webmodules... 这个是jsonp库的具体实现,建议下载来研究一下,最好自己动手写一遍。本文主要是Promise封装,所以就不具体介绍jsonp的具体实现 步骤一: 首先安装这个库,因为我是在node npm环境下开发,所以 1 $ npm install jsonp 参数介绍 jsonp(url, opts, fn) url (String) 服务器端数据接口地址 opts (Object) 一般只需关注param即可 param (String) 默认是callback,这是与后端约定的参数名称,也可以随便定义,只要前后端统一