python
流量猎手
这个作者很懒,什么都没留下…
展开
-
实例方法与类方法
class Test: name = 'leo' age = 12 __sy = '私有' #实例方法:类中定义的方法默认都是实例方法, self参数,代表类对象实例 def fly(self): print(self.__sy) return 2 #类方法:类中定义类方法 , cls 参数,代表类的本身 @classmethod def run(cls): print(cls.age) .原创 2022-01-21 09:46:05 · 296 阅读 · 0 评论 -
connect ECONNREFUSED 127.0.0.1:27017——mongodb连接失败
Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketExceptionmongodb 遇到这种问题基本上都是找不到数据库文件路径先找到你原来数据库文件 F:\MongoDB\Server\4.4\data重新指定 :mongod.exe --dbpath F:\MongoDB\Server\4.4\data大功告成!如无法找到原数数据库位置,只需重新创建data\...原创 2022-01-19 12:09:54 · 8572 阅读 · 7 评论 -
python 循环的导入问题
网上看了一些关于python循环导入的说法,都过于繁琐,这里来个简单的s,b两个模块模拟导入。from day.b import subdef add(aq,bq): return aq+bqsub(4,4)from day.s import adddef sub(z,c): return z + cadd(1,2)报错:ImportError: cannot import name 'sub' from partially initialized m原创 2022-01-04 22:22:51 · 1444 阅读 · 0 评论 -
sanic jinja2 装饰器使用,详解
from functools import wrapsdef outer(name): # wrap 只是一个传参函数 def wrap(func) : #@wraps接受一个函数来进行装饰,并加入了复制函数名称、注释文档、参数列表等等的功能。这可以让我们在装饰器里面访问在装饰之前的函数的属性。 @wraps(func) # inner为装饰器 def inner(*args,**kwargs) : .原创 2021-12-30 21:15:08 · 415 阅读 · 0 评论 -
os.path.dirname,os.path.abspath,os.getcwd区别
import os# 通过 __file__ 属性查找该模块(或包)文件所在的具体存储位置print(__file__)# dirname命令去除文件名中的非目录部分,删除最后一个“\”后面的路径,显示父目录。print(os.path.dirname(__file__))#abspath命令返回绝对路径print(os.path.abspath(__file__))#先返回绝对路径,再返回文件目录print(os.path.dirname(os.path.abspath(__fil.原创 2021-12-27 14:29:48 · 454 阅读 · 0 评论 -
python 装饰器
装饰器指的是定义一个函数,用来为其他函数在不能新代码的情况下添加额外的功能。def outer(func): def inner(*args): print('装饰器前') result = func(*args) print('装饰器后') return result return inner@outerdef add(a, b): print('这里输出') return a + bres =原创 2021-12-18 10:00:43 · 728 阅读 · 0 评论 -
time 时间使用
计算秒 时间差:star_time = time.time()end_time = time.time()(star_time - end_time):.2ftime.strftime('%X') Python time strftime() 函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数 format 决定。...原创 2021-01-20 21:42:41 · 119 阅读 · 0 评论 -
python计算时间差
from datetime import datetimeimport timea = datetime.now() # 获得当前时间time.sleep(2) # sleep 2sb = datetime.now() # 获取当前时间res = (b-a).seconds # 时间差,以秒显示print(res )原创 2021-01-19 16:29:51 · 2487 阅读 · 0 评论 -
获取网站主域名插件,获取url顶级域名方法
import tldextracturl = 'http://www.bddd.net/jd.html'o = tldextract.extract(url)domain = "{}.{}".format(o.domain, o.suffix)print(domain)原创 2021-01-14 10:20:16 · 219 阅读 · 0 评论 -
hashlib md5加密基础使用
from hashlib import md5appversion = "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"res = md5(appversion.encode('utf-8')).hexdigest()print(res)原创 2021-01-13 11:57:05 · 202 阅读 · 0 评论 -
同义词替换,停词去除
# -*- coding: utf-8 -*-# 去重:①同义词去重,停顿词去掉 ②删除特殊符号 ③ 删除重复import refrom typing import Iterableimport timeimport jiebajieba.initialize()jieba.load_userdict('./stopword.txt')tongyici = { '梦见': ['梦到', '做梦'], '怎么': ['怎么样', '如何'], '男孩': ['男.原创 2020-12-25 16:27:15 · 668 阅读 · 0 评论 -
爬虫出现验证码问题解决
下载插件 editthiscookies清楚cookies后会自动生成一个新的URL新的url放入列表重新提交即可原创 2020-12-16 09:33:47 · 713 阅读 · 0 评论 -
pymongo 基本使用规则
# -*- coding: UTF-8 -*-from pymongo import MongoClientclient = MongoClient('localhost', 27017)# 获取数据库集合列表# dbs = client.list_databases()# for db in dbs:# print(db)# 获取数据库下集合名称# db_name = client.list_database_names()#创建或链接数据库,如果数据库不存在则创建# d.原创 2020-12-04 22:41:41 · 215 阅读 · 0 评论 -
XPATH 常用几种方式
# h1 = doc.xpath('//h1/text()') # print(h1) # 获取a标签的href属性 # a_attrs = doc.xpath('//a/attribute::href') # a_texts = doc.xpath('//a/text()') content = doc.xpath('//div[contains(@class, "article-content")]')fn:contains(string1,str...原创 2020-11-26 15:43:13 · 1293 阅读 · 1 评论 -
Py 常用快捷键
Shift + Enter 换行操作原创 2020-11-23 12:01:11 · 248 阅读 · 0 评论 -
pip 安装常用库
安装requestspip isntall -i https://pypi.doubanio.com/simple requests原创 2020-11-19 18:54:27 · 702 阅读 · 0 评论 -
百度 排名 url 解析 获取主域名
import requests,reurl = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=seo&fenlei=256&rsv_pq=aacf525400031001&rsv_t=0ec6V5uBTrsoJ088Lh8%2FoF8%2FdmV0MzP2Ef2OPv7vanGD%2B%2BAdEFSZAsG4Bvg&rqlang=cn&a.原创 2020-11-19 18:45:56 · 1971 阅读 · 0 评论 -
Queue, LifoQueue - 后进先出,PriorityQueue - 优先级队列
# -*- coding: utf-8 -*-from queue import Queue,LifoQueue,PriorityQueueq = Queue(3) # 队列最多容纳三个元素,如果不填写默认容纳无限多q.put('a') #q 队列中放入值q.put('b')q.put('c')print(q.full()) #判断队列是否为满,如果是则返回true# q.put('d') # put 起到阻塞作用,队列中最多放入三个值,当放入第四个阻塞不能继续执行# q.put.原创 2020-11-17 14:44:15 · 305 阅读 · 0 评论 -
Thread 守护线程使用说明
# -*- coding: UTF-8 -*-# 当没有存活的非守护线程,程序才会退出,主线程创建所有的线程默认都是非守护线程。from threading import Threadimport timedef calc(): for x in range(10): print(x) time.sleep(1)if __name__ == '__main__': t = Thread(target = calc) # 如果希望线程随着主线程一起结.原创 2020-11-16 23:57:53 · 281 阅读 · 0 评论 -
multiprocessing import Process,Queue 进程间的通信
# -*- coding: utf-8 -*-from multiprocessing import Process,Queueimport timedef zhuanchang(hc,name,n): #n 代表10箱砖,每箱10000块 while n > 0: print(f'{name}还有{n}车砖要生产') time.sleep(0.5) hc.put([i for i in range(10000)]) .原创 2020-11-14 20:17:54 · 351 阅读 · 0 评论 -
通过对Process的继承,获取页面的标题
#-*- coding: UTF-8 -*-# 通过继承方式获取网站标题from multiprocessing import Processimport requests,reimport logging# 配置日志的等级logging.basicConfig(level=logging.INFO)class Spider(Process): def __init__(self,l): super().__init__() self.title_r.原创 2020-11-13 15:26:23 · 104 阅读 · 0 评论 -
multiprocessing process ,pool 基础使用方法
# -*- coding: UTF-8 -*-from multiprocessing import Process# multiprocessing 基于进程的并行def work(name,job): print(f'{name}喜欢{job}')# 在 multiprocessing 中,通过创建一个 Process 对象然后调用它的 start() 方法来生成进程if __name__ == '__main__': # __name__ 当前主进程 p = Proc.原创 2020-11-11 23:25:47 · 657 阅读 · 1 评论 -
python常见抛出异常
异常名称 描述 ZeroDivisionError 除数为0错误 WindowsError window系统调用失败 ValueError 传入无效的参数 UnicodeTranslateError Unicode转换时错误 UnicodeError Unicode相关错误 UnicodeEncodeError Unicode编码错误 UnicodeDecodeError Unicode解码时错误 TypeError 对类原创 2020-11-10 19:14:19 · 252 阅读 · 0 评论 -
自定义异常抛出错误,自定义异常类
class Myexception(Exception): def __init__(self, *args, **kwargs): passdef add(x,y): # 当未使用类属性或方法时候使用静态函数或放在类的外面 if isinstance(x,int) and isinstance(y,int): return x + y raise Myexception("参数必须是整数")try: t = add(10, 20.0.原创 2020-11-10 19:02:52 · 139 阅读 · 0 评论 -
Python3 抛出错误和异常的方式
name = 'leo'age = 13try: res = age + nameexcept TypeError as e: print('输出错误',e)except (NameError, ValueError, AttributeError,IOError) as e: # 可以对多个异常集中处理 print('输出错误', e)except Exception as e: # Exception 绝大部分异常的基类(父类) print('输出错误'.原创 2020-11-10 16:48:30 · 450 阅读 · 1 评论 -
python 静态函数使用及规则
# -*- coding: utf-8 -*-import requests,reclass Spider: def __init__(self,url): self.url = url def get_code(self): code = requests.get(self.url) code.encoding = 'utf-8' # 手动编辑代码格式 html = code.text print(.原创 2020-11-09 22:55:08 · 806 阅读 · 1 评论 -
私有属性,私有方法调用,变更
#-*- coding: UTF-8 -*-class Father: def __init__(self,name,job,age): self.name = name self.__job = job self.age = age @property # 通过property装饰器可以把一个方法装饰成属性,此时__job属性不可重新定义; # 保护为只读状态 def job(self): .原创 2020-11-09 19:24:44 · 136 阅读 · 0 评论 -
python 类继承,私有化等相关解释案例
# -*- coding: utf-8 -*-class Father(): def __init__(self,name,heigh): self.name = name self.heigh = heigh def job(self): print('程序员')class Mother(): def __init__(self,name,heigh): self.name = name se.原创 2020-11-08 23:08:46 · 93 阅读 · 0 评论 -
python类实例属性,实例方法, 继承, 多继承
import requestsclass Spider(): # name = '猪八戒' def __init__(self,url): #类初始化方法,实例化类最先调用,可直接通过类名调用 self.target = url #target 即为实例化属性 #实例化后的属性可以被实例化对象访问,也可以被实例化方法访问 #实例化属性也可以被实例化方法(self)访问 def walk(self):.原创 2020-11-08 11:15:08 · 399 阅读 · 0 评论 -
数组,字符串互换
list = ['你好','我好']print(''.join(list)) # 返回结果你好我好stri = '你好,我好'res = stri.split(',')print(res) # 返回结果['你好,我好']原创 2020-11-07 21:21:44 · 272 阅读 · 0 评论 -
ox下常用方法 chdir,getcwd,remove , rename
# -*- coding: utf-8 -*-import osurl = os.path.dirname(__file__) #__file__ 返回当前文件路径os.chdir(url) #切换当前文件路径c = open('keyword.txt','r',encoding='utf-8')fp = c.read()print(fp)print(__file__)os.path.dirchar 主要用于整体切换当前文件路径...原创 2020-11-06 22:01:48 · 181 阅读 · 1 评论 -
os.path --- 常用路径操作
import oss = os.path.abspath('.') # 返回当前路径 F:\pycode\days1 = os.path.abspath('..') # 返回上一层路径 F:\pycodes2 = os.path.dirname(s) # 返回路径 path 的目录名称 F:\pycodes3 = os.path.basename(s) # 返回路径 path 的基本名称 dayex = os.path.exists(s) .原创 2020-11-06 14:41:59 · 601 阅读 · 1 评论 -
.*? 非贪婪模式 和 贪婪模式对比
#.*? 非贪婪模式 和 贪婪模式独臂s5 = re.findall(r'<a herf ="(.*?)".*>(.*?)</a>',s4) #返回[('www.baidu.com', '百度')]s6 = re.findall(r'<a herf ="(.*)".*>(.*?)</a>',s4) #返回[('www.baidu.com" target="_black', '百度')].*?非贪婪模式 读取 www.baidu.com" 读...原创 2020-11-04 19:13:26 · 180 阅读 · 0 评论 -
python 正则表达式
# -*- coding: UTF-8 -*-import re#正则表达式各"""多数字母和数字前加一个反斜杠时会拥有不同的含义。标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。反斜杠本身需要使用反斜杠转义。由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r'\t',等价于 '\\t')匹配相应的特殊字符。"""s = "我是百度http://www.baidu.com/news.html你是谁呢,我是谷歌不是百度"# rearch 扫描字符.原创 2020-11-03 19:27:15 · 144 阅读 · 1 评论 -
自定义模块写入方式,模块中写测试代码方式
模块进行导入例:from random import randint相当于将模块内容导入到当前文件内容中。#自定义模块包 mypage,模块名称mydir# -*- coding: UTF-8 -*-def add(x,y): print(x+y)#输出文件名+模块名 通过模块调用__name__就会变成模块名称,用于写测试代码不想让模块方法运行print(f'{__name__}')if __name__ == '__main__': print('--原创 2020-11-03 09:51:29 · 181 阅读 · 0 评论 -
转义字符使用简易介绍
例:s = 'd:\python\baidu'就需要用到转义字符,字符串中 \n \t 等均有自己含义 包括单引号,所以均需要使用\ 进行转义s = 'd:\\python\\baidu'自己用于学习记录,会不断完善。如有错误请赐教,尽快改正。...原创 2020-11-02 23:44:51 · 177 阅读 · 0 评论 -
File 写入绝对路径方式
import oscurrent_url = os.path.abspath(__file__) # 获取当前绝对路径dirname = os.path.dirname(current_url) # 获取当前文件夹绝对路径add_dir = os.path.join(dirname,'arctile')txt_dir = os.path.join(add_dir,'test.txt')fo = open(txt_dir,'w',encoding='utf-8') # 此时写入的是绝对路径.原创 2020-11-02 18:20:33 · 595 阅读 · 0 评论 -
python file图片读写操作,seek(). read() 使用方法 w+,r+,a 案例方法
# -*- coding: utf-8 -*-# 图片视频均以二进制模式读取(rb),不需要进行编码,通过read读s = open('logo.png','rb').read()#wb以二进制格式打开一个文件只用于写入w = open('logo1.png','wb')print(w.write(s))原创 2020-11-01 22:49:29 · 847 阅读 · 0 评论 -
python 生成器简易使用方式
# -*- coding: utf-8 -*-# def shengcheng(n):# ix = 0# while 1 :# if ix < n:# yield n # 等同于(for i in range(10))# n -= 1# else:# return# x = shengcheng(5)# s1 = x.__next__()# s.原创 2020-11-01 21:15:37 · 719 阅读 · 0 评论 -
递归函数使用方式
# -*- coding: utf-8 -*-# 函数递归,进行一步判断如加载超时,可以通过函数添加参数进行多次判断读取,如果多次均为进行加载成功,则继续执行def num(n): if n == 1: return 1 return n + num(n-1)print(num(5))def digui(n): if n == 1: return 1 print(f'{n}*{n-1}={n*(n-1)}') retu.原创 2020-11-01 13:47:36 · 161 阅读 · 0 评论