自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Super-Coding的博客

人生苦短,我用Python。

  • 博客(90)
  • 资源 (2)
  • 收藏
  • 关注

原创 博客摘录「 Python面试宝典」2024年2月20日

match: 用于检查字符串的开头是否符合正则表达式模式。只有在字符串的开头有一个匹配项时,才会返回一个匹配对象。如果找不到匹配项或者不在字符串开头,它会返回None。search: 用于在字符串中搜索符合正则表达式模式的第一个匹配项。它会返回一个匹配对象,包含匹配项的信息。如果找不到匹配项,它会返回None。总结来说,search方法会在整个字符串中寻找匹配项,而match方法只会在字符串开头寻找匹配项。在正则表达式中,"search"和"match"是两个常用的方法。

2024-02-20 11:31:48 406

原创 博客摘录「 Python面试宝典」2024年2月20日

无论使用哪种方式,只读属性都可以保护数据的完整性,并且提供更严格的控制访问权限。面向对象中怎么实现只读属性?

2024-02-20 10:12:38 390

原创 博客摘录「 Python面试宝典」2024年2月20日

这也是为什么修改不可变对象的值会创建一个新的对象的原因。例如,对于一个字符串对象,我们可以通过切片获取部分字符并创建一个新的字符串对象,但原始的字符串对象本身并没有改变。不可变对象是指一旦被创建就不能被修改的对象,主要包括数字(int、float)、字符串(str)和元组(tuple)。不可变对象的值或结构不能被改变,只能通过重新赋值创建一个新的对象。可变对象是指在创建后可以被修改的对象,主要包括列表(list)、字典(dict)和集合(set)。Python 中的可变对象和不可变对象?

2024-02-20 10:03:08 448

原创 博客摘录「 Python面试宝典」2024年2月20日

迭代器:是一种访问序列元素的方式,通过 iter() 函数 将一个可迭代对象转化为一个迭代对象,并使用 next() 函数返回序列中下一个元素, 每次调用 next() 函数都会返回序列中的下一个元素,直到序列耗尽时抛出 StopIteration 异常。语句返回序列中的下一个元素,每次调用yield 语句都会返回序列中下一个元素,并会在函数中记录当前状态,以便在下一次调用时继续返回下一个元素。而生成器是一种基于函数的惰性计算机制,能高效的实现序列操作。生成器:是一种特殊的迭代器,通过函数实现,并使用。

2024-02-20 09:39:17 431

转载 以某乎为实战案例,教你用Python爬取手机App数据

1、前言最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)!本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数据!2、配置抓包工具1.安装软件本文选择的抓包工具:Fiddler具体的下载安装这里不详细赘述!(网上搜Fiddler安装,一大堆教程),本文以实战为例,就不再这里浪费时间了!2.配置Fiddler安装好之后,接下来就开始配置Fiddler工具(这里是关键,仔细阅读!)配置Connections

2021-06-15 09:48:51 1856

转载 【转】猿人学爬虫知识整合

爬虫的技术问题一、JS加密如何突破熟练掌握 Chrome 的开发者工具的各个功能,Elements,Network,Source认真观察,善于思考,Network 查看加载流程,找可疑的 xhr 请求,设置 xhr 断点,通过 CallStack 回溯 js 执行过程,边回溯便查看上下文代码。能读懂 js 代码,知道 js 的相关知识,比如 js 里面的 window 变量以上是通过 debug js 找到 js 加密解密的代码,然后通过 Python 重新实现,这个过程很长,可能消耗你几天的时间,

2021-06-07 15:02:48 1696

转载 JS调试与Hook技巧

逆向Js 对js基本功并不会像想象中这么高, 但是一些调试与hook技巧是你必须要掌握的! 会让你效率翻倍。浏览器调试技巧这里我所使用的是 谷歌浏览器常用js储存与调用场景: 假如你自己写了一套js代码,涵盖一些你自己常用的转码、加密、解密、宏操作等等,你在逆向js的时候经常用到你这些js代码, 但是你每次都去把代码拷贝出来运行,是不是有点繁琐呢?下面说一种长效保存代码到浏览器中的方法!优势在于有代码提示,随时调用方法如下:这里我以添加 cryptoJs 为例保存好后,记得右键 R.

2021-06-07 14:44:28 1382 1

转载 Fiddler使用

HTTPS按照提示安装 SSL 证书设置抓包类型必须设置为可以远程捕获,因为要抓APP的包开启网页抓包火狐抓包因为谷歌等浏览器是使用系统的代理,所以无需额外设置。进入设置选中高级选择网络选择链接设置选择使用系统代理!然后配置火狐可信任的证书设置高级证书查看证书导入证书(证书在 Fiddler中导出)手机端安卓 7 以下一、 获取本地IP 通常为192.端口为配置的端口,默认 8888二、在手机端配置手机wifi设置上手动代理,配置上

2021-06-07 14:29:16 337

转载 图解爬虫,用几个最简单的例子带你入门Python爬虫

highlight: a11y-dark1.前言爬虫一直是Python一大应用场景,差不多每门语言都可以写爬虫,但是程序猿们独爱Python。之所以偏爱Python就是因为它的简洁的语法,我们使用Python可以很简单的写出一个爬虫程序。本篇文章将以Python语言,用几个非常简单的例子带大家入门Python爬虫。2.网络爬虫如果把我们的因特网比作一张复杂的蜘蛛网的话,那我们的爬虫就是一只蜘蛛,我们可以让这个蜘蛛在网上任意爬行,在网中寻找对我们有价值的“猎物”。首先我们的网络爬虫是建立在网络之上.

2021-05-22 11:43:46 327

转载 跟云服务器说拜拜! Python 脚本居然可以部署在手机上(详细)

1. 前言大家好,我是Super!最近有读者后台给我留言,说这段时间云服务器涨价了,自己日常就运行一些简单的脚本,因此不太想入坑云服务器,问我能不能提供一个不一样的思路给他本篇文章将介绍一款软件,即:iSH这款 App 功能非常强大,可以运行各种脚本,适用于需求不是很大的小伙伴2. 介绍iSH 是一款运行在 iOS 系统上的 App,可以运行 Linux Shell,底层操作系统基于「 Alpine 」PS:Alpine 是一个超轻量级的 Linux 发行版,是一个由社区开发的 Linux

2021-05-22 10:58:30 754

转载 一篇文章带你读懂批处理命令

批处理,顾名思义,批量处理,它可以将复杂的事情变得简单,最早出现在dos操作系统中,也就是我们经常说的cmd黑窗口,这在早期没有gui界面的时候用的是最多的,而且命令比较丰富,虽然现在有很多功能都被封装到了软件中,但是你会发现在dos中执行操作会更快,哪怕会比较麻烦,如果你无法忍受慢节奏。下面就基本命令咱们先看看吧,首先打开cmd窗口:你可以通过 快捷键 徽标键+R,然后输入cmd,也可以点击window系统右下角,然后点击运行,输入cmd即可。下面我们来看看吧:打开后可以看到这幅画面,

2021-05-22 10:44:34 366

原创 【第十五周 第 2 节】Django实战(一)

第十五周-第二节课选择hexo模板https://hexo.io/themes/创建开发环境创建虚拟环境安装依赖批量导出安装的第三方库pip freeze >> requirements.txt批量安装第三方库pip install -r requirements.txt静态资源前端框架最终都会转为HTML, CSS, JS的形式在浏览器中完成渲染我们只要自定义静态资源中的内容九可以达到自动博客主题的目的在settings中配置静

2021-05-08 22:05:12 79

原创 【第十五周】第 1 节:Django视图

第十五周-第一节课DEBUGURL配置当接收一个HttpRequest对象时, django会自上而下地寻找urlpatterns进行匹配起点就是ROOT_URLCONF中设置的路径urlpatterns它是 django.urls.path() 和(或) django.urls.re_path() 实例的序列urlpatterns = [ path('polls/', include("polls.urls")), path('admin/', admin.site.

2021-05-07 23:14:24 51

原创 【第十四周 第 3 节】模型层(三)

第十四周-第三节课django.setup()import osimport randomimport djangodef create_reader(): for i in range(10): reader = Reader( name=f'name_{i}', email=f'email_{i}@163.com', null_test=None, blank_test=

2021-05-05 22:03:43 90

原创 【第十四周 第 2 节】模型层(二)

第十四周-第二节课内嵌类Meta通过一个内嵌类Meta来定义元数据, 元数据又被称为中介数据, 用于描述数据得数据.简单地讲, Meta就是通过属性来描述model对象, 为其提供额外得功能.abstract将当前模型类转换成抽象类, 当进行migrate的时候会被忽略.因为migrate是对实体表进行修改, 而抽象是一个虚的概念, 所以不存在实体.app_label指定当前model从属于哪个已经注册的应用使用场景一般为应用只编写视图层来处理业务逻辑. 模型层统一由一个

2021-05-05 18:35:03 141 1

原创 【第十四周 第 1 节】:模型层(一)

第十四周-第一节课字段类型有限使用, 尽量使用和数据库一致的数据类型BooleanField代表true或者false, 也就是代表1和0;IntegerFieldBigIntFieldFloatFieldDecimalFieldCharField在mysql中对应的就是varchar, 所以必须指定长度name = models.CharField(max_length=200)TextField遇到大的文本和图片, 文件. 推荐做法是存当前

2021-05-05 17:15:37 71

原创 【第十三周 第 3 节】:django示例(二)

第十三周-第三节课遇到修改后模板文件没有变化的情况, 要想到去清除浏览器缓存.视图层返回类型简单文本文件htmlcssjs视频文件, 音频文件JSON数据格式路由配置URL匹配path('<int:question_id>/', views.detail, name='detail'),int表示类型question_id表示传递的参数名URL配置ROOT_URLCONF设置主URL配置文件.模板def index(r

2021-05-04 11:49:12 73

原创 【第十三周 第 2 节】:django示例(一)

第十三周-第二节课https://docs.djangoproject.com/zh-hans/2.0/intro/tutorial01/创建视图视图就是处理客户端请求的地方views.pydef index(request): """ request 就是作为参数传递进来的请求对象 :param request: :return: HttpResponse 处理完请求的返回对象 """ return HttpResponse("Hello wo

2021-05-04 10:40:08 64

原创 【第十三周 第 1 节】初识django

第十三周-第一节课https://docs.djangoproject.com/zh-hans/2.0/安装Djangopip install django==2.0# 下载比较慢的同学可以换个源下载pip install django==2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple创建项目django-admin startproject mysite# 创建虚拟环境cd mysitepython -m venv venv目

2021-05-03 18:37:02 86

原创 【第十二周第 3 节】:Selenium 基础(二)

第十二周-第三节课selenium配置execute_pathbrowser = webdriver.Chrome(executable_path=driver_path, chrome_options=chrome_options)chrome_optionschrome浏览器的配置对象https://peter.sh/experiments/chromium-command-line-switches/添加代理proxy = "127.0.0.1:8888"chrome

2021-05-03 18:06:22 313 1

原创 【第十二周第 2 节】:Selenium(一)

第十二周-第二节课Selenium简单介绍https://selenium-python.readthedocs.io/https://python-selenium-zh.readthedocs.io/zh_CN/latest/什么是selenium通过浏览器驱动来自动化操纵浏览器的工具selenium -> 传输指令 -> webdriver -> 转换指令 -> 浏览器webdriver的出现是为了兼容各语言各版本, 使java或者python都可以通过同

2021-04-28 22:02:38 166 1

原创 Python爬虫进阶--js逆向-某金所和某某之家参数加密分析

某金所aHR0cHM6Ly93d3cuaGZheC5jb20vbG9naW4uaHRtbCMvP3JzcmM9aHR0cHMlM0ElMkYlMkZ3d3cuaGZheC5jb20lMkYlMjMlMkY=抓包分析老规矩先来抓包分析,看下那些参数是加密了的。这里 password 是加密的,那接下来我们就找找它的加密逻辑。如下图,从红框中进入js代码进入后搜索 password: 有四个搜索结果,就看到熟悉的 encrypt 在这里打个断点鼠标悬停进入函数中这里就看到加密的逻辑了,t.

2021-03-16 10:55:26 1104 3

原创 Python爬虫进阶--js逆向 | 某某云加速参数加密分析

目标网址aHR0cHM6Ly93d3cuZG5zLmNvbS9sb2dpbi5odG1s抓包定位首先抓包看请求这里 password 和 email 都经过加密了。_token 可以在页面上找到。从这里进去搜索直接搜索 password: 就能定位到加密的位置。打上断点重新运行进去就能看到加密逻辑。知道加密逻辑后,可以调用 node.js 的 CryptoJS 库直接使用。var CryptoJS = require('crypto-js');function aes(val.

2021-03-15 20:04:56 8779

原创 Python爬虫进阶--js逆向-某某快药 sign 加密分析与加密逻辑复写

今日受害者aHR0cDovL3d3dy5kZGt5LmNvbS9jb21tb2RpdHkuaHRtbD9kZGt5Y2FjaGU9YTdiMTllODc5ZDJmMmYyNzlkMzU2ZjVhZmE2ZDVjZmY=分析请求请求一波,看看有哪些加密的参数。如图似乎 sign 是经过加密的,其他参数好像没什么问题,那我们就来找找 sign 在哪。鼠标悬停,选中点击红框中的文件直接搜索 sign ,出现四个结果,在这里就能看到 sign 加密了。接着,分析逻辑,这里的 sign 值是 y.

2021-03-15 15:16:29 277

原创 Python爬虫进阶--js逆向-某笔网密码加密分析

参数加密逻辑分析先来抓包看看参数,如下图:这个参数的值看着像 Base64,不要着急下定论,先搜索参数名试试看。经过搜索参数名 password: 在文件中定位到3处疑似加密的位置。如下图。这里有两种方法判断加密位置:给所有搜索到的结果位置打上断点,再次点击按钮看看进入到哪个断点当中。阅读上下文,观察分析大概的代码逻辑。(留意相关的变量名)这里使用第一种方法,打上断点重新请求,可以看到成功断上了。这里的 this.password 是测试的密码,我么需要分析的就是这个 this..

2021-03-13 17:38:22 361

原创 Python爬虫进阶--js逆向-某中网密码加密算法分析

话不多说直接开始参数位置分析先来看看加密请求的参数,入图1:除了搜索加密参数之外,同样还要注意id 和 calssname等标志性的属性,能够帮助我们进一步定位加密位置。通过密码框的 id=password_txt 可以快速定位至网站的加密入口,如图二:然后再通过逐步调试进入虚拟引擎中加密码的位置打上断点,鼠标悬停,进入login() 函数,如图三:上图中的encrypt这个方法才是我们需要的加密方法,所以继续进去看逻辑。鼠标悬停,选中方法后点击小白框跳转,如下图顺利跳转进加.

2021-03-13 15:57:03 278

原创 Python爬虫进阶--js逆向-某博密码算法扣取+如何去扣取一个完整的逆向案例

X博登陆密码解析与讲解如何扣取一个加密算法本次受伤者:aHR0cHM6Ly93d3cud2VpYm8uY29tL2xvZ2luLnBocA==用 Chrome 浏览器抓包相信大家都会,前面抓包我们跳过,直接到加密参数分析的地方。Tip: 这次的加密不是异步的 不要在 XHR 选项卡傻乎乎的等了。X博登陆框是嵌在页面中的加上X博的登陆页面图片以及要加载的东西很多,所以我们需要注意的包主要有两个:登录前返回相关加密密匙的包,如下图:发起登录请求的包,如下图:看上面两张图就知道,我们只要.

2021-03-13 12:09:35 502

原创 Python爬虫进阶--js逆向-某天下与某某二手房密码加密分析

X天下密码加密分析本次的受害者:aHR0cHM6Ly9wYXNzcG9ydC5mYW5nLmNvbS8=分析通过输入错误密码抓包查看加密字段。【图1-1】直接通过检索pwd:定位加密位置【图1-2】。根据检索结果给对应的位置打上断点【图1-3】,并把划线的代码复制出来备用。重新发起请求,发现这些参数大概是下面这样的:// that.password.val() 输入的密码:11111111111// encryptedString 是加密方法encryptedString(key.

2021-03-12 16:37:05 496

原创 【第十一周第 1 节】:scrapy设置和中间件

第十一周-第一节课Scrapy的启动和debug命令行scrapy crawl jd_search启动脚本# 新建run.pyfrom scrapy import cmdlinecommand = "scrapy crawl jd_search".split()cmdline.execute(command)Scrapy Item只是对解析的结构化结果进行一个约束, 在到达pipeline前就可以检查出数据错误.Scrapy的设置*ROBOTTEXT_OBEY

2021-03-11 13:37:31 84

转载 手把手教你用Scrapy爬虫框架爬取食品论坛数据并存入数据库

一、前言网络爬虫(又称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。------百度百科说人话就是,爬虫是用来海量规则化获取数据,然后进行处理和运用,在大数据、金融、机器学习等等方面都是必须的支撑条件之一。目前在一线城市中,爬虫的岗位薪资待遇都是比较客观的,之后提升到中、高级爬虫工程师,数据分析师、大数据开发岗位等,都是很好的过渡。二、项目目标本此介绍的项目其实不用想的太过复杂,最终要实现的目标也就是

2021-03-11 11:24:58 202

转载 为什么 GIL 让多线程变得如此鸡肋?

做 Python 开发时,想必你肯定听过GIL,它经常被Python程序员吐槽,说Python的多线程非常鸡肋,因为GIL的存在,Python无法利用多线程提高性能。但事实真的如此吗?这篇文章,我们就来看一下Python的GIL到底是什么?以及它的存在,到底对我们的程序有哪些影响。GIL是什么?查阅官方文档,GIL全程 Global Interpreter Lock,即全局解释器锁,它的官方解释如下:In CPython, the global interpreter lock, or GIL,

2021-03-10 20:16:26 168

原创 【第十周第 3 节】:Scrapy基础(二)

第十周-第三节课Scrapy的启动和debug命令行scrapy crawl jd_search启动脚本# 新建run.pyfrom scrapy import cmdlinecommand = "scrapy crawl jd_search".split()cmdline.execute(command)Scrapy Item只是对解析的结构化结果进行一个约束, 在到达pipeline前就可以检查出数据错误.Scrapy的设置ROBOTTEXT_OBEY获

2021-03-08 18:01:45 55

原创 【第十周第 2 节】:Scrapy 基础(一)

第十周-第二节课Scrapy爬虫框架介绍文档英文文档中文文档什么是scrapy基于twisted搭建的异步爬虫框架.scrapy爬虫框架根据组件化设计理念和丰富的中间件, 使其成为了一个兼具高性能和高扩展的框架scrapy提供的主要功能具有优先级功能的调度器去重功能失败后的重试机制并发限制ip使用次数限制…scrapy的使用场景不适合scrapy项目的场景业务非常简单, 对性能要求也没有那么高, 那么我们写多进程, 多线程, 异步脚本即可.

2021-03-08 18:01:13 82

转载 Python 操作MongoDB 基础详解

MongoDB是一种面向文档型的非关系型数据库(NoSQL),非关系型数据库中是以键值对存储,结构不固定,易存储,减少时间和空间的开销文档型数据库通常是以JSON或XML格式存储数据,而Mongodb使用的数据结构是BSON,即二进制JSON。和JSON相比,BSON提高储存和扫描效率,但空间占用会更多些。本文默认已经安装MongoDB服务器,着重介绍Python操作MongoDB的库PyMongo,在命令行中输入如下内容安装:# Windowpip install pymongo# Macpi

2021-03-04 11:11:00 229 1

原创 【第十周第 1 节】:Python 的路径管理

第十周-第一节课路径管理路径绝对路径总是从根目录开始H:\PyCharmProjects\tutorials_2\jd_crawler\main.py相对路径jd_crawler\main.py.和...代表当前目录, ..代表父目录工作目录当前执行命令所在的目录# 将工作目录添加进当前的路径列表sys.path.append(os.getcwd())路径列表查看当前路径列表只有在路径列表当中的包和模块才可以导入和调用import sys

2021-03-02 22:33:03 105

转载 一个Python爬虫工程师的修养

练武不练功,到老一场空练武的人都知道:练武不练功,到老一场空!说的是只练花架子,不练习内功,最终也都是一个菜鸟级武师。学习编程何尝不是!我时常见到已经学习相当一段时间的程序员,连稍微深点的基本知识都没有掌握。可叹,可悲啊!根子不牢,注定走不远啊!基于实例学习编程非常重要,也非常有效,但与此同时,我们也必须不断的加强基本功的学习,刻意的加强相关的技术。掌握技术脉络,加强各项技术,跳出编程语言本身,练好内功,才能爬的又快又好,成为一个高级的爬虫工程师!本文从爬虫的技术原理出发,讨论了Pyth

2021-03-02 19:40:53 198

原创 【第九周第 3 节】:第一个爬虫项目

第九周-第三节课一个小又全的爬虫项目任务生成者生成爬虫任务的组件, 最大的作用就是建立生产消费者模型, 将生产者和消费者剥离, 可以达到程序暂停重启的功能.配置文件当前爬虫项目的基础配置信息, 目的就是统一化配置, 避免重复修改.主函数/调度器以逻辑控制流协同各个组件, 完成爬取工作, 具有一定的调度功能下载器用来和目标服务器进行交互, 获取数据的组件解析器用来解析非结构化的页面内容, 获取想要的数据.存储器用来持久化解析后的数据数据库存为本地文件,

2021-02-28 18:18:14 68

原创 【第九周 第 2 节】:页面解析

第九周-第二节课css-selector尽量避免解析路径中包含位置信息chrome页面中内置了Jquery环境, 用$符号来表示直接定位元素通过id进行定位$("#id值")通过class进行定位$(".class值")通过属性名进行定位$("标签名[属性名='属性值']")$("ul[class='gl-warp clearfix']")获取兄弟节点获取当前节点的下一个节点dom提供的接口, 不属于css-selector语法t

2021-02-25 21:40:45 67

原创 【第九周第 1 节】:请求的组成和页面

第九周-第一节课一个请求的组成def request_jd(keyword): url = "https://search.jd.com/Search" params = { "keyword": keyword } headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.

2021-02-25 21:40:03 66

原创 【第八周】第 3 节:Mysql 基础(六)

第八周-第三节课用python连接数据库pymysqlpip install pymysql#如果让你装vs环境, 执行以下命令升级pip即可python -m pip install --upgrade pip连接数据库数据库设置MYSQL_CONF = { "host": "127.0.0.1", "user": "root", "password": "qwe369", "db": "test"}连接# 连接数据库mysql

2021-02-07 16:10:50 111

tianyancha.py

输入企业名、工商号或纳税人号可以查询公司名,法人,注册时间,注册资本,企业类型,工商注册号,组织结构代码,统一信用代码,经营年限,登记机关,经营范围。

2021-03-04

CSS常见语法

CSS常见的语法

2018-09-18

空空如也

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

TA关注的人

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