
Python
爱知菜
Renjie Wei
展开
-
网站开发跨域名iFrame嵌入之SameSite&CSRF
简而言之,就是这种攻击手段利用了iframe或其他一些技术,是A域名的网站能访问B域名的session和cookie,进而甚至于能让A域名的网站利用session和cookie中的信息伪装成用户向B域名发起请求。想象一下A域名是一个银行网站,那么B域名就能伪装成用户请求银行转账了。当SameSite等于Lax或Strict时,iframe中的不同域名的页面不会被允许访问session。最近使用Flask开发了一个网站的应用,要实现在iframe中嵌入一个来自不同域名的页面。原创 2023-01-10 22:18:13 · 1787 阅读 · 0 评论 -
Python打包Wheel包的傻瓜式一站教程
1. setup.py 文件示例:from setuptools import find_packagesfrom setuptools import setupsetup( name="name", author="xxxx", version="0.0.1", author_email="r@e.com", description="desc", long_description="long desc", license='Apache原创 2022-03-01 18:10:45 · 2833 阅读 · 0 评论 -
Python——web.py模块错误【UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte....】
根据提示找到python3安装目录下的libs/site-pageages/web文件夹下template.py文件找到修改如下:return Template(open(path).read(), filename=path, **self._keywords)修改为return Template(open(path,encoding='utf-8').read(), filename=path, **self._keywords)找到libs/site-pageages/web文件夹转载 2022-02-14 11:46:08 · 255 阅读 · 0 评论 -
webpy框架小知识: sub application 和 session
webpy中如果想把application放到单独的py文件中,使代码有更好结构,这种做法叫sub application。在sub application的py文件中如何访问session?需要在 application的py文件中定义一个hook:def session_hook(): web.ctx.session = sessionapp.add_processor(web.loadhook(session_hook))之后,在sub application的p.原创 2021-06-21 17:36:54 · 236 阅读 · 0 评论 -
网站后台返回xml,json格式的数据,编码和格式问题(web.py)
ajax开发中在请求服务器端的响应时, 对于每一种返回类型 规范的做法是要在服务端指定response的contentType 的. (当然 不指定绝大多数情况下也没什么问题 尤其是返回"非xml"的时候) 。常遇到下面的几种情况: 1、 服务端需要返回一段普通文本给客户端,Content-Type="text/plain"2 、服务端需要返回一段HTML代码给客户端 ,Content原创 2011-11-01 16:23:11 · 10096 阅读 · 0 评论 -
在centos上用mysql作数据库 搭建airflow
注意点:1. airflow 默认用sqlite作数据库,2.0版本的airflow对sqlite的版本要求较高(>3.15)2. airflow可以不用sqlite,用其他数据库3. 环境变量 "AIRFLOW_HOME" 很重要,执行airflow命令时,读取配置文件的路径就是根据该环境变量确定。建议配置到 /etc/profile4. 根据你python的版本要下一个constraints-X.X.txt的文件,用于安装。以下假设AIRFLOW_HOME=/opt/ai.原创 2021-05-08 17:35:06 · 235 阅读 · 0 评论 -
impyla 查询 列数太多不能返回的解决办法
conn = connect(host='172.16.26.16', port=31050, user='xxxx', password='xxxx', auth_mechanism='LDAP', timeout=timeout)cur = conn.cursor()cur.arraysize = 1cur.execute(sql)通过 cur.arraysize = 1 调整buffer大小,来解决这个情况原创 2021-03-01 19:38:48 · 304 阅读 · 0 评论 -
python azure-storage-blob库 使用SAS key下载blob文件实例
1. 首先安装这个库pip install azure-storage-blob2. 使用SAS URL可以直接连上某个container,然后以文件名来下载。from azure.storage.blob import ContainerClientsas_url = "SAS URL"container = ContainerClient.from_container_url(sas_url)blobs_list = container.list_blobs()for blo原创 2021-02-24 15:46:11 · 1064 阅读 · 0 评论 -
python 数据库连接session的示例代码
@contextlib.contextmanagerdef getdb(): conn = pymysql.connect("url://server", "username", "password", "dbname", charset='utf8') cursor = conn.cursor() try: yield cursor finally: conn.commit() cursor.close() .原创 2021-02-04 13:48:06 · 471 阅读 · 1 评论 -
python 为函数加上自动retry 的装饰器
""" :param delays: An iterable object the defines num of seconds between reties, also indicating num of retries. Default: retry 3 times, waiting 1/5/30 seconds. :param exceptions: Specifies exceptions that trigger re.原创 2021-02-01 18:43:55 · 641 阅读 · 0 评论 -
pyhanlp 自定义词典操作
在代码中编辑自定义词典CustomDictionary = JClass("com.hankcs.hanlp.dictionary.CustomDictionary")CustomDictionary.add("代行", "nnt 1999")CustomDictionary.add("李紫文", "nr 1")CustomDictionary.add("胡浩洋", "nr 1")强制 优先自定义词典HanLP.newSegment()\ .enableNameRecogni原创 2020-12-30 19:20:02 · 752 阅读 · 0 评论 -
grpcio (python) 初探
grpc 是一个 google开源的 rpc库,支持多种语言,本文讲python版本的grpc。安装:pip install grpciopip install grpcio-tools开发顺序:1. 首先要定义prototype文件。定义好rpc的函数、输入参数,返回参数。示例如下:syntax = "proto3";message DomoPushRequest {// 定义请求数据 string digest = 1; string conten.原创 2020-12-07 16:15:27 · 4978 阅读 · 0 评论 -
uwsgi + webpy 部署教程
uwsgi安装:yum install uwsgi-plugin-pythonINI示例:[uwsgi]http-socket=:9090plugin=pythonwsgi-file=/home/fr-renjie.wei/selfquerydlk/index_wsgi.pythreads=2processes=4master=Trueuid=linuxuserna...原创 2020-05-06 19:25:18 · 713 阅读 · 0 评论 -
使用 pyarrow 将parquet转成spark能用的parquet
最近发现spark的一个坑(发现时spark最新为2.4.4版本),spark对parquet格式有特殊要求,不支持带“uint8”类型的parquethttps://github.com/apache/arrow/issues/1470如何使用pyarrow把一个parquet转换一下呢?import pyarrow.parquet as pqdf=pq.read_table('...原创 2019-12-06 18:43:51 · 1701 阅读 · 0 评论 -
详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(4)
详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(4)上一节我们讲到根据一颗树的情况来判断是否有必要进行进一步的挖掘,这里有一个重要的概念叫单路径树,请看下面三张图: 图1 图2 图3它们分别是beer ,chips和 milk 的条件模式 子树,当对最小支持度为3的关联规则进行挖掘时其中图1原创 2013-05-26 15:02:02 · 4475 阅读 · 0 评论 -
详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3)
详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3)上一节简单讲了下FP树的生成,在这一节我将描述FP树的挖掘过程.首先我们回顾一下要挖掘的特征项及样本空间:items=('chips','eggs','bread','milk','beer','popcorn','butter')sample=[ ['milk','eggs','b原创 2013-05-26 14:58:30 · 3744 阅读 · 3 评论 -
热门搜索引擎的TOP-K算法的python实现(回溯算法遍历trie树)
问题原型:http://blog.youkuaiyun.com/v_july_v/article/details/62794982、搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也原创 2013-10-16 11:52:24 · 4604 阅读 · 2 评论 -
python 使用 adodbapi 连接mssql2005的连接字符串
装adodbapi前一定要装 pywin32 这个库连接字符串 示例:Provider=SQLOLEDB.1;Data Source=127.0.0.1;Initial Catalog=DataWarehouse;Persist Security Info=True;User ID=sa;Password=1原创 2013-06-06 15:27:58 · 2053 阅读 · 0 评论 -
社交平台舆情分析项目的总结和感想(SELENIUM,NLTK,贝叶斯分类器)(一)
前一段时间做了一个社交平台(比如新浪微博,腾讯微博)上面话题的评论采集和分析的项目,具体技术用到了selenium和python的nltk库。首先是数据采集,这里没有使用这些平台的开放API,而是用到了selenium技术,原因是因为开放API往往有采集频率的限制而且部分平台的API不够完善,而用selenium采集可以解决 网页上的核心数据通过ajax异步加载的问题。然后是数据的预处理,原创 2013-11-02 21:01:41 · 7310 阅读 · 0 评论 -
分享一个网址 上面的 python 库比官网还全........
http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi原创 2013-11-09 22:56:21 · 1531 阅读 · 0 评论 -
Hive 使用 Python 的UDF 对大量日志进行分词统计
Hive命令行中可以使用add file /path/python/script.py来添加脚本Hive会把查询结果输入到标准输入, 在map阶段Python从标准输入中读取, 逐行处理, 返回结果比如select TRANSFORM(col1, col2) using 'python script.py' as (newcol1, newcol2, newcol3) from tb 使用 "\...原创 2018-05-31 19:10:41 · 2312 阅读 · 0 评论 -
python操作时间 示例代码
从时间戳到时间结构体:time.从时间结构体转换到时间戳:time.从时间结构体打印出某个指定格式的字符串:time.根据某个指定格式的字符串得到时间结构体:time。原创 2013-06-03 09:55:13 · 7055 阅读 · 1 评论 -
使用简单的nltk的API 得到一系列字母可以组成的所有单词
import nltkwordlist=nltk.corpus.words.words()if __name__=='__main__': while(True): letters=raw_input('letters:') rs=[w for w in wordlist if len(w)>1 and nltk.FreqDist(w)<=nltk.FreqDist(lette原创 2014-02-23 23:22:45 · 1674 阅读 · 0 评论 -
python 安装 easy_install 和 pip 流程
easy_install 打包和发布 python 包pip 是包管理详见:https://pypi.python.org/pypi/setuptools/1.0#windows主要来说就是下载这段py 代码,运行成功后把 python 根目录下的Scripts文件夹添加到 Path然后在命令行运行 easy_install pip 用easy_install 来原创 2013-08-19 09:44:15 · 15102 阅读 · 0 评论 -
python 使用装饰器模式 保证带有默认值的参数不被修改默认值
import copydef freshdefaults(f): d=f.__defaults__ def refresher(*args,**kwds): f.__defaults__=copy.deepcopy(d) return f(*args,**kwds) return refresher@freshdefaultsdef原创 2013-05-26 12:21:15 · 2093 阅读 · 0 评论 -
搭建web.py+apache2.4+wsgi的网站
apache24 windows x64 web.py wsgi原创 2016-10-11 12:31:15 · 2800 阅读 · 0 评论 -
python利用K均值做聚类,判断中国足球第几流
python R 聚类原创 2013-04-05 16:49:33 · 4279 阅读 · 3 评论 -
python 装饰器模式 我的理解
python和javascript类似, 可以把函数当作函数的返回值, 比如def func(f): def subfunc(): print 'subfunc' return subfunc此外func的参数f也可以是一个函数,正是这样的结构让python可以实现装饰器模式def deco(func): print("before myfunc()原创 2016-01-12 17:20:33 · 1191 阅读 · 0 评论 -
Hadoop 使用 Python 来写 map-reduce
Hadoop 使用python 来写 map-reduce, 关键就是利用标准输入和输出, 确切来说就是:import sysfor line in sys.stdin pass()print "stdout"sys.stdin 和 print 两个函数写好了mapper.py 和 reducer.py 两个python 文件后, 用命令行来调用:原创 2017-10-17 16:46:40 · 510 阅读 · 0 评论 -
anaconda python 连 impala (选择正确的anaconda版本, bug修复) & linux python3装 jupyter
Windows 上的安装 截至目前2019/2/20 不要选python3.7版本对应的anaconda, 因为在python3.7 "async" 变成了一个关键词, 和python访问impala的库impyla有冲突, 建议选python3.5对应的anaconda版本import impala.dbapi这段代码执行后可能报错: thriftpy.parser.ex...原创 2019-02-20 18:01:10 · 1025 阅读 · 0 评论 -
Spark & Jupyter Notebook
In[3]:import pysparkfrom pyspark import SparkContext, SparkConffrom pyspark.sql import SparkSessionsparkconf = SparkConf().setAppName("myspark")#spark = SparkSession.builder.master("spark://...原创 2019-05-29 18:42:00 · 376 阅读 · 0 评论 -
python3.2打开utf8的txt文件时BOM问题的解决办法
在windows上使用open打开utf-8编码的txt文件时开头会有一个多余的字符它叫BOM,是用来声明编码等信息的,但python会把它当作文本解析解决办法:open的encoding参数for line in open('1.txt', encoding='utf_8_sig' ):原创 2013-05-13 16:46:29 · 4565 阅读 · 9 评论 -
海量日志数据提取出访问次数最多的那个IP python实现 总结
问题原型: http://blog.youkuaiyun.com/v_july_v/article/details/62794981、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件原创 2013-10-15 16:24:04 · 2743 阅读 · 0 评论 -
python3.2 logging 示例
logging.basicConfig(level=logging.INFO,filename=c.config_dict['logfile'],filemode='a',format='%(levelname)s[%(asctime)s]:%(message)s',datefmt='%Y-%m-%d %H:%M:%S')console = logging.StreamHandler()con原创 2013-06-06 15:48:30 · 2923 阅读 · 0 评论 -
从WekaWiki上的一个文本聚类的示例开始(1)
WekaWiki 上有一个文本聚类的示例,简述了使用 weka 进行文本聚类的过程,本系列文章将使用其中的text_example 演示一遍 文本挖掘从 预处理 到 特征提取 再到挖掘的全过程。下载完 text_example 完后,解压,其中有3个文件夹,分别为class1,class2,class3,每个文件夹中各有数篇文章,这就是分类好的样本。class1,class2,clas原创 2013-10-21 16:44:03 · 2242 阅读 · 0 评论 -
C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(1)
NCrawler 是一款 .net 上的开源爬虫,虽然它没有arachnode.net那么成熟完善,但是代码量小,设计结构好,很适合大家研读。在NCrawler.Demo项目下的Program.cs文件中,找到Main函数函数开头的一段代码,是打开HTTP协议的限制(对同一个WEB最多同时发起两个连接的限制)ServicePointManager.MaxServicePoi原创 2013-06-26 22:15:21 · 2757 阅读 · 1 评论 -
C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(4)
在上一节我们回顾了python 多线程的知识。queue这个线程安全的序列正是python用来实现线程池的关键。我们可以把爬虫需要解析的URL放入这个序列中,供其它空闲的线程获取并使用。线程池的实现:import ThreadPool.dlthreadclass threadpool: def __init__( self,queue,handlers,maxdepth原创 2013-06-29 22:07:05 · 1826 阅读 · 0 评论 -
python将项目文件打包发布的脚本(保留原来的项目结构)
__author__ = 'wei'import getoptimport sysimport osimport py_compiledef setparams(): global srcpath,pycpath ps=getopt.getopt(sys.argv[1:],'',['srcpath=','pycpath=']) psdict=dict(ps[原创 2013-06-25 15:02:15 · 1893 阅读 · 0 评论 -
C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(3)
在将程序移植到python之前,先来复习一下python的多线程编程的相关知识。请看下面的一段代码:import timeimport threadingimport urllib.requestimport queueclass ThreadUrl(threading.Thread): def __init__(self,q,name): thr原创 2013-06-27 17:29:35 · 1787 阅读 · 0 评论 -
C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(2)
在上一篇中,我们提到了管道这个概念(pipeline),其实所有的管道都实现了同一接口叫 public interface IPipelineStep { void Process(Crawler crawler, PropertyBag propertyBag); }所有爬到的网址都将被 构造 Crawler 时通过构造函数注入的管道 处理。一般来说第一个处理的管道是原创 2013-06-27 10:16:49 · 1976 阅读 · 0 评论