首页
搜索
python
爬虫
golang
工具
前端
软件
登录
搜索
李大叔
累计撰写
60
篇文章
累计收到
10
条评论
首页
栏目
python
爬虫
golang
工具
前端
软件
页面
首页
2022-12-17
互联网年终总结框架,模板参考
年终总结一、工作业绩主要目标:今年下半年完成报关系统所有模块的开发和上线结果:舱单模块功能上线、车辆捆绑功能上线、报关单模块开发完成、客户端上线、海关系统对接。报关系统香港关务没完成,报关单模块没上线,香港业务对接不顺利子目标:完成所有司机车辆自主捆绑提高报关部门工作效率解决场所车辆拥堵结果:完成小部分司机自主捆绑报关部门工作效率提升一部分车辆进场有序规范二、工作内容1、节省公司车辆配额资源开发软件程序,通过程序操作减少人工操作,大大增加车辆配额,解决公司配额紧缺问题2,解决公司场地车辆拥堵开发场所预约小程序,通过预约方式减少车辆拥堵情况,方便工作人员作业。3,提高舱单申报和车辆捆绑效率开发报关系统,减少工作人员重复工作,方便司机自主捆绑。三、亮点与不足亮点:为公司开发程序减少重复工作,提高工作效率为公司开发程序减少人力资源,节省成本不足:工作分类较多,工作效率较低,要制定一个执行计划。没有记录的习惯,要养成一个写笔记的习惯没有很好的闭环思维,要贯通整个业务链看问题四、工作规划继续完善报关系统功能模块做一个完全对外开发的物流平台,完成规划-启动-测试-上线-运营节点。
2022年-12月-17日
371 阅读
0 评论
经验
2022-12-15
微信小程序隐私指引通用模板设置参考,微信小程序用户隐私保护指引设置模板
内容仅供参考为了分辨用户,开发者将在获取你的明示同意后,收集你的微信昵称、头像。为了显示距离,开发者将在获取你的明示同意后,收集你的位置信息。开发者收集你的地址,用于获取位置信息。开发者收集你的发票信息,用于维护消费功能。为了用户互动=,开发者将在获取你的明示同意后,收集你的微信运动步数。为了通过语音与其他用户交流互动,开发者将在获取你的明示同意后,访问你的麦克风。开发者收集你选中的照片或视频信息,用于提前上传减少上传时间。为了上传图片或者视频,开发者将在获取你的明示同意后,访问你的摄像头。为了登录或者注册,开发者将在获取你的明示同意后,收集你的手机号。开发者使用你的通讯录(仅写入)权限,用于方便用户联系信息。开发者收集你的设备信息,用于保障你正常使用网络服务。开发者收集你的身份证号码,用于实名认证后才能继续使用的相关网络服务。开发者收集你的订单信息,用于方便获取订单信息。开发者收集你的发布内容,用于用户互动。开发者收集你的所关注账号,用于用户互动。开发者收集你的操作日志,用于运营维护。为了保存图片或者上传图片,开发者将在获取你的明示同意后,使用你的相册(仅写入)权限。为了用户互动,开发者将在获取你的明示同意后,收集你的车牌号。开发者访问你的蓝牙,用于设备连接。开发者使用你的日历(仅写入)权限,用于用户日历日程提醒。开发者收集你的邮箱,用于在必要时和用户联系。开发者收集你选中的文件,用于提前上传减少上传时间。
2022年-12月-15日
120 阅读
0 评论
运营
2022-12-13
pymongo简单使用 python
pymongo 版本要跟安装的mongo要对应上,要不会报错3.X要对应3.X4.X对应4.X建立连接,指定数据库、集合import pymongoclient = pymongo.MongoClient(host='localhost',port=27017)#client = pymongo.MongoClient('mongodb://localhost:27017/')db = client.test#db = client['test']collection = db.player#collection = db['player']增: insert_one(), insert_many() 旧的insert已废除,不要用了player1 = {'name':'Harden','team':'Rockets','feature':'beard'}player2 = {'name':'Durant','team':'Warriors','feature':'farm-worker'}player3 = {'name':'James','team':'Lakers','feature':'King'}player_list = [player1,player2,player3]collection.insert_one(player1)collection.insert_many(player_list)查: find_one(), find(),需要注意的是 find_one返回的是一个结果,而 find() 返回的是一个生成器,要通过遍历才能得到结果print(collection.find_one({'name':'James'}))删: delete_one()是删除第一个符合条件的数据,delete_many()是删除所有符合条件的数据for i in player_list: collection.delete_one(i)可嵌套正则,查找名字开头不是D的球员,并按球队(字母顺序)排序for i in collection.find({'name':{'$regex':'^[^D]'}}).sort('team'): print(i)改: update_one(), update_many(); 第一个参数是条件,第二个参数是修改内容,必须以 $ 类型操作符作为键名collection.update_one({'name':'Harden'},{'$set':{'name':'James Harden'}})collection.update_one({'name':'Paul'},{'$set':{'name':'Chris Paul'}},upsert = True)upsert 参数默认为 False,意为不增加,如果满足第一个参数(条件)的文档不存在,而 upsert = True, 则直接添加这个文档(document), 即多增加一条记录聪明的同学肯定想到了,我们能否用 update_one 来取代 insert_one 以避免重复值的插入呢?没错,答案是可以的。用 insert_one的话,即使是重复的数据也会插入,一共产生4个文档```pythonplayer1 = {'name':'Harden','team':'Rockets','feature':'beard'}player2 = {'name':'Durant','team':'Warriors','feature':'farm-worker'}player3 = {'name':'James','team':'Lakers','feature':'King'}player4 = {'name':'Harden','team':'Rockets','feature':'beard'}player_list = [player1,player2,player3,player4]for i in player_list: collection.insert_one(i)print(collection.find().count()) #4而用 update_one 只产生3个文档player_list = [player1,player2,player3,player4]for i in player_list: collection.update_one(i,{'$set':i},upsert=True)print(collection.find().count()) #3
2022年-12月-13日
443 阅读
0 评论
python
2022-12-12
python文件.py打包成exe格式,windows直接运行
使用pyinstaller将python文件打包成exe程序安装pyinstaller,安装指令:pip install pyinstaller切换到打包程序目录例:需要打包程序目录为:D:\automation\autotest_tool\interface_param_change_tool切换指令:cd D:\automation\autotest_tool\interface_param_change_tool2,打包文件,pyinstaller -F xxx.py(xxx.py,打包的文件)例,打包文件为:runer.py3,到打包文件目录查看打包好的程序,并执行(1)打包成功后项目中新增dist文件,文件在dist里面命令语法:pyinstaller -F 文件名(带后缀py)常用参数说明:–icon=图标路径-F 打包成一个exe文件-w 使用窗口,无控制台-c 使用控制台,无窗口-D 创建一个目录,里面包含exe以及其他一些依赖性文件pyinstaller -h 来查看参数将cmd的目录切换至(命令:cd 文件路径(注意空格))需要打包的py文件目录下:有命令窗口弹出pyinstaller -F shjys_rjjqk.py 无命令窗口弹出pyinstaller -F -w shjys_rjjqk.py 或者pyinstaller -F shjys_rjjqk.py --noconsole生成exe(带参数)py中获取外界参数:方法1:args 是运行前输入参数(不能在exe黑框中输入,可以用cmd窗口执行:shrjj.py 20180119);方法2:input是运行时输入参数(可以在exe黑框中输入);建议用input获取;补充:方法一中的args参数(运行前输入参数)打包成exe,利用bat批处理来调用,传递参数;
2022年-12月-12日
417 阅读
0 评论
python
2022-12-9
Python对列表中的字典排序 sort方法 匿名函数
列表排序列表排序还是比较简单,利用python内置方法,可以直接调用sort()或者使用sort(reverse=True)方法就行#列表排序my_list1=[10,2,30,4,60,80,15,21]#升序my_list1.sort()print(my_list1)#降序 降序与升序的不同的时 需要加参数 reverse=Truemy_list1.sort(reverse=True)print(my_list1)列表中的字典排序列表的排序,默认是对列表中的数据进行对比大小的,可以对数字类型和字符串进行对比大小,但是对于字典来说,就是不知道该怎么比大小,可以利用sort的方法# 我们需要使用匿名函数,使用sort函数中的key这个参数,来指定字典比大小的方法 升序user_list.sort(key=lambda x:x['age'],reverse=True)# 我们需要使用匿名函数,使用sort函数中的key这个参数,来指定字典比大小的方法 倒序 user_list.sort(key=lambda x:x['age'],reverse=False)
2022年-12月-9日
601 阅读
0 评论
python
2022-12-7
百度收录如何API提交-百度如何收录新站 python api
百度收录分为快速收录和普通收录,快速收录只对部分优质站点开放,所以对于大多数人只能用普通收录。普通收录方法有三种:API提交、sitemap、手动提交tips:如何统计自己的网站有哪些页面?百度sitemap在线生成:http://tools.bugscaner.com/sitemapspider ,输入自己的域名即可生成所有页面链接1、API提交(蜘蛛访问最快)使用说明1、普通收录工具可以向百度搜索主动推送资源,缩短爬虫发现网站链接的时间,不保证收录和展现效果。2、API提交和手动提交共享配额,每日至多提交10万条有价值的内容,sitemap提交配额不与其他方式共享,具体配额以站点页面显示数据为准 。配额不可累计,当日有效。3、若链接存在跳转关系,请直接提交跳转后链接。如网站换域名,需提交新域名资源;进行HTTPS改造页面,请提交HTTPS资源。调用地址:http://data.zz.baidu.com/urls?site=https://www.xx.com&token=xxsite:在搜索资源平台验证的站点,如www.example.comtoken:在搜索资源平台申请的推送用的准入密钥API提交Python代码import requestsimport redef push_urls(url, urls): '''根据百度站长提供的API推送链接''' headers = { 'User-Agent': 'curl/7.12.1', 'Host': 'data.zz.baidu.com', 'Content - Type': 'text / plain', 'Content - Length': '83' } try: html = requests.post(url, headers=headers, data=urls, timeout=5).text return html except: return "{'error':404,'message':'请求超时,接口地址错误!'}"def get_urls(url): '''提取网站sitemap中所有链接,参数必须是sitemap的链接''' try: html = requests.get(url,timeout=5).text except: return 'miss' else: urls = re.findall('<loc>(.*?)</loc>', html) return '\n'.join(urls)2、sitemap百度sitemap在线生成:http://tools.bugscaner.com/sitemapspider ,输入自己的域名生成sitemap文件放在网页根目录,提交到百度收录即可。3、手动提交百度sitemap在线生成:http://tools.bugscaner.com/sitemapspider ,输入自己的域名生成html页面,提交所有页面即可。
2022年-12月-7日
5451 阅读
0 评论
python
2022-12-6
html 鼠标和界面特效整理,L2Dwidget
跟随鼠标移动的线条:<script> !function(){ function n(n,e,t){ return n.getAttribute(e)||t } function e(n){ return document.getElementsByTagName(n) } function t(){ var t=e("script"),o=t.length,i=t[o-1]; return{ l:o,z:n(i,"zIndex",-1),o:n(i,"opacity",.5),c:n(i,"color","0,0,0"),n:n(i,"count",99) } } function o(){ a=m.width=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth, c=m.height=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight } function i(){ r.clearRect(0,0,a,c); var n,e,t,o,m,l; s.forEach(function(i,x){ for(i.x+=i.xa,i.y+=i.ya,i.xa*=i.x>a||i.x<0?-1:1,i.ya*=i.y>c||i.y<0?-1:1,r.fillRect(i.x-.5,i.y-.5,1,1),e=x+1;e<u.length;e++)n=u[e], null!==n.x&&null!==n.y&&(o=i.x-n.x,m=i.y-n.y, l=o*o+m*m,l<n.max&&(n===y&&l>=n.max/2&&(i.x-=.03*o,i.y-=.03*m), t=(n.max-l)/n.max,r.beginPath(),r.lineWidth=t/2,r.strokeStyle="rgba("+d.c+","+(t+.2)+")",r.moveTo(i.x,i.y),r.lineTo(n.x,n.y),r.stroke())) }),x(i) } var a,c,u,m=document.createElement("canvas"), d=t(),l="c_n"+d.l,r=m.getContext("2d"), x=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame|| function(n){ window.setTimeout(n,1e3/45) }, w=Math.random,y={x:null,y:null,max:2e4};m.id=l,m.style.cssText="position:fixed;top:0;left:0;z-index:"+d.z+";opacity:"+d.o,e("body")[0].appendChild(m),o(),window.onresize=o, window.onmousemove=function(n){ n=n||window.event,y.x=n.clientX,y.y=n.clientY }, window.onmouseout=function(){ y.x=null,y.y=null }; for(var s=[],f=0;d.n>f;f++){ var h=w()*a,g=w()*c,v=2*w()-1,p=2*w()-1;s.push({x:h,y:g,xa:v,ya:p,max:6e3}) } u=s.concat([y]),setTimeout(function(){i()},100) }();</script>鼠标点击特效:<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script><script>var a_idx = 0;jQuery(document).ready(function($) {$("body").click(function(e) {var a = new Array("富强", "民主", "文明", "和谐", "自由", "平等", "公正" ,"法治", "爱国", "敬业", "诚信", "友善");var $i = $("<span/>").text(a[a_idx]); a_idx = (a_idx + 1) % a.length;var x = e.pageX,y = e.pageY;$i.css({"z-index": 100000000,"top": y - 20,"left": x,"position": "absolute","font-weight": "bold","color": "#ff6651"});$("body").append($i);$i.animate({"top": y - 180,"opacity": 0},1500,function() {$i.remove();});});});</script>
2022年-12月-6日
422 阅读
0 评论
前端
2022-12-6
页面添加动态小人,二次元人物 hexo live2d html人物公仔
直接上代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <!-- L2Dwidget.js L2D网页动画人物 --> <script src="https://eqcn.ajz.miesnfu.com/wp-content/plugins/wp-3d-pony/live2dw/lib/L2Dwidget.min.js"></script> <script> L2Dwidget.init({ "model": { "jsonPath":"https://unpkg.com/live2d-widget-model-shizuku@1.0.5/assets/shizuku.model.json", "scale": 1, "hHeadPos":0.5, "vHeadPos":0.618 }, "display": { "position": "right", "width": 400, "height": 400, "hOffset": 0, "vOffset": 0 }, "mobile": { "show": true, "scale": 0.5 }, "react": { "opacityDefault": 0.7, "opacityOnHover": 0.2 } }); </script> <!-- 其他可选的模型: 小帅哥: https://unpkg.com/live2d-widget-model-chitose@1.0.5/assets/chitose.model.json 萌娘:https://unpkg.com/live2d-widget-model-shizuku@1.0.5/assets/shizuku.model.json 白猫:https://unpkg.com/live2d-widget-model-tororo@1.0.5/assets/tororo.model.json 黑猫: https://unpkg.com/live2d-widget-model-hijiki@1.0.5/assets/hijiki.model.json 小可爱(女):https://unpkg.com/live2d-widget-model-koharu@1.0.5/assets/koharu.model.json 小可爱(男):https://unpkg.com/live2d-widget-model-haruto@1.0.5/assets/haruto.model.json 初音:https://unpkg.com/live2d-widget-model-miku@1.0.5/assets/miku.model.json 圣职者妹妹:https://unpkg.com/live2d-widget-model-z16@1.0.5/assets/z16.model.json 茶杯犬:https://cdn.jsdelivr.net/npm/live2d-widget-model-wanko@1.0.5/assets/wanko.model.json 绿毛妹妹:https://unpkg.com/live2d-widget-model-tsumiki@1.0.5/assets/tsumiki.model.json 金龟子妹妹:https://unpkg.com/live2d-widget-model-unitychan@1.0.5/assets/unitychan.model.json https://unpkg.com/live2d-widget-model-nito@1.0.5/assets/nito.model.json https://unpkg.com/live2d-widget-model-ni-j@1.0.5/assets/ni-j.model.json 小阿狸: https://unpkg.com/live2d-widget-model-nico@1.0.5/assets/nico.model.json https://unpkg.com/live2d-widget-model-nietzche@1.0.5/assets/nietzche.model.json https://unpkg.com/live2d-widget-model-nipsilon@1.0.5/assets/nipsilon.model.json 女学生: https://unpkg.com/live2d-widget-model-hibiki@1.0.5/assets/hibiki.model.json --></head><body></body></html>
2022年-12月-6日
831 阅读
0 评论
前端
2022-12-6
python精准概率很高的验证码识别的库,不用训练
基本使用,验证码识别率高 import ddddocr from PIL import Image # 打开保存下来的图片 im1 = Image.open("./img/code.png") # 为了使图片的识别率更高,可以处理一下图片 imRGBA = im1.convert("RGBA") imL = imRGBA.convert("L") imL.save("1.png") ocr = ddddocr.DdddOcr() with open('./img/code.png', 'rb') as f: img_bytes = f.read() text = ocr.classification(img_bytes) print(text) return text
2022年-12月-6日
317 阅读
0 评论
python
2022-12-6
playwright自动化浏览器 python 比selenium更稳定,更方便 微软出品
比其他的自动化框架稳定,支持异步,谷歌的那个pyppterr已经不维护,也没有官方版本先下载pip install playwright基本使用(异步版本)单一窗口六联单号自动化查询from playwright.async_api import async_playwright async def run(self,order): async with async_playwright() as pw: webkit = await pw.chromium.launch(headless=False) context = await webkit.new_context() # 需要创建一个 context page = await context.new_page() # 创建一个新的页面 await page.goto("http://query.customs.gov.cn/mnftq/MRoadQuery.aspx")#打开页面的链接 await asyncio.sleep(1)#打开页面的链接 await page.locator("#MRoadQueryCtrl1_txtManifestID").fill(order)#输入内容 await page.locator('//img[@id="MRoadQueryCtrl1_imgCode"]').screenshot(path="./img/code.png")#验证码识别 await asyncio.sleep(1) text=await self.img() print(text) await asyncio.sleep(1) await page.locator("#MRoadQueryCtrl1_txtCode").fill(text)#输入验证码 await asyncio.sleep(4) #登录 await page.click('#MRoadQueryCtrl1_btQuery') await asyncio.sleep(1) content=await page.content()#打印页面内容 html=etree.HTML(content) tr=html.xpath('//tr[@style!="color:White;background-color:#5D7B9D;font-weight:bold;"]') for td in tr: content=td.xpath('./td/text()') if content: print(content) if content[10]=='已放行': date=content[5].replace('/','-') # print(page.content()) await webkit.close()
2022年-12月-6日
564 阅读
0 评论
python
3
4
5
6