首页
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
Search
1
职教云小助手重构更新,职教云助手最新版下载地址【已和谐】
14,229 阅读
2
职教云-智慧职教,网课观看分析(秒刷网课)
11,462 阅读
3
gradle-5.4.1-all.zip下载
9,505 阅读
4
职教云-智慧职教,签到补签分析(逆天改命系列)
8,199 阅读
5
一个优秀的程序员从写文档开始:免费领14个月语雀云笔记会员
7,015 阅读
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
登录
/
注册
Search
Lan
累计撰写
617
篇文章
累计收到
629
条评论
首页
栏目
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
页面
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
搜索到
143
篇与
的结果
2020-06-24
60行代码GitHub项目多线程批量下载爬虫
输入关键词及页数,然后开启多线程下载,保存到代码目录下的gitdown,文件命名为项目名# -*- coding: utf-8 -*- """ ------------------------------------------------- @ Author :Lan @ Blog :www.lanol.cn @ Date : 2020/6/24 @ Description:GitHub搜索关键词批量下载 ------------------------------------------------- """ import os import threading from parsel import Selector from requests import get # 基础URL,因为后面有很多重复的,所以到时候就直接拼接 baseurl = 'https://github.com' # 请求头,用来反反爬 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36', } # 获取项目链接 def get_url(p, q): # 拼接URL,这里是搜索的URL # p是页码,q是关键词 url = f'{baseurl}/search?p={p}&q={q}&type=Repositories' # 获取搜索结果的html源码,并保存为text给response response = get(url=url, headers=headers).text # 将response转成可以进行Xpath的东西 response = Selector(response) # 列表生成式:因为url有很多个,所以直接这样子就可以自动加到一个列表 result_urls = [neal for neal in response.xpath("//div[@class='f4 text-normal']/a[@class='v-align-middle']/@href").extract()] # 返回结果URL return result_urls # 开启下载 def down(url, name): # 判断文件夹是否存在,如果不存在则创建 if not os.path.exists('gitdown'): os.makedirs('gitdown') # 输出目前进度 print(f'正在下载{name}') # 打开这个文件,为写入字节(wb)的方式 with open(f'gitdown/{name[:10]}.zip', 'wb') as f: # 写入获取到的content f.write(get(url=url, headers=headers).content) # 输出目前进度 print(f'下载{name}结束') # 获取下载链接,并多线程下载 def get_downurl(urls): # 因为GitHub有一个规律就是下载链接都是项目名然后放到https://github.com/{项目名}/archive/master.zip,然后就传给下载的def开启线程下载 for index, i in enumerate(urls): i = threading.Thread(target=down, args=(f'{baseurl}/{i}/archive/master.zip', i.replace('/', '-')[1:])) i.start() if __name__ == '__main__': # 获取用户需求数据 keyword = input("请输入要下载的关键词: >>>") nums = input("请输入要下载的页数: >>>") # 循环调用获取url for i in range(int(nums)): # 传入关键字和页码 urls = get_url(i, keyword) get_downurl(urls)
2020年06月24日
1,214 阅读
1 评论
0 点赞
2020-06-23
Centos后台挂机Python脚本
需要用到setsid指令用法:#setsid python xxx.py然后可以输入查看所有进程#ps -aux然后可以根据PID结束进程:# kill -pid 注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。
2020年06月23日
907 阅读
0 评论
0 点赞
2020-06-22
使用Python遍历修改Excel单元格的值
这次的任务要求是这样的为了这位老哥的学习,于是就用Python帮了一把,一共300多题,要是一个个来还不得累死。于是在线学习了一下Python操作Excel,需要用到一个模块openpyxl源文件图:成品图:代码:# -*- coding: utf-8 -*- """ ------------------------------------------------- @ Author :Lan @ Blog :www.lanol.cn @ Date : 2020/6/21 @ Description:I'm in charge of my Code ------------------------------------------------- """ import re import openpyxl class QueClear: def __init__(self, file): self.file = file self.wb = openpyxl.load_workbook(self.file) self.sheet = self.wb.sheetnames[0] self.ws = self.wb[self.sheet] # 获取总行数 def getRowsClosNums(self): rows = self.ws.max_row columns = self.ws.max_column return rows, columns # 获取指定单元格的值 def getCellValue(self, row, column): cellvalue = self.ws.cell(row=row, column=column).value return cellvalue # 修改指定单元格值 def setCelValue(self, a, b, cellvalue): self.ws.cell(row=a, column=b, value=cellvalue) if __name__ == '__main__': # 实例化对象,打开文件 mytest = QueClear('errors.xlsx') # 获取总行数 rows = mytest.getRowsClosNums() # 遍历操作 for row in range(2, rows[0]): # 获取正确选项 Answer = mytest.getCellValue(row, 4) # 获取所有选项 Selects = mytest.getCellValue(row, 5) # 在答案选项中匹配正确答案 result = Answer + ':' + re.findall(f'[{Answer}]:(.*?);', Selects)[0] # 设置值 mytest.setCelValue(row, 4, result) # 输出替换的结果,以表示程序没卡死 print(result) # 保存操作结果 mytest.wb.save(mytest.file)
2020年06月22日
2,047 阅读
0 评论
0 点赞
2020-06-21
Lan的Python爬虫虚拟环境模块清单
刚刚在给服务器装python环境,然后打包了一份自己Python爬虫环境下的requirements清单。分享出来顺便备份一下。模块似乎挺多的,很多模块我也不知道啥时候装的,不过问题不大,爬虫这块应该全了至于怎么使用可以看我的这篇文章:自动生成和安装requirements.txt依赖requirements.txt大小:2kb已经过安全软件检测无毒,请您放心下载。
2020年06月21日
699 阅读
0 评论
0 点赞
2020-06-21
文字转语音保存为Mp3格式,接口:百度翻译
调用的是百度翻译的接口,成品会生成到软件目录,文件名为文字的前10个字。# -*- coding: utf-8 -*- """ ------------------------------------------------- @ Author :Lan @ Blog :www.lanol.cn @ Date : 2020/6/21 @ Description:I'm in charge of my Code ------------------------------------------------- """ import requests word = input("请输入要转换的文字:") speed = input("请输入语音的速度:") url = f'https://fanyi.baidu.com/gettts?lan=zh&text={word}&spd={speed}&source=web' result = requests.get(url).content with open(f'{word[:10]}.mp3', 'wb') as f: f.write(result) input(f"【{word}】语音成品已生成在软件根目录")
2020年06月21日
1,065 阅读
0 评论
0 点赞
2020-06-20
Python的基本骚操作(长期更新)
最近在网上看到一些Python的一些基本但是非常实用的操作。元素相关多赋值:a = b = c = 'www.lanol.cn' print('a的值:'+a) print('b的值:'+b) print('c的值:'+c)交换元素的值:a = "我是a的值" b = "我是b的值" a,b = b,a print('a:'+a) print('b:'+b)元素自操作:a = 5 a +=1 #自加1 a -=1 #自减1 a /=2 #自除2 a *=2 #自乘2 a **=2 #自己的2次方 print(a)使用三元操作符赋值:三元操作符是 if-else 语句也就是条件操作符的一个快捷方式:[表达式为真的返回值] if [表达式] else [表达式为假的返回值]这里给出几个你可以用来使代码紧凑简洁的例子。下面的语句是说“如果 y 是 9,给 x 赋值 10,不然赋值为 20”。如果需要的话我们也可以延长这条操作链。x = 10 if (y == 9) else 20同样地,我们可以对类做这种操作:x = (classA if y == 1 else classB)(param1, param2)在上面的例子里 classA 与 classB 是两个类,其中一个类的构造函数会被调用.下面是另一个多个条件表达式链接起来用以计算最小值的例子:In [10]: def small(a,b,c): ...: return a if a<=b and a<=c else ( b if b<=a and b<=c else c) ...: In [11]: small(1,0,1) Out[11]: 0 In [12]: small(1,2,3) Out[12]: 1我们甚至可以在列表推导中使用三元运算符: In [14]: [ m**2 if m > 10 else m**4 for m in range(20) ] Out[14]: [0,1,16,81,256,625,1296,2401,4096,6561,10000,121,144,169,196,225,256,289,324,61]列表相关判断列表是否为空:def test1(): arr1 = [1, 2, 3, 4, 5] arr2 = [] # 不推荐 if len(arr1)!=0: print("arr1 is not empty-len!") if len(arr2)!=0: print("arr2 is not empty-len!") # 推荐 if arr1: print("arr1 is not empty!") if arr2: print("arr2 is not empty!")遍历列表,获取索引下标:def test3(): l1 = [11, 22, 30, 41, 51] # 不推荐 for i in xrange(0, 5): print("%s->%s" %(i, l1[i])) # 推荐 for i, v in enumerate(l1): print("%s->%s" % (i, v))字典列表生成式:def test5(): dict1 = {1: "val1", 2: "val2", 3: "val3", 5: "val5"} dict2 = {k*2: v for k, v in dict1.items()} print(dict2)其他相关
2020年06月20日
1,492 阅读
0 评论
0 点赞
2020-06-19
易班易瞄瞄指定话题用户动态自动爬取并保存
因为最近有需要统计易瞄瞄指定话题下的用户发表的动态内容,还需要统计点赞数,发表时间等信息,因此随手写了一个小脚本,这个呢就不写教程了,直接放代码和效果图,需要自己手动获取易班的login_token,抓客户端包即可,或者浏览器F12,以前也写过易班登录JS。修改topicid既可切换话题import re import time import requests print('正在获取秘钥!') info = input("请输入Token") url = f'https://ymm.yiban.cn/news/list/news?loginToken={info}&page=1&size=100&topicId=2' res = requests.get(url=url).json() if res['message'] == "操作成功" and info['version'] == "暂无": data = res['data']['list'] print('正在下载数据!') with open('易喵喵点赞数量.csv', 'w', encoding='utf8') as f: f.write('用户id,学号,用户名,文字内容,11点,赞数,发布时间 ') print("正在写入数据!") for i in data: title = i['title'].replace(' ', '').replace(',', ',') likenum = i['likeNum'] time_local = time.localtime(int(i['createTime'])) date = time.strftime("%Y-%m-%d %H:%M:%S", time_local) riqi = time.strftime('%H', time_local) if int(riqi) > 11: riqi = "11点前" else: riqi = "11点后" xuehao = re.findall('([2][0][1][1-9]d*)', title) if xuehao: xuehao = xuehao[0] userid = i['origin']['User_id'] usernick = i['origin']['usernick'].replace(',', ',') f.write(f'{userid},{xuehao},{usernick},{title},{riqi},{likenum},{date} ') print(f'{userid},{xuehao},{usernick},{title},{riqi},{likenum},{date}') print("作者:Lan,www.lanol.cn") input("结果已生成在软件目录下") else: input("获取失败,请联系Lan")
2020年06月19日
2,805 阅读
0 评论
0 点赞
1
...
11
12
13
...
21