![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
文章平均质量分 65
笑笑布丁
个人博客:https://madpudding.github.io/
展开
-
重新认识元组
元组也就是python里的tuple,我相信很多人和我一样,就是在刚开始学习python的时候,仅仅只是把元组当作一个不可变列表,一个不可改变的列表,牺牲了自由度,在很多的场景中并不适用,故而一般很少用到元组。原创 2024-04-10 17:47:26 · 404 阅读 · 0 评论 -
Python异步编程小解一
从Python3.5开始,python3开始支持异步编程.在python中我们会用到asyncio包来进行异步编程.从asyncio这个报名可以得知,在python中我们进行异步编程时,我们是围绕IO网络性能进行,而不是CPU操作体验地道、现代的python异步编程,我建议python版本应该>=python3.10我们主要使用异步生成的方式来进行异步编程,即async def,在方法里面使用 yield 的生成器函数。返回一个提供__anext__ 方法(获取下一项)的异步生成器对象。原创 2023-10-27 15:53:37 · 244 阅读 · 0 评论 -
Python使用openpyxl读取excel图片
Python读取excel中图片原创 2023-10-18 17:18:54 · 1296 阅读 · 0 评论 -
【Python爬虫 js渲染思路一】
按照上面的思路,我们应该仿照正确翻页API构造正确的api url,但在这之前,我们应该先请求js的url,拿到key之后,把key加到请求头中请求API。该网站在请求加了两个额外参数,很显然,如果不在请求的时候加上这两个参数,你永远得不到正确的数据。那么这两个参数要怎么得到呢?搜索后你发现,咦,原来某些js文件有该。好家伙,居然一个字都没改,真是妙哉。原创 2023-10-11 15:18:20 · 667 阅读 · 0 评论 -
【gitlab CI:shell not found】
摸索一番之后觉得问题可能出在python版本上,以下是gitlab-runner config.toml设置。gitlab-runner在pull的时候,应该是拉了。,最新的镜像应该是兼容性的问题,知道问题出在哪就好办了。原创 2023-07-13 14:15:52 · 1791 阅读 · 0 评论 -
GitHub Actions 入门断奶教程
python github actions 保姆级教程原创 2022-05-17 15:26:51 · 699 阅读 · 0 评论 -
Chrome 无头模式下载文件
环境版本chrome 版本: 76selenium 4.1.3解决办法def enable_download_headless(browser, download_dir): browser.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command') params = {'cmd': 'Page.setDownloadBeh原创 2022-05-10 18:13:33 · 1108 阅读 · 0 评论 -
Ubuntu Server 升级python的openssl版本
升级python的openssl版本升级原因1、机器信息Ubuntu16 Server2、升级openssl下载openssl解压安装删除旧软连接新建软件连接查看信息出现错误:openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory解决办法:3、升级python版本使用较新的python3.8作为基础版本,安装准备:下载pyth原创 2021-05-13 12:14:41 · 1989 阅读 · 7 评论 -
windows python上传pypi私有库
今天要打包一个模块到公司的私有库,以前没有写过这个教程,今天写一个.前提是你的模块已经能够打包,即在打包过程不出差错.首先进入包cd modulepython setup.py sdist bdist_wheel upload -r local如果你想用twine上传的话:cd modulepython setup.py sdist bdist_wheelpip install twinetwine upload -r local dist/*提示打包bdist_wheel 需要安原创 2021-05-12 12:16:02 · 267 阅读 · 0 评论 -
Cloudflare反爬
Cloudflare反爬Cloudflare反爬实例背景解决途径------盗文章死妈---------.Cloudflare反爬实例很久没有写博文了,今儿个遇到了一个之前没有碰到的情况,目标网站使用了cloudflare进行反爬设置,这里记录一下.背景解决途径# 解决办法 # 首先 pip install cloudscraperimport cloudscraperscraper = cloudscraper.create_scraper() print(scraper.ge原创 2021-04-20 17:44:58 · 3465 阅读 · 1 评论 -
python进阶小技巧 使用默认迭代器与操作符
这种情况一般发生支持默认迭代器和操作符的类型上,比如list、dict或者文件.操作符的解释:in 和 not in使用缘由:默认的操作符和迭代器没有额外方法调用,会比较高效,总觉得在python里面强调高效的感觉怪怪的。而且使用默认操作符的函数是通用的,它可以支持该操作的的任何类型.缺点:你可能没法通过方法名来区分对象类型使用场景:如果类型支持应该优先考虑,只是这样,你在遍历容器时,你不能修改它.eg: for key in a_dict: ... if key not in a原创 2020-12-17 16:28:51 · 147 阅读 · 0 评论 -
python进阶之Python的方法解析顺序
背景,这部分知识主要体现在继承的问题上,当我们使用继承时,这是我们需要考虑的问题,这个在使用super()上尤为重要.值得注意的是,python3和python2在方法的解析顺序是不一样的,python2作为时代的弃儿,我这里就不解释了,这里着重解释python3的方法解析顺序.知识点:Python的方法解析顺序是基于C3,这是为Dylan编程语言(http://opendylan.org)构建的MRO,而python对MRO的解释则出现在:自定义类这种类型一般通过类定义来创建 (参见 类定义 一节)。原创 2020-11-26 18:56:35 · 366 阅读 · 0 评论 -
Flask应用多个App
背景:因为我们现在应用在Flask项目中的数据库ORM应用,是用的peewee,遵循良好的应用,当我们需要引入不同如现有数据库(测试、生产)的数据库时,现有的配置并不好改动.有在Stackoverflow中寻找解决的办法,在这个问题中找到问题的解决的办法,即创建多个App.创建多个App的回答在这里改动前的结构,只有一个App改动之后的结构,出现了两个Appdispatcher的__init__部分代码运行之后,看到的url结构Flask文档关于dispatchermiddleware原创 2020-11-21 17:06:35 · 2725 阅读 · 0 评论 -
Flask MethodView传参
视图路径from flask import Blueprintbp = Blueprint('bp', __name__)bp.add_url_rule( '/get-update-crawler-data/', view_func=View名称.as_view('single_update_crawler_api'),)蓝图注册from app.api import bpself.register_blueprint(bp, url_prefix='/api')视原创 2020-11-18 19:05:28 · 895 阅读 · 0 评论 -
python3 创建虚拟环境
python3 创建虚拟环境创建python3虚拟环境如何创建python3虚拟环境如何使用创建的虚拟环境退出虚拟环境创建python3虚拟环境近期我才了解到,之前使用的创建虚拟环境方法一直是python2的方式,而python3创建虚拟环境与python2已经有很大的不同.如何创建python3虚拟环境Python 3和Python 2解释器创建虚拟环境的方法有所不同。在Python 3中,虚拟环境由Python标准库中的venv包原生支持,下面看看步骤:安装包sudo apt-get in原创 2020-11-15 09:06:03 · 284 阅读 · 0 评论 -
设计爬虫代理池的一点个人设想
这个只是个人的一点思考,因为我的提议被否决了,所以只停留在我个人的设计层面,以下的个人设想针对的是scrapy的框架.众所周知,国内的ip代理池是混淆的,所以不需要考虑自己再混淆一次,二国外的代理池,一般是固定ip,这个旧很要命了,如果是高频次的抓取,是特别容易被封禁的,如果想降低频次的话,一是扩大代理池,二是混淆代理,增加复用率。如何提高复用率呢?针对scrapy框架,个人有一些设想:假如我们有80个代理,我们可以用:random.choice(代理list)通过每次random不同的代理来原创 2020-11-12 18:08:16 · 103 阅读 · 0 评论 -
OpenSSL.SSL.Error: [(‘SSL routines‘, ‘ssl3_get_record‘, ‘wrong version number‘)
这种情况一般发生在使用代理的情况下解决办法将https://asdasd.com 替换为 http://sdadas.com附上stackoverflow链接原创 2020-10-29 18:34:43 · 13478 阅读 · 2 评论 -
python吐槽 一
知道我今天心情有多糟糕吗?就像广州的今天的天气,乌云密布.而给我致命一击的正是前同事写的代码,实在无力吐槽了,日日日.这是一段判断分页的代码,仔细看发现华点了吗?str 做乘法,我真是醉了,希望他人有事....原创 2020-09-15 15:35:36 · 199 阅读 · 0 评论 -
ModuleNotFoundError: No module named ‘kombu.five‘
原因,今天开了新的机器,pip install 了最新的kombu稳定版本(5.0+,最初没有在requirements.txt指定kombu的版本),出现了这个错误,检查了别的服务器上对应的版本是4.6+,所以回退了版本,之后代码正常运行.pip uninstall kombupip install kombu==4.6.10...原创 2020-09-14 18:23:42 · 2006 阅读 · 0 评论 -
This job is stuck, because you don‘t have any active runners that can run this job.
This job is stuck, because you don’t have any active runners that can run this job.前情:提交了job,然后一直在pending,感到很奇怪,打开发现了这个错误,联想到刚刚gitlab替换了域名,应该是gitlab-runner域名出了问题,于是重新配置了gitlab ci的gitlab-runner.可以先移除之前的gitlab runner:gitlab-runner verify --deleteoptions原创 2020-07-13 15:33:03 · 10549 阅读 · 0 评论 -
python面向对象设计系列 -1
好久没写博客了,主要是感情问题,使得我的情绪很低落,很多事情根本提不起兴趣.但我不能一直停留在感情漩涡中,有些事情总会过去,自己也打算从漩涡中走出来,积极拥抱变化.所以我打算写一个python面向对象的系列(我从工作和看别人的示例得到的启发),目前打算是一周更新一篇,先把FLAG 立了. 预计本周五-周六更新这篇文章.### print('Hello, World!')...原创 2020-07-06 12:04:43 · 233 阅读 · 0 评论 -
supervisor部署celery实践
原因想用celery执行一些爬虫的后续操作,不占用爬虫爬取的时间.尝试了不同的方法感觉supervisor最靠谱,这也是celery官方推荐的做法.做法:1 安装 supervisorpip install supervisor2 进入项目文件夹,创建 conf 文件cd projectecho_supervisord_conf> supervisord.conf结果如下所...原创 2020-03-02 16:58:52 · 830 阅读 · 4 评论 -
python3获取linux IP地址
背景:我想知道哪台机器上跑了代码,打算用ip地址作为甄别的依据.代码: def get_ip(if_name): # get machine ip s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) return socket.inet_ntoa(fcntl.ioctl( s.file...原创 2020-02-14 11:53:40 · 1310 阅读 · 0 评论 -
Python scrapy发送邮件
背景:给scrapy加入发送邮件功能,其目的旨在报错预警,这对运维现有爬虫有着很大的积极意义.或者爬虫爬取结束后,发邮件告诉开发者,hi,任务已经完成了.实现:我不纠结于是否使用scrapy自带的发送邮件功能,我的目的只是去实现它,用简单直接的方式.发送邮件功能,我推荐大家使用yagmil来发送邮件,因为简单方便,填入的参数少,只需三个参数,记得开启邮箱的smtp服务.pip install...原创 2020-01-19 11:47:59 · 1091 阅读 · 0 评论 -
scrapinghub 傻瓜教程
部署scrapy到scrapinghub 踩坑详尽记录.1、注册scrapinghub账号,没有scrapinghub账号是无法部署爬虫的.2、创建项目(找到图下按钮):3、再创建完项目之后,scrapinghub会提供API key 以及项目ID:4、拿到API key 和 project id后,来到本地的爬虫项目,先安装scrapinghub的官方包:shub, pip inst...原创 2019-12-05 15:34:03 · 1525 阅读 · 0 评论 -
python leetcode系列之整数反转
题目要求 :给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解题思路:首先要 考虑正负数的情况 ,无论正还是负,先用一个变量来交际状态,然后把整数取绝对值.然后就是进行反转的操作,我想到的是在一个迭代循环里通过整数除法和取余...原创 2019-12-04 16:57:56 · 162 阅读 · 0 评论 -
Python 正则里 re.compile 真的是必需的吗?
背景:我在爬虫处理某个文本时,用到了re.findall(),而不是re.compile。远在新加坡的同事提出了质疑,认为以我的水平,不应该写出这样影响性能的代码,让我优化一下。我提出了反驳:既然使用了Python,就不应该太过考虑性能的问题,如果要考虑性能就使用C语言,而不是Python.他接着说:正是因为python性能不够,所以更应该考虑代码的优化,能做好就应该做到最好.最后,我没有回话,当...原创 2019-12-03 16:54:37 · 1245 阅读 · 2 评论 -
Python 查看虚拟环境安装包地址
背景: 想改虚拟环境的包.方法:1、进入虚拟环境后,pip 安装一个已安装的包,然后系统就会提示你,这个包啊,已经在哪里安装好了.2、虚拟环境的包,一般在/用户/.virtualenvs/环境名/bin/python版本/site-packages 下....原创 2019-11-26 17:21:54 · 4754 阅读 · 4 评论 -
peewee 实现 有则更新,无则插入.
背景:想用peewee实现 mysql数据库 有则更新,无则插入.几番查找,发现在官方文档中有.下图:在本地的数据库测试了,以下是测试语句及结果:表结构class Practice(Model): id = AutoField(primary_key=True) name = CharField(max_length=45) sex = CharField(max_...原创 2019-11-07 15:27:30 · 5367 阅读 · 2 评论 -
dyld: Library not loaded
在mac上跑任务时遇到了这个问题:解决办法:退出当前的虚拟环境,新建一个虚拟环境,pip install -r requirements.txt,再跑,搞定.原创 2019-10-31 11:05:04 · 1271 阅读 · 0 评论 -
Python :=海象运算符最简单的解释
背景:python 3.8正式版最近更新了,其中PEP572中的海象运算符获得正式python版本的支持.我看了官网的文档还有其它大神写的这个东西,我感觉在将来的python语句中是非常实用的一个东西,所以写下这篇博客来介绍、介绍,同时也是自己学习新版特性,尽管我司生产环境还停留在 3.6,但并不影响我尝尝鲜.ps:这是3.8 新特性网址:https://docs.python.org/3/wh...原创 2019-10-22 16:29:26 · 61387 阅读 · 29 评论 -
'pip' is not recognized as an internal or external command
昨天win10更新之后,今天使用pip命令碰到如题的错误,系统突然就不认识pip命令了,google得知,将pip目录(Scripts)放到Path中就可以了,如下(我用的anaconda,用的纯python的话,目录应该Py36/Scripts):stackoverflow链接看这里...原创 2019-10-11 16:11:38 · 9345 阅读 · 0 评论 -
python爬虫之多线程、多进程爬虫
一、原因多线程对爬虫的效率提高是非凡的,当我们使用python的多线程有几点是需要我们知道的:1.Python的多线程并不如java的多线程,其差异在于当python解释器开始执行任务时,受制于GIL(全局解释所),Python 的线程被限制到同一时刻只允许一个程执行这样一个执行模型。2.Python 的线程更适用于处理 I/O 和其他需要并发行的阻塞操作(比如等待 I/O、等待从数据库获取...原创 2019-05-09 17:22:00 · 42524 阅读 · 32 评论 -
python爬虫之 BeautifulSoup修复残损的html文本
原因众所周知,当你使用lxml解析html文本时,它是不能解析残损的html文本的,所以一旦你下载的是残损的文本,它也要么解析不出来,要么parse出错,那怎么解决呢?Beautifulsoup首先 pip install beautifulsoup4, pip install htmllib5 data = requests.get(url=get_url, headers=hea...原创 2019-04-30 15:53:51 · 678 阅读 · 0 评论 -
python爬虫之字体反爬虫
原因今天下午在抓取一个网页时,发现的网页字体反爬,这种情况一句话总结:即网页文本里的数字与网页上显示的字体不一致。为什么会出现这样的情况呢?原因是开发者在网页文本里引入了改变字体的文件。然后可以看到,这是网页文本里的数字:这是网页显示数字:手段并不是太高明,这个动态网页比,难度还是不大的。解决办法如下:在请求完网页下载完网页文本后,找到网页文本里字体的源地址:然后,把它下载下来...原创 2019-04-29 18:42:39 · 1632 阅读 · 4 评论 -
python 翻译爬虫
比较简单的请求爬虫,不过多做介绍,eng代表英文,翻译效果还行吧,能用。代码def translate_content(content): # 翻译 form_data = {} translae_url = "https://fanyi.so.com/index/search" form_data['query'] = content form_da...原创 2019-04-29 11:25:21 · 293 阅读 · 0 评论 -
python 进阶 chapter3 时间复杂度
原因关于代码的时间复杂度,我们可能在 大学里 的计算机基础、 数据结构、 算法导论 等一系列的课程中,学习或接触过。几乎所有计算机系 或 数学计算机系的 都对它们很熟悉,没一门语言都不会逃过时间复杂度,这个说起来算是非常基础的知识点了,那我为什么还要拿到进阶里面来说呢,因为日常中的 刚刚入门的 pythoner或者非科班出身的程序员 很少注意他们编写的程序时间复杂度,掌握好时间复杂度是掌握算法的...原创 2019-04-18 18:10:19 · 276 阅读 · 0 评论 -
facebook-sdk 简介上手
关于facebook-sdk调用facebook 的图谱api,你需要在线请求,或者构造它的ajax去请求,如果你想在python中去访问需要更高级的特殊访问口令,这里只简要的介绍如何上手这一切都建立在您的开发者账号,已经通过了facebook的验证的前提下才能使用,切记from facebook import GraphAPIaccess_token = ' ......' 在这里导入...原创 2019-03-27 11:34:29 · 1507 阅读 · 0 评论 -
Facebook Splash 登录爬虫
背景这个facebook登录的方法是我偶然间发现的,之所以把它公布呢,是因为facebook的爬虫项目公司在看完我做的facebook cookie压力测试后,和预期目标差的有点多,就停止了,以后启用也不会是这个方法了,所以我才会公布出来。关于splash代码是需要splash的,关于splash大家可以去看看别的博主所作的介绍,我在这里就不多描述了,你只要知道它其实是一个js渲染服务就行了...原创 2019-03-26 19:00:27 · 5484 阅读 · 15 评论 -
python 进阶 chapter 2 变量命名
原因为什么我会在进阶里谈到变量命名呢?这是源于我在日常生产活动中的真实感受,才会有这么一期。例如举个再真实不过的例子,某日我接手了同事的一个Django项目,现实情况让我很崩溃,因为一个项目中,ta使用了不同的命名方法,如小驼峰命名、大驼峰命名(帕斯卡)、以及下划线命名,对于一个不熟悉的项目的人,光看变量名说实话就够喝一壶的了。当时,我有点崩溃,改变量就花了我不少时间。好的变量有以下我能想到的...原创 2019-03-26 11:55:52 · 111 阅读 · 0 评论