自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (1)
  • 收藏
  • 关注

原创 常见的反爬手段和解决思路

1、服务器反爬的原因爬虫占总PV(PV是指页面的访问次数,每打开或刷新一次页面,就算做一个PV)比较高,浪费资源(尤其是三月份爬虫)。公司可免费查询的资源被批量抓走,丧失竞争力。法律的灰色地带,状告爬虫成功的几率小。爬虫在国内还是个擦边球,就是有可能可以起诉成功,也可能完全失效,所以还是需要用技术手段来做最后的保障。2、服务器常反什么样的爬虫应届毕业生应届毕业生的爬虫通常简单粗暴,根本不管服务器压力,加上人数不可预测,很容易把站点弄挂。创业小公司现在的创业公司越来越多,觉得大数据

2020-10-29 19:33:55 771

原创 查找算法

二分查找[折半查找]算法1、思路分析首先确定该数组的中间的下标mid = (left + right) / 2然后让需要查找的数 findVal 和 arr[mid] 比较1 findVal > arr[mid] 说明要查找的数在mid的右边,因此需要递归的向右查找2 findVal < arr[mid] 说明要查找的数在mid的左边,因此需要递归的向左查找3 findVal == arr[mid] 说明找到,返回下标值// 什么时候需要结束递归?找到

2020-10-21 14:43:17 157

原创 排序算法

一、冒泡排序1.1 基本介绍冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒。优化:因为排序的过程中, 各元素不断接近自己的位置, 如果一趟比较下来没有进行过交换, 就说明序列有序, 因此要在排序过程中设置一个标志 flag 判断元素是否进行过交换。 从而减少不必要的比较。 (这里说的优化, 可以在冒泡排序写好后, 再进行)1.2 思路.

2020-10-21 14:41:16 255

原创 Scrapy中间件的使用

下载中间件(MiddleproDownloaderMiddleware)位置:引擎和下载器之间作用:批量拦截到整个工程中所有的请求和响应拦截请求:UA伪装IP代理拦截响应:篡改响应数据、响应请求[middlewares.py] MiddleproDownloaderMiddleware类中有3个重要方法import randomfrom fake_useragent import UserAgentclass MiddleproDownloaderMiddleware

2020-10-20 15:33:02 309

原创 Scrapy—ImagesPipeline

图片数据爬取之ImagesPipeline基于scrapy爬取字符串类型的数据和爬取图片类型的数据的区别?字符串:只需要基于xpath进行解析且提交管道进行持久化存储图片:xpath解析出图片src的属性值。单独的对图片地址发起请求获取图片二进制类型的数据ImagesPipeline:需要将img的src的属性值进行解析,提交到管道,管道就会对图片的src进行请求发送获取图片的二进制类型的数据,且还会进行持久化存储需求:爬取站长素材中的高清图片网页中的图片使用了懒加载方式,

2020-10-19 21:21:35 1207 5

原创 Scrapy框架补充

scrapy数据解析scrapy持久化存储基于终端指令:指令:scrapy crawl (爬虫文件名) -o (filepath/filename.filetype)例如:scrapy crwal qiushi_spider -o ./qiushibaike.json要求:只可以将parse方法的返回值存储到本地文本文件中注意:持久化存储对应的文本文件的类型只可以为:json、jsonlines、jl、csv、xml、marshal、pickle好处:简洁高效便捷缺

2020-10-19 18:08:02 303 2

原创 用selenium对12306模拟登录

一、超级鹰的使用https://www.chaojiying.com/注册:普通用户登录:普通用户题分查询:充值(1块=1000题分)进入用户中心 -> 软件ID -> 生成一个软件ID下载示例代码 :开发文档 -> 根据对应的开发语言选择下载,这里我选择的是python -> 进入点击下载,保存到本地解压 -> 解压出来的有一张图片 a.jpg,示例代码 chaojiying.py在 pychram中新建一个测试模块,将ch

2020-10-18 23:01:09 395

原创 谷歌无头浏览器与反检测

谷歌无头浏览器由于PhantomJs已经停止了更新和维护,所以推荐使用谷歌无头浏览器,是一款无界面的谷歌浏览器from selenium import webdriverfrom time import sleepfrom selenium.webdriver.chrome.options import Options""" 实现无可视化界面的操作 """chrome_options = Options()chrome_options.add_argument('--headless')c

2020-10-18 22:58:07 1042 1

原创 selenium模块的基本使用

问题:selenium模块和爬虫之间具有怎样的关联?便捷的获取网站中动态加载的数据便捷实现模拟登录什么是selenium模块?基于浏览器自动化的一个模块。selenium使用流程:环境安装: pip install selenium下载一个浏览器的驱动程序(谷歌浏览器)下载路径: http://chromedriver.storage.googleapis.com/index.html驱动程序和浏览器的映射关系:http://blog.csdn.net/huilan_sa

2020-10-18 22:55:32 455 1

原创 Python爬虫实战—vmgrils图片网站

一、实战背景唯美女生:https://www.vmgirls.com/少女情怀总是诗,一双发现美的眼睛!工具:Python3.7,PyCharm程序所需用到的模块:requests,fake_useragent,parsel,os,time所使用的解析器:xpath二、明确目标明确我们需要爬取哪个图片集的图片资源,这里以少女情怀总是诗为例。2.1 分析我们需要爬取的图片链接地址按F12打开开发者工具这里可以看见,选择 a 标签中的 href 属性或者 img 标签中的 src 属性都是

2020-10-10 09:30:06 5800 3

原创 Python爬虫实战—笔趣看小说网

一、实战背景笔趣看小说网站:https://www.biqukan.com/本站所有小说为转载作品,所有章节均由网友上传,转载至本站只是为了宣传本书让更多读者欣赏。工具:Python3.7,PyCharm程序所需用到的模块:requests,fake_useragent,parsel,docx,time所使用的解析器:xpath二、明确目标明确我们需要爬取哪部小说。这里我以《斗破苍穹》为例。2.1 分析我们需要爬取的数据作者、分类、状态、字数、更新时间和简介文章从正文卷开始,获取每一

2020-10-09 22:32:59 1130 1

原创 DRF开发RESTful API接口

上一篇:[https://blog.csdn.net/qq_43401941/article/details/108962767])(https://blog.csdn.net/qq_43401941/article/details/108962767)DRF的认证和权限九、认证方式的介绍用户名和密码认证(BasicAuthentication)【用于测试工作,尽量不要用于生产环境】Session认证(SessionAuthentication)Token认证(TokenAuthenticati

2020-10-08 14:31:57 662

原创 Django REST Framework入门学习

Django REST Framework导学学习目标:使用DRF开发RESTful API接口学习内容:序列化(serializers)、视图集(viewsets)、路由(routers)、认证(authentication)、认证(permission)学习效果:DRF的多种视图实现课程信息的增删改查一、创建项目1.1 创建Django项目1.2 修改 settings.py配置文件ALLOWED_HOSTS = ["*"]LANGUAGE_CODE = 'zh-hans'

2020-10-08 14:27:27 1080 1

原创 关于创建 Scrapy框架时,项目中没有虚拟环境的问题

在我们创建好 Scrapy项目发现 pychram的终端控制台中没有虚拟环境(venv)没有虚拟环境的有虚拟环境的1、点击 settings,在下面图片中找到右边的设置图标,然后点击Add…2、添加虚拟环境默认设置就行了,然后点击OK按钮。这里因为我已经设置过了,所以是灰色3、选择刚才添加的虚拟环境4、测试一下 pip命令当有内容输出时,就证明虚拟环境配置成功!...

2020-10-04 22:01:23 277

原创 Python爬虫—Scrapy框架

一、为什么要使用Scrapy?它更容易构建和大规模的抓取项目它内置的机制被称为选择器,用于从网站(网页)上提取数据它异步处理请求,速度十分快它可以使用自动调节机制自动调整爬行速度确保开发人员可访问性二、Scrapy的特点Scrapy是一个开源和免费使用的网络爬虫框架Scrapy生成格式导出如:JSON,CSV和XMLScrapy内置支持从源代码,使用XPath或CSS表达式的选择器来提取数据Scrapy基于爬虫,允许以自动方式从网页中提取数据三、Scrapy的优点Scrap

2020-10-04 21:56:05 3051

原创 看了就会用的ajax

1、什么是Ajax?AJAX = Asynchronous JavaScript and XML (异步的 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新局部网页的技术。了解Ajax历史Ajax 不是一种新的编程语言,而是一种应用于创建更好更快以及交互性更强的Web应用程序的技术Ajax的核心是XMLHttpRequest对象(xhr)。XHR为向服务器发送请求和解析服务器响应提供了接口,能够以异步方式从服务器获取新数据

2020-09-30 21:54:05 310

原创 Hibernate的增删改查

文章目录1、实现班级和学生记录的添加;2、通过班级遍历输出其所有学生记录;3、修改班级记录4、级联删除操作以上多个代码可能会冲突,则可以新建多个Test类,分文件测试。作业上交以班级和学生为例,字段自己定,要求用基于注解的Hibernate实现一对多映射。要求 :1、实现班级和学生记录的添加;1.1新建一个Hibernate项目,导入hibernate所需的jar包[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xUXPQhff-1601389242532)(htt

2020-09-30 21:52:47 284

原创 Android-使用SQLite数据库

Android Studio中如何打开SQLite数据库?1、SQLite可视化工具SQLiteStudio下载地址 :https://github.com/pawelsalawa/sqlitestudio/releasesSQLiteStudio分为便携式和安装式,根据自己的选择下载那个都行。这里我们下载的为便携式 .zip2、双击SQLiteStudio.exe,默认选中的语言是English3、导出数据库文件这里我保存在自己新建的dbs文件夹下[外链图片转存失败,源站

2020-09-30 21:51:21 206

原创 Android-网络与数据存储

五种数据存储方式文件存储是一种较常用的方法,与 Java的文件存储类似,都是通过 I/O 流的形式存储数据。SharedPreferences 时 Android提供的用来存储一些简单的配置信息的一种机制。SQLite数据库是 Android自带的一个轻量级数据库,支持基本 SQL语法。ContentProvider是 Android四大组件之一,可以将自己的数据共享给其他应用程序。网络存储是通过网络提供的存储空间来存储 / 获取数据信息。读取各目录下的文件操作sd卡文件、读写文件操作

2020-09-30 21:50:35 1102

原创 Android-强大的酷特性 “ Widget “

什么是 “Widget” ?微件(Web widget,简称Widget)是一种 Web2.0 的衍生物,它好像是一个小型的应用程式,它可以是一个时钟,一个日记簿,一段视频,天气预报,一个 Flash 游戏等等。简单说Widget可以理解为“应用小插件”,一种可供用户制作和自由下载的小工具,它包含了娱乐、工作、学习等多种实用功能。目前的Widget应用大体可分为三种:Desktop Widget、WEB Widget以及Mobile Widget。了解了什么是 Widget,那么就来做一个小 De

2020-09-30 21:49:45 175

原创 Android-强大的WebView

可以做哪些事情?加载线上 urlmWebView.loadUrl("https://www.baidu.com");加载本地 html和 js 进行交互js调用原生 App public class TestJSEvent { @JavascriptInterface // 4.2以上必须加此注解,否则不生效 public void showToast(String toast) { Toast.makeText(W

2020-09-30 21:49:10 133

原创 Android-广播接收器(BroadcastReceiver)

BroadcastReceiver是什么,怎么使用?四大组件之一:广播(通知消息)接收器系统使用了很多广播通知时间改变电池电量变低拍摄了照片改变了语言没有用户界面extends BroadcastReceiverBroadcastReceiver的两种注册方式静态注册(常驻广播)在 AndroidManifest.xml中注册<receiver android:name=".TestBroadcastReceiver"> <intent-f

2020-09-30 21:47:39 574

原创 Android-Srvice服务

7、Service7.1 Service初探A Service is an application component that can perform long-running operations in the background and does not provide a user interface.服务是一个应用程序组件,它可以在后台执行长时间运行的操作,而不提供用户界面。A Service is not a separate process.A Service is not

2020-09-30 16:40:14 153

原创 Android-Handler初体验

6、有用的Handler多线程与异步什么是Handler?A Handler allows you to send and process Message and Runnable objects associated with a thread’s MessageQueue用来做什么?定时执行Message和MessageQueue在不同线程中执行Handler怎么使用Handler处理消息(Message),Message放在Message队列里(MessageQueue

2020-09-30 16:35:15 130

原创 Android-Fragment了解

Fragment什么是Fragment?为什么要使用Fragment?如何使用Fragment?如何管理Fragment?Fragment的生命周期。什么是Fragment?Fragment是activity的界面中的一部分多个fragment们组合到一个activity中多个activity中可重用一个fragment为什么要使用Fragment?支持更动态更灵活的界面设计在平板上的应用Activity的layout分成Fragment如何使用

2020-09-29 22:01:24 56

原创 Android-自定义控件的学习

1. 需求 :做一个圆形的红色按钮中间有一个白色的数字数字起始为20每点击一次减少12. View是如何工作的?构造器---->初始化onMesure() 定大小onLayout() 定位置onDraw() 绘制invalidate() 刷新5.1 添加一个Button组件并设置点击事件public class MainActivity extends AppCompatActivity implements View.OnClickListene

2020-09-29 21:59:32 155

转载 Android-Service的生命周期

与Activity类似,Service也有自己的生命周期函数,在不同的时刻,系统会调用对应的Service生命周期函数,不过与Activity声明周期相比,Service的声明周期更加简单,我们通过官方给出的一张图片来体会一下:Service 作为 Android四大组件之一,应用非常广泛。和Activity一样,Service 也有一系列的生命周期回调函数,我们可以用来监测 Service状态变化,并且在适当的时候执行适当的工作。1、生命周期状态生命周期方法说明:onCreate() :

2020-09-29 21:54:53 9599 1

原创 Android-Activity生命周期以及ListView学习

3、Activity的生命周期各个生命周期方法的简单介绍4、学习 ListView4.1 以 MainActivity为默认启动界面,并实现3秒跳转public class MainActivity extends AppCompatActivity { Handler mHandler = new Handler(); // 创建一个 Handler对象 @Override protected void onCreate(Bundle savedInstanceS

2020-09-29 21:51:25 197

原创 android-Activity间传递数据

2.1 启动页面自动跳转,并将启动页面的标题文字传递给其他页面2.1.1 我们把昨天项目中的按钮先删除掉,并为TextView添加一个id属性2.1.2 在StartActivity中把昨天设置的按钮监听器代码删掉,并填写新的代码public class StartActivity extends AppCompatActivity { Handler mHandler = new Handler(); // 创建一个 Handler对象 @Override pr

2020-09-29 21:47:22 258

原创 Eclipse安装Hibernate插件

1、在线下载安装插件地址:http://download.jboss.org/jbosstools/updates/stable/kepler/1、Help —> Install New Software2、Add —> 输入名称和地址3、勾选 Hibernate Tools4、Next —> Next —> 我同意 —> Finsh2、使用本地压缩包1、将压缩包下载到自己的本地磁盘(其实还如在线安装呢)2、Help —&g

2020-09-29 21:42:36 133

原创 Spring+SpringMVC+MyBatis的整合

Spring+SpringMVC+MyBatis的整合1. 在pom.xml中导入所需依赖<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope>

2020-09-29 21:38:21 105

原创 Spring+SpringMVC+Hibernate整合

前言:1. 用于配置Spring的 .xml 插件为了编写时有一些提示、自动生成一些配置信息,可以给 eclipse增加支持 spring的插件:spring tool suite,https://spring.io/tools/sts/all,下载然后安装(不推荐这种方式,容易出错)插件版本尽量保持与 eclipse版本一致。如果插件版本没有与eclipse一样的,那么更新eclipse对应的版本直接下载sts工具(相当于一个集合了spring tools的Eclipse):https://

2020-09-29 21:33:07 1869

原创 SpringMVC基础入门学习

SpringMVC基础入门学习学习工具:JDK1.8 https://www.oracle.com/java/technologies/javase-jdk8-downloads.htmlSpringTools(STS) https://spring.io/toolstomcat8.5 https://tomcat.apache.org/1、SpringMVC的第一个项目1.1 新建一个动态的Web项目1.2 导入SpringMVC所需的jar包1.3 配置Web.xml文件

2020-09-29 21:23:49 182

原创 SpringMVC引入Thymeleaf模板引擎

SpringMVC基础入门学习学习工具:JDK1.8 https://www.oracle.com/java/technologies/javase-jdk8-downloads.htmlSpringTools(STS) https://spring.io/toolstomcat8.5 https://tomcat.apache.org/1、SpringMVC的第一个项目1.1 新建一个动态的Web项目1.2 导入SpringMVC所需的jar包1.3 配置Web.xml文件

2020-09-29 21:12:28 1190

原创 RSA代码演示

RSA实例代码通过上一篇的RSA算法原理了解之后,这里用一段简易的Java代码进行演示。首先我们创建一个类,然后在main方法中通过BigInteger.probablePrime(int bitLength, Random rnd)方法生成两个素数System.out.println(BigInteger.probablePrime(10, new Random()));System.out.println(BigInteger.probablePrime(10, new Random()))

2020-09-28 10:28:10 778 2

转载 RSA算法简介

RSA算法简介RSA算法是一种非对称性加密算法,现在算是最具有影响力的算法,简单来说RSA算法运用了"一个大整数进行因式分解具备一定的难度"这个数学知识来进行加密,对一个极大整数做因式分解越难,那么想要破解加密过后的密码就越难。在了解RSA算法之前,先要了解以下几个知识点:一、互质关系__如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系(coprime)。__比如,15和32没有公因子,所以它们是互质关系。这说明,不是质数也可以构成互质关系。关于互质关系,不难得到以下结论:

2020-09-28 10:24:32 2498 1

C数字雨和音乐播放器

C写的一个黑客帝国数字雨和音乐播放器,运行时是全屏的,按Esc键退出。颜色默认是绿色的,也可以修改。音乐代码都是独立的。

2019-03-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除