def

Python 爬虫从入门到进阶之路(八)

▼魔方 西西 提交于 2020-10-31 05:32:23
  在之前的文章中我们介绍了一下 requests 模块,今天我们再来看一下 Python 爬虫中的正则表达的使用和 re 模块。      实际上爬虫一共就四个主要步骤:      明确目标 (要知道你准备在哪个范围或者网站去搜索)      爬 (将所有的网站的内容全部爬下来)      取 (去掉对我们没用处的数据)      处理数据(按照我们想要的方式存储和使用)      我们在之前写的爬虫程序中,都只是获取到了页面的全部内容,也就是只进行到了第2步,但是大部分的东西是我们不关心的,因此我们需要将之按我们的需要过滤和匹配出来。这时候我们就需要用到了正则表达式。      什么是正则表达式      正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。      正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。      给定一个正则表达式和另一个字符串,我们可以达到如下的目的:      给定的字符串是否符合正则表达式的过滤逻辑(“匹配”);      通过正则表达式,从文本字符串中获取我们想要的特定部分(“过滤”)。      正则表达式匹配规则      Python 的 re 模块      在 Python 中

约瑟夫问题

让人想犯罪 __ 提交于 2020-10-31 04:03:21
  在古罗马人占领乔塔帕特后,39个犹太人与约瑟夫和他的朋友躲到一个洞中。39个犹太人决定宁死也不被敌人抓到,于是商定以一种特殊的方式自杀:   41个人排成一个圆圈,由第一个人开始报数,每报数到3的人就必须自杀,直到所有人都自杀身亡为止。   但是约瑟夫和他的朋友并不想死,那么请问,约瑟夫和他的朋友,应该怎样安排自己的位置,才能逃过一劫?   分析:如果约瑟夫和他的朋友不想死,那么他们将是最后剩下的两个人,因此,问题的关键在于如何安排他们的位置,才能将他们留到最后。 def move(man, sep): """ 将man列表向左移动sep单位,最左边的元素向列表后面添加, 相当于队列顺时针移动 """ for i in range(sep): item = man.pop(0) man.append(item) def play(man=41, sep=3, rest=2 ): """ man:玩家个数 sep:杀死数到的第几个人 rest:幸存者数量 """ print (f ' 总共{man}个人,每报数数到第{sep}的人自杀, 最后剩余{rest}个人 ' ) man = [i for i in range(1, man + 1)] # 初始化玩家列队 print ( ' 玩家列队: ' , man) sep -= 1 # 数两个数,到第3个人时就自杀 while

C++ boost.python折腾笔记

孤人 提交于 2020-10-30 08:19:42
为了让当年研究生时写的图像处理系统重出江湖起到更大的作用,应研究生导师的意见,对原有的c++框架做了python扩展处理,为了避免遗忘,备注如下: 一、boost 编译 下载boost源码,这里使用boost 1.67,解压到目录,进行编译 下载C++的boost库: http://www. boost.org/ 安装Anaconda3-5.1.0-Windows-x86_64 默认路径安装 解压boost文件,在其目录中执行 .\bootstrap.bat ,会生成编译器 b2.exe 和 bjam.exe 修改 project-config.jam 文件,加入python的版本及路径(不加入则会默认python2): import option ; using msvc ; option.set keep-going : false ; using python : 3.6 # Version : C:\\ProgramData\\Anaconda3\\python.exe # Python Path : C:\\ProgramData\\Anaconda3\\include # include path : C:\\ProgramData\\Anaconda3\\libs # lib path(s) ; 执行命令(我这里是vs 2010 故为msvc-10.0) `.

kong插件应用

馋奶兔 提交于 2020-10-30 01:33:59
插件概述 插件之于kong,就像Spring中的aop功能。 在请求到达kong之后,转发给后端应用之前,你可以应用kong自带的插件对请求进行处理,合 法认证,限流控制,黑白名单校验,日志采集 等等。同时,你也可以按照kong的教程文档,定制开发属于自己的插件。 kong的插件分为 开源版和社区版 ,社区版还有更多的定制功能,但是社区版是要收费的。 目前,KONG开源版本一共开放28个插件,如下: acl、aws-lambda、basic-auth、bot-detection、correlation-id、cors、datadog、file-log、galileo、hmac-auth、http-log、ip-restriction、jwt、key-auth、ldap-auth、loggly、oauth2、rate-limiting、request-size-limiting、request-termination、request-transformer、response-ratelimiting、response-transformer、runscope、statsd、syslog、tcp-log、udp-log 以上插件,主要分五大类,Authentication认证,Security安全,Traffic Control流量控制,Analytics & Monitoring分析

unittest 单元测试框架

拈花ヽ惹草 提交于 2020-10-30 00:50:52
https://blog.csdn.net/huilan_same/article/details/52944782?locationNum=9   单元测试框架并非只能用于代码级别的测试,对于单元测试框架来讲,主要完成三件事:    提供用例组织与执行: 当你的测试用例只有几条时,可以不必考虑用例的组织,但是,当测试用例达到成百上千条时,大量的测试用例堆砌在一起,就产生了扩展性与维护性等问题,此时需要考虑用例的规范与组织问题了。单元测试框架就是用例解决这个问题的。    提供丰富的比较方法: 不论是功能测试,还是单元测试,在用例执行完成之后都需要将实际结果与预期结果进行比较(断言),从而断定用例是否执行通过。单元测试框架一般会提供丰富的断言方法。例如,判断相等/不等,包含/不包含,True/False 的断言方法等。    提供丰富的日志: 当测试用例执行失效时能抛出清晰的失败原因,当所有用例执行完成后能提供丰富的执行结果。例如,总执行时间、失败用例数、成功用例数等。   一般的单元测试框架都会提供这些功能,从单元测试框架的这些特征来看,它同样适用于web自动化用例的开发与执行。 一、认识 unittest   什么是单元测试?单元测试负责对最小的软件设计单元(模块)进行验证,它使用软件设计文档中对模块的描述作为指南,对重要的程序分支进行测试以发现模块中的错误

pytest

穿精又带淫゛_ 提交于 2020-10-29 21:29:49
1.Pytest介绍 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但更简洁并高效。 官方网站优点简介: 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考 能够支持简单的单元测试和复杂的功能测试 支持参数化 执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败 支持重复执行失败的case 支持运行由nose, unittest编写的测试case 具有很多第三方插件,并且可以自定义扩展 方便的和持续集成工具集成 2. 安装pytest 下面两种安装方式二选一即可。 1 pip install - U pytest 2 easy_install -U pytest 安装完成查看安装的版本,若提示pyttest函数不存在,只需要将python目录下的Scripts目录配置到环境变量中即可解决问题 pytest --version 3. 执行用例 简单执行单个用例 1 # content of test_sample.py 2 3 4 def func(x): 5 return x + 1 6 7 8 def test_func(): 9 assert func(3) == 5 到该模块的目录下,输入pytest(模块的名字与执行函数必须是test开头或_test结尾,否则不会被执行,切记!)

网络编程

二次信任 提交于 2020-10-29 07:12:43
一、软件开发的架构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:QQ、微信、网盘、优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用 这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构~ 软件开发的架构分为C/S架构和B/S架构。 1.C/S架构 C/S即:Client与Server ,中文意思:客户端与服务器端架构,这种架构是从用户层面(也可以是物理层面)来划分的。 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。 2.B/S架构 B/S即:Browser与Server,中文意思:浏览器端与服务器端架构,这种架构是从用户层面来划分的。 Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查。所以B/S架构是一种轻量级的架构,升级维护方便。 小结:在网络编程中的C/S架构在计算机编程中占据着垄断地位。在C/S架构的基础上有了B/S架构,所以B/S架构是C/S架构的一种特殊形式。 二、网络基础 网络是什么?计算机之间是怎么通信的? 在计算机最早期

关于vtt 与 srt 字幕 的相互转换

戏子无情 提交于 2020-10-29 07:09:28
我在下载的udacity中教程时,字幕和视频是分离的,对于英文还无法完全听懂的我来说,字幕还是比较重要.不想看解释的可直接跳到最后复制代码运行即可. 查看了vtt和srt的区别,使用记事本打开vtt和srt,发现主要有两个 首行多了 WEBVTT\n\n 标识符 标点格式区别, vtt内部的 "." 在srt中为 "," 流程图: 基于python写了一个简单的脚本对其进行批量修改 1 引入依赖 os获取文件信息 sys获取命令行输入args re对获取的文件内容进行匹配或更换 import os import sys import re 2 定义主函数  if __name__ == ' __main__ ' : args = sys.argv print (args) if os.path.isdir(args[1 ]): file_list = get_file_name(args[1], " .vtt " ) for file in file_list: vtt2srt(file) elif os.path.isfile(args[1 ]): vtt2srt(args[ 1 ]) else : print ( " arg[0] should be file name or dir " ) 3 定义获取文件名称函数get_file_name def get_file_name

非常实用的 30 个 Python 技巧,赶紧来收藏!!!

最后都变了- 提交于 2020-10-29 07:02:10
关注→ 逆锋起笔← 回复 赚钱 ☞ 程序员进阶必备资源免费送「各种技术! 」 ☜ 作者 | Fatos Morina 来源 | 机器之心 参与 | 思源 Python 是机器学习最广泛采用的编程语言,它最重要的优势在于编程的易用性。如果读者对基本的 Python 语法已经有一些了解,那么这篇文章可能会给你一些启发。作者简单概览了 30 段代码,它们都是平常非常实用的技巧,我们只要花几分钟就能从头到尾浏览一遍。 在原版本基础上,我修复了第12个任务的代码,大家如果发现有其他问题,欢迎留言。 1. 重复元素判定 以下方法可以检查给定列表是不是存在重复元素,它会使用 set() 函数来移除所有重复元素。 def all_unique(lst): return len(lst) == len(set(lst)) x = [1,1,2,2,3,2,3,4,5,6] y = [1,2,3,4,5] all_unique(x) # False all_unique(y) # True 2. 字符元素组成判定 检查两个字符串的组成元素是不是一样的。 from collections import Counter def anagram(first, second) : return Counter(first) == Counter(second) anagram( "abcd3" ,

超全的疫情大屏展示

拜拜、爱过 提交于 2020-10-29 05:27:42
https://zhuanlan.zhihu.com/p/106724590 2020 的开头实在是太烂了,新冠肺炎肆虐神州大地,这场突如其来的灾难影响实在是太大了,全国人民在齐心协力共度难关的同时,也无时无刻不在期盼疫情快点过去。当然我们在隔离办公的同时,每天也都关注着疫情的发展,盼望着“拐点”快点来临,毕竟大家都盼望着外面的新鲜空气呢! 这里我制作了一个疫情展示的页面,也为这次疫情贡献一份力量。 数据获取 我这里使用的数据是天行数据提供的免费接口以及网易的实时数据接口 天行数据的两个接口 > HTTP请求GET/POST接口测试工具 - 天行数据TianAPI 和 > HTTP请求GET/POST接口测试工具 - 天行数据TianAPI 以及网易提供的实时数据接口 > https:// c.m.163.com/ug/api/wuha n/app/index/feiyan-data-list 为了不多次的访问网络接口,我从这三个接口中获取到数据后,都保存到了本地的 redis 中,这样只需要每隔一段时间访问上面的三个接口即可,其余 web 页面的请求都从 redis 中获取。 以网易接口为例 def get_trend_data (): headers = { 'user-agent' : '' , 'accept' : '' } url = 'https://c.m.163