随机替换请求头中的User-Agent 基于github开源项目,实现User-Agent的动态切换和管理 https://github.com/hellysmile/fake-useragent   fake-useragent维护不同User-Agent的字段值 https://fake-useragent.herokuapp.com/browsers/0.1.8 middlewares.py from fake_useragent import UserAgent class Random…
设置IP代理池及IP变换方案 方案一: 使用国内免费的IP代理 http://www.xicidaili.com # 创建一个tools文件夹,新建一个py文件,用于获取代理IP和PORT from scrapy.selector import Selector import MySQLdb import requests conn = MySQLdb.connect(host=", db="databasename", charset="utf8") c…
下载器中间件是介于Scrapy的request/response处理的钩子框架,是用于全局修改Scrapy request和response的一个轻量.底层的系统. 激活Downloader Middleware 要激活下载器中间件组件,将其加入到 DOWNLOADER_MIDDLEWARES 设置中. 该设置是一个字典(dict),键为中间件类的路径,值为其中间件的顺序(order).像下面这样 DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares…
JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型(“prototype”)方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript"> var object = new Object(); object.name = "z…
原文:ThinkPhp学习12 二.输出模板内容      (重点) a.display 1.display中没有参数    $this->display(); 2.可以带参数    $this->display(本模块文件夹下的其他模板文件);    $this->display('index2'); $this->display(其他文件夹下的模板文件);    $this->display('Public:error');//注意,仅仅需要在Tpl下有Public文件夹…
avaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法   <script type="text/javascri…
Scrapy设定(settings)提供了定制Scrapy组件的方法.你可以控制包括核心(core),插件(extension),pipeline及spider组件.设定为代码提供了提取以key-value映射的配置值的的全局命名空间(namespace). Scrapy内置设置 下面给出scrapy提供的常用内置设置列表,你可以在settings.py文件里面修改这些设置,以应用或者禁用这些设置项. BOT_NAME默认: 'scrapybot'Scrapy项目实现的bot的名字.用来构造默认…
Scrapy:学习笔记(2)——Scrapy项目 1.创建项目 创建一个Scrapy项目,并将其命名为“demo” scrapy startproject demo cd demo 稍等片刻后,Scrapy为我们生成了一个目录结构: 其中,我们目前需要重点关注三个文件: items.py:设置数据存储模板,用于结构化数据,如:Django的Model. pipelines.py: 定义数据处理行为,如:一般结构化的数据持久化 settings.py:配置文件,如:递归的层数.并发数,延迟下载等…
基础知识 爬虫发展史   爬虫去重 1. 存储到数据库中 存取速度慢 2. 存储到内存中的集合里,内存占用十分大 当爬取数据有1亿条时 1*10**8*2Byte*50str_len/1024/1024/1024 = 9 结果显示仅仅爬取1亿条url数据就占用了9个G的内存,显然是不合适的 3. 将url经过md5等哈希方法存储在集合中 一般一个md5占用128位,16Byte,结果大约为1.5G与上种方法相比,大大减少了内存占用 4. 使用bitmap位图法 将url经过哈希后的md5值通过h…
scrapy1.6中文文档 scrapy1.6中文文档 scrapy中文文档 Scrapy框架 下载页面 解析页面 并发 深度 安装 scrapy学习教程 如果安装了anconda,可以在anaconda prompt中使用conda install scrapy 也可以使用pycharm安装 使用 指定初始URL 解析响应内容 给调度器 给item:pipeline用于做格式化:持久化 创建一个初始scrapy初始项目初始工作 ① .在windows终端(cmd)输入,进行前期工作 scrap…
Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学习笔记(五)合并 concat Pandas学习笔记(六)合并 merge Pandas学习笔记(七)plot画图 原文:https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/3-3-pd-assign/ 本文有删改 创建数据 我们可以…
1.为了养成良好的代码习惯idead中的javascript jSLint能显示不良的代码设置如下    2.Intellij idea 12每一次修改,保存生成都要按ctrl+shift+F9非常影响项目开发速度.可以通过添加快捷捷.在setting里面找到Keymap在Keymap里面搜索Compile 添加一个.本人测试用到一个更快又没有冲突的快捷键,Ctrl+win,左手就能完成单页生成工作. 3.有时候不想每一次都生成文件可以在里面把输入的改成项目访问的根地址(例如js在/api/we…
原文:MAC随机修改批处理 @echo off mode con cols=70 lines=20 title MAC随机修改工具 color 3F setlocal enabledelayedexpansion :start cls echo             ┏━━┓我       ●╭○╮ 我┏━━┓ echo             ┃天长┃愛   ★ /█∨█\ ★ 想┃永远┃ echo             ┃地久┃你       ∏    ∏     你┃拥有┃ echo…
在之前的Scrapy学习篇(四)之数据的存储的章节中,我们其实已经使用了Item Pipeline,那一章节主要的目的是形成一个笼统的认识,知道scrapy能干些什么,但是,为了形成一个更加全面的体系,我们在这一章节中,将会单独介绍Item Pipeline,方便以后你自定义你的item pipeline. 当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item的处理.每个item pipeline组件(有时称之为“Item Pip…
[ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest) 决策树 决策树算法以树状结构表示数据分类的结果.每个决策点实现一个具有离散输出的测试函数,记为分支. 一棵决策树的组成:根节点.非叶子节点(决策点).叶子节点.分支 算法分为两个步骤:1. 训练阶段(建模) 2. 分类阶段(应用) 熵的概念 设用P(X)代表X发生的概率,H(X)代表X发生的不确定性,则有:P(X)越大,H(X)越小:P(X)越小,H(X)越大. 信息熵的一句话解释是:消除不确定性的程度…
修改器 利用原子的更新修改器,可以使得这种部分更新极为高效,更新修改器是一种特殊的键,用来指定复杂的更新操作,比如调整,增加或删除,还可以操作数组或内嵌文档. $inc $inc修改器用来增加已有键的值,或者键不存在时创建一个键. 示例文档: {"uid":"201203","type":"1",size:10} 运行: > db.b.update({"uid" : "201203"…
Git 学习(四)操作修改和版本穿梭 之前的章节,已介绍了本地Git库创建.暂存区增.删.改,以及提交版本库:可回顾下命令操作: git add 和 git commit. 光有之前章节的操作,Git 显然不能满足版本控制的需求.所谓的版本控制,可理解为文件夹的时间机,即从创建该文件夹伊始,所有文件提交操作都将被记录版本库,且可以随意穿梭版本(回退至昨日的版本,或甚至N年前). 本文就此具体说明Git是如何管理修改.撤销修改以及在各个版本间穿梭的. 管理修改 为什么Git比其他版本控制系统设计得…
Scrapy:学习笔记(1)——XPath 1.快速开始 XPath是一种可以快速在HTML文档中选择并抽取元素.属性和文本的方法. 在Chrome,打开开发者工具,可以使用$x工具函数来使用XPath来选择元素,比如选中所有的超链接. 1.1.XPath的基本格式 XPath通过"路径表达式"(Path Expression)来选择节点. 在形式上,"路径表达式"与传统的文件系统非常类似. 比如我们依次获得Html节点(即最根节点).Html下的Body节点.Ht…
原文:[SQL Server 学习系列]-- sql 随机生成中文名字 ,) )) -- 姓氏 ,) )) -- 名字 INSERT @fName VALUES ('赵'),('钱'),('孙'),('李'),('周'),('吴'),('郑'),('王'),('冯'),('陈'),('楮'),('卫'),('蒋'),('沈'),('韩'),('杨'), ('朱'),('秦'),('尤'),('许'),('何'),('吕'),('施'),('张'),('孔'),('曹'),('严'),('华'),…
Asp.NetCore源码学习[1-2]:配置[Option] 在上一篇文章中,我们知道了可以通过IConfiguration访问到注入的ConfigurationRoot,但是这样只能通过索引器IConfiguration["配置名"]访问配置.这篇文章将一下如何将IConfiguration映射到强类型. 本系列源码地址 一.使用强类型访问Configuration的用法 指定需要配置的强类型MyOptions和对应的IConfiguration public void Confi…
在爬虫的路上,学习scrapy是一个必不可少的环节.也许有好多朋友此时此刻也正在接触并学习scrapy,那么很好,我们一起学习.开始接触scrapy的朋友可能会有些疑惑,毕竟是一个框架,上来不知从何学起.从本篇起,博主将开启scrapy学习的系列,分享如何快速入门scrapy并熟练使用它. 本篇作为第一篇,主要介绍和了解scrapy,在结尾会向大家推荐一本关于学习scrapy的书,以及获取的方式. 为什么要用爬虫框架? 如果你对爬虫的基础知识有了一定了解的话,那么是时候该了解一下爬虫框架了.那么…
之前我们分享了FastAPI(六十八)实战开发<在线课程学习系统>接口开发--用户 个人信息接口开发.这次我们去分享实战开发<在线课程学习系统>接口开发--修改密码 我们梳理一下这里的逻辑 1.需要校验登录用户,根据登录用户,我们去校验密码 2.校验成功,我们判断新密码是否符合要求 3.存储新的密码 4.删除对应的用户的token以及错误密码存储的数据 那么开始代码实现,对应的修改密码的pydantic. from pydantic import BaseModel class U…
1.①像普通controller那样实现跳转到webview的效果,而不是直接加到当前controller②隐藏webview的某些元素③webview跳往原生app④给webview添加进度条 解决方法如下:①使用webview的基本步骤 NSURL *url = [NSURL URLWithString:self.urlStr]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [self.webView loadRequ…
大多数情况下,网站都会根据我们的请求头信息来区分你是不是一个爬虫程序,如果一旦识别出这是一个爬虫程序,很容易就会拒绝我们的请求,因此我们需要给我们的爬虫手动添加请求头信息,来模拟浏览器的行为,但是当我们需要大量的爬取某一个网站的时候,一直使用同一个User-Agent显然也是不够的,因此,我们本节的内容就是学习在scrapy中设置随机的User-Agent. Scrapy中设置随机User-Agent是通过下载器中间件(Downloader Middleware)来实现的. 设置随机User-A…
当我们需要大量的爬取网站信息时,除了切换User-Agent之外,另外一个重要的方式就是设置IP代理,以防止我们的爬虫被拒绝,下面我们就来演示scrapy如何设置随机IPProxy. 设置随机IPProxy 同样的你想要设置IPProxy ,首先需要找到可用的IPProxy ,通常情况下,一些代理网站会提供一些免费的ip代理,但是其稳定性和可用性很难得到保证,但是初学阶段,只能硬着头皮去找了,当然后期我们可以有其他的方法来寻找可用的IP代理,拿到可用的IPProxy 以后,将其添加到settin…
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px solid #000; } .table { border-collapse: collapse !important; } .table td, .table th { background-color: #fff !important; } .table-bordered th, .table-bordere…
etc/profile里设置环境变量导致无法登录解决   1,因为不小心在 etc/profile里设在环境变量导致无法登录    不要在 etc/profile里设置 export PATH这样会导致重启后登录不了系统    在登录界面 alt +ctrl+f2进入命令模式,如果不是root用户需要键入[root用户就不许这么罗嗦,gedit编辑会不可显示]    /usr/bin/sudo /usr/bin/vi /etc/environment    光标移到    export PATH…
Python生成随机数与随机字符串,需要import random模块.random模块最常用的几个函数如下: 1. random.random(a, b) 用于生成一个0到1的随机符点数: 0 <= n < 1.0 >>> import random >>> random.random() 0.85415370477785668 >>> random.uniform(1, 10) 5.4221167969800881 2. random.…
前面主要学习了OC的基础知识,接下来将主要学习Foundation框架的一些常用类的常用方法.Foubdation框架是Cocoa编程.IOS编程的基础框架,包括代表字符串的NSString(代表字符序列不可变的字符串).NSMutableString(代表字符序列可变的字符串),以及代表日期.时间的NSDate,关于日历的NSCalendar.NSDateComponents等常用类. 一.字符串 1.NSString代表字符序列不可变的字符串,即一旦NSString对象被创建,包含在这个对象…
1. 创建项目文档 在目标路径下,打开命令行,使用如下命令创建项目,例如项目名称为 "tutorial": scrapy startproject tutorial - 创建项目时,会自动创建对应的目录,所以没有必要自己先预先创建项目名称的目录 2. 使用pycharm创建项目 由于是在windows下采用pycharm的IDE进行开发,因此直接在pycharm上创建一个项目,目录为第一步用命令创建的目录. 如果不想用IDE,也可以直接用文本编辑器编辑,或者使用其他IDE. 3. 修改…