客户有一要求:需要把他关注的视频号每天都抽取出文本发送邮件。基于这样的需求我大概梳理一下思路:通过视频号获取当天发布的视频链接地址,抽取音频文件,结合ASR获取文本信息。
可以在获取视频链接地址这一步就卡住了,没想到微信对链接地址能隐藏到这个地步。虽然通过以下办法可以拿到地址,但无法自动化流程。
微信小程序:提取王
量化自我和极简主义的窝藏点
客户有一要求:需要把他关注的视频号每天都抽取出文本发送邮件。基于这样的需求我大概梳理一下思路:通过视频号获取当天发布的视频链接地址,抽取音频文件,结合ASR获取文本信息。
可以在获取视频链接地址这一步就卡住了,没想到微信对链接地址能隐藏到这个地步。虽然通过以下办法可以拿到地址,但无法自动化流程。
微信小程序:提取王
from pytz import timezone
from datetime import datetime
from time import mktime
import time
t1 = ‘2016-08-04T02:58:29Z’
tt1 = time.strptime(t1, “%Y-%m-%dT%H:%M:%SZ”)
dt1 = datetime.fromtimestamp(mktime(tt1))
tzchina = timezone(‘Asia/Chongqing’)
utc = timezone(‘UTC’)
dt1.replace(tzinfo=utc).astimezone(tzchina)
环境: Ubuntu 14.04
在做广告日志分析有一个字段是user-agent,是Http协议中的一部分,属于头域的组成部分,可以通过该属性来识别出所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。
之前想通过字符串的正则匹配来识别出相应的字段,发现无法做到。后来查找有一个网站提供api能精确识别出来。
代码如下:
#coding:utf-8
#/usr/bin/python2.6
import sys
import urllib
import urllib2
import json
import pprint
ua = “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.4 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.4”
ua_url = urllib.quote(ua) # 转url编码
url = “http://www.useragentstring.com/?uas=%s&getJSON=all” % ua_url
req = urllib2.Request(url)
j = urllib2.urlopen(req).read()
j = json.loads(j)
print json.dumps(j, indent=4, sort_keys=True)
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(j)
环境:Ubuntu 14.04, Gensim, jieba
先中文分词:
python -m jieba wiki.zh.text.jian.utf-8 > cut_result.txt
抽取3万个文档:
head -n 30000 cut_result.txt > cut_small.txt
处理脚本如下:
from gensim import corpora
train_data = []
corpus1 = []
corpus2 = []
with open(‘cut_small.txt’, ‘r’) as f:
for i in f.readlines():
train_data.append(list(i.decode(‘utf8’).split(‘/’)))
dic = corpora.Dictionary(train)
corpus1 = [dic.doc2bow(text) for text in train_data]
with open(‘cut_small.txt’, ‘r’) as f:
for i in f.readlines():
corpus2.append([dic.token2id[j] for j in i.decode(‘utf8’).split(‘/’)])
环境:Ubuntu 14.04, Gensim,
处理脚本process_wiki.py:
#!/usr/bin/env python # -*- coding: utf-8 -*- import logging import os.path import sys from gensim.corpora import WikiCorpus if __name__ == '__main__': program = os.path.basename(sys.argv[0]) logger = logging.getLogger(program) logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s') logging.root.setLevel(level=logging.INFO) logger.info("running %s" % ' '.join(sys.argv)) # check and process input arguments if len(sys.argv) < 3: print globals()['__doc__'] % locals() sys.exit(1) inp, outp = sys.argv[1:3] space = " " i = 0 output = open(outp, 'w') wiki = WikiCorpus(inp, lemmatize=False, dictionary={}) for text in wiki.get_texts(): output.write(space.join(text) + "\\n") i = i + 1 if (i % 10000 == 0): logger.info("Saved " + str(i) + " articles") output.close() logger.info("Finished Saved " + str(i) + " articles")
下载中文和英文的wikipedia
wget https://dumps.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles.xml.bz2
wget https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2
方法一:
python process_wiki.py zhwiki-latest-pages-articles.xml.bz2 wiki.zh.text
方法二:
Wikipedia Extractor 是用 Python 写的一个维基百科抽取器,使用非常方便。
wget http://medialab.di.unipi.it/Project/SemaWiki/Tools/WikiExtractor.py
python WikiExtractor.py -cb1000M -o extracted zhwiki-latest-pages-articles.xml.bz2
参数 -b1000M 表示以 1000M 为单位切分文件,默认是 500K。
将wiki.zh.text中的繁体字转化位简体字:
sudo apt-get install opencc
opencc -i wiki.zh.text -o wiki.zh.text.jian -c zht2zhs.ini
处理非utf-8字符
iconv -c -t UTF-8 < wiki.zh.text.jian > wiki.zh.text.jian.utf-8
环境: Centos 5.6 , Python
语句如下:
[os.path.split(f)[1].split(“.”) for f in os.listdir(“/u01/app/bietl/code/bdhi”) if os.path.split(f)[1].split(“.”)[1] == ‘dat’]
/u01/app/bietl/code/bdhi — 代表目录名
dat — 代表后缀名
这两个参数可以按你想要的结果传入。
环境: Ubuntu 12.4
>>> import numpy
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “/usr/lib/python2.7/dist-packages/numpy/__init__.py”, line 137, in <module>
import add_newdocs
File “/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py”, line 9, in <module>
from numpy.lib import add_newdoc
File “/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py”, line 13, in <module>
from polynomial import *
File “/usr/lib/python2.7/dist-packages/numpy/lib/polynomial.py”, line 11, in <module>
import numpy.core.numeric as NX
AttributeError: ‘module’ object has no attribute ‘core’
>>>
解决方法: sudo apt-get remove libopenblas-base
环境: Ubuntu 12.4
模式
1 | 1位像素,黑和白,存成8位的像素 |
L | 8位像素,黑白 |
P | 8位像素,使用调色板映射到任何其他模式 |
RGB | 3×8位像素,真彩 |
RGBA | 4×8位像素,真彩+透明通道 |
CMYK | 4×8位像素,颜色隔离 |
YCbCr | 3×8位像素,彩色视频格式 |
I | 32位整型像素 |
F | 32位浮点型像素 |
导入图片处理库
>>>from PIL import Image
加载图片文件
>>>im = Image.open(‘aa.jpeg’)
输出文件的格式,大小,模式
>>> print im.format, im.size, im.mode
JPEG (510, 333) RGB
白化图片
>>> im.convert(‘1’).show()
获取图片pixel数据
方法一:
>>> import numpy
>>> numpy.asarray(im)[100, 100]
方法二:
>>> im.getpixel((100, 100))
(254, 167, 175)
方法三:
>>> im.load()[100, 100]
(254, 167, 175)
几何转变提供resize,rotate等方法,用以重定义图片大小,对图片进行旋转等操作。
>>> im.resize((250, 150)).show()
>>> im.rotate(45).show()
图片加强
滤镜
ImageFilter模块提供了很多预定义的图片加强滤镜
>>>import ImageFilter
>>> im.filter(ImageFilter.DETAIL).show()
>>>import ImageEnhance
>>>ImageEnhance.Contrast(im).enhance(1.5).show()
通道
一个图片包含一个或多个数据通道, 如果这些通道有相同的长度和宽度, 可以进入叠加
>>> r,g,b = im.split()
>>>r.sohw()
>>>g.show()
>>>b.show()
>>>im2 = Image.merge(‘RGB’, (b,g,r))