重拾gitblog note

之前记录在Evernote的“hexo git page博客记录”中,换mac再梳理一遍。

brew install node
brew install git
git init
npm install hexo-cli -g
hexo -v

重新设置Git

$ cd ~/.ssh
$ ssh-keygen -t rsa -C "邮件地址@youremail.com"

在本机设置SSH Key之后,需要添加到GitHub上,以完成SSH链接的设置。

用文本编辑工具打开id_rsa.pub文件,如果看不到这个文件,你需要设置显示隐藏文件。准确的复制这个文件的内容,才能保证设置的成功。把公钥贴到github的ssh设置里面。

$ ssh -T git@github.com


$ git config --global user.name "你的名字"
$ git config --global user.email "your_email@youremail.com"

已经连上github

可以发文章了

因为是在Dropbox中同步网站源文件,所以直接去博客根目录下面hexo d就可以部署到github上了。

新建文章:

hexo n filename
hexo g
hexo d

同时使用简书作为图床

简书可以直接剪贴板贴图,然后生成的md可以直接在gitblog 显示图片。

bitcoin spider

两年前就看到的一篇文章:

当时方向未定,并且技术储备也不足。没有实际操作。
正好现在初涉比特币,爬虫和数据处理也都有了初步的认识,可以尝试做一下。

迪拜平台:

  • bitoasis

中国平台:

  • Okcoin
  • 火币

1. 获取价格

直接获取页面代码被403禁止。需要伪装浏览器:

req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).read()

取得价格的代码:

soup.select(".bitcoinBuyPrice")[0].string

2.定时获取

画K线图

3. 计算入所有的交易成本

实际交易的汇率

4. 操作

https://www.okcoin.cn/fix_getStarted.html

collective intelligence
该书介绍用户数据驱动的web2.0时代算法。

1. 什么是机器学习

程序,归纳训练,得到预测模型。
多种算法,决策树,神经网络……

2. 推荐系统

collaborative filtering 协作过滤

臭味相投。

TED爬虫

这是沙特2016夏天斋月时候写的第一个爬虫TED_spider.py。写文章复习一下。

用到的库

抓取目标网址:https://www.ted.com/talks
sqlite3 数据库
BeautifulSoup 解析页面
urllib.request 发起请求

得到网页信息

urlopen得到网页源码:

def make_soup(url):
  html=urlopen(url).read()
  return BeautifulSoup(html,"lxml")#html to lxml

image.png

如上图用浏览器观察找到信息所在位置。

关键是用beautiful soup 精确选中你要提取的信息,需要对HTML和CSS的熟悉,对BS4的熟悉:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html

def get_talks(url):
  talks=make_soup(url).find("div","row row-sm-4up row-lg-6up row-skinny")# tag and class
  talk_links= [BASE_URL+h4.a["href"] for h4 in talks.findAll("h4","h9 m5")]#List Comprehensions
  #there is "posted rated" info on the index page
  return talk_links

数据库初始化

用数据库对得到的信息进行存储,这里用的sqlite,需要对sql和数据库的了解:

if os.path.exists("data/TED.db"):
    conn=sqlite3.connect("data/TED.db")
    cur=conn.cursor()
else:
    #建立数据库
    conn=sqlite3.connect("data/TED.db")
    #建立cursor
    cur=conn.cursor()
    cur.execute('''CREATE TABLE TED
    (
        ID INTEGER PRIMARY KEY AUTOINCREMENT,
        speaker CHAR,
        talk_name CHAR,
        talk_link TEXT,
        watch_times INT,
        place CHAR,
        length CHAR,
        month CHAR,
        brief_description TEXT,
        transcript TEXT,
        similar_topics TEXT
    );''')
    conn.commit()

然后就是流程代码,对所有演讲网页进行遍历,抓取信息,存入数据库。
接下来可以对数据进行一系列分析。

todo

  1. 提升速度,多进程。
  2. 了解scrapy
  3. 登录和反反爬虫

如何用python 替代VB:

通过COM调用Excel的API,实际上VBA调用的也是这个东西。
在脚本里面获取到了Excel.Application,就可以像在VBA里面一样写Application.Workbooks(1).Worksheet(1)了

使用教程

makepy选择com库(http://www.s-anand.net/blog/automating-powerpoint-with-python/)了
新版本不用了?:http://www.blog.pythonlibrary.org/2010/07/16/python-and-microsoft-office-using-pywin32/

http://peltiertech.com/Excel/ChartsHowTo/QuickChartVBA.html

-- coding: utf-8 --

“””
Created on Thu Mar 06 19:17:49 2014
@author: 管理员
“””

#%% 导入必要的库
from pandas import DataFrame
from pandas.io.excel import ExcelWriter
import win32com.client
from win32com.gen_py import msof,mspp,msxl
from string import uppercase
from pandas import Series

#%% 将常量发布到全局命名空间中去
g = globals()
for c in dir(msof.constants) : g[c] = getattr(msof.constants, c)
for c in dir(mspp.constants) : g[c] = getattr(mspp.constants, c)
for c in dir(msxl.constants) : g[c] = getattr(msxl.constants, c)

#%% 生成行名和坐标的对应关系表
luc = list(uppercase)
columns = Series((luc + [i+j for i in luc for j in luc])[:256],range(1,257))
def cellName(nRow,nCol):
return columns[nCol]+str(nRow)

#%% 生成一份测试excel数据文件
filename = r’c:\test1.xls’
sheetname = ‘sheet1’
data = DataFrame(
{‘a’:range(10), ‘b’:range(10,20), ‘c’:range(20,30),’d’:range(30,40)},
index=list(uppercase)[:10]
)
datafile = ExcelWriter(filename)
data.to_excel(datafile,sheetname)
datafile.save()

#%% 使用VBA将其数据文件打开
application = win32com.client.Dispatch(‘Excel.Application’)
application.Visible = True
application.DisplayAlerts = False
workbook = application.Workbooks.Open(filename)
sheets = workbook.Sheets
sheet = sheets.Item(sheetname)

#%% 获取数据范围
nRow = sheet.UsedRange.Rows.Count
nCol = sheet.UsedRange.Columns.Count

为嵌入式图表计算

chartObjectXCells = 10
chartObjectYCells = 25
chartObjectLeft = sheet.Cells(2,nCol+2).Left
chartObjectTop = sheet.Cells(2,1).Top
chartObjectWidth = sheet.Cells(2,nCol+2+chartObjectXCells).Left - chartObjectLeft
chartObjectHeight = sheet.Cells(2+chartObjectYCells,1).Top - chartObjectTop

#%% 使用独立式图表还是嵌入式图表
separatedChart = False
if separatedChart :
chart = workbook.Charts.Add()
else :
chartObject = sheet.ChartObjects().Add(
chartObjectLeft,chartObjectTop,chartObjectWidth,chartObjectHeight)
chart = chartObject.Chart

#%% 设置图表类型
chart.ChartType = xlLine

#%% 增加系列
seriesCollection = chart.SeriesCollection()
for i in range(2,nCol+1):
rangeName = cellName(2,i) + ‘:’ + cellName(nRow,i)
series = seriesCollection.NewSeries()
series.Name = sheet.Cells(1,i)
series.Values = sheet.Range(rangeName)

#%% 设置x轴
xRangeName = cellName(2,1) + ‘:’ + cellName(nRow,1)
seriesCollection.Item(1).XValues = sheet.Range(xRangeName)

#%% 设置背景颜色
chart.ChartArea.Interior.ColorIndex = 0
chart.PlotArea.Interior.ColorIndex = 0

#%% 也可以使用
chart.ChartArea.Interior.Color = 0xffffff

#%% 设置图表边框的颜色
chart.ChartArea.Border.ColorIndex = xlColorIndexNone

#chart.ChartArea.Border.ColorIndex = 5

#%% 设置绘图区边框
chart.PlotArea.Border.ColorIndex = xlColorIndexNone

#chart.PlotArea.Border.ColorIndex = 1

#%% 去掉图例
chart.HasLegend = False

#%% 回复图例
chart.HasLegend = True

#%% 设置图例位置
chart.Legend.Position = xlLegendPositionTop
‘’’ 图例位置可选值
xlLegendPositionCorner,
xlLegendPositionRight,
xlLegendPositionTop
xlLegendPositionBottom,
xlLegendPositionLeft
‘’’

也可以指定位置

#chart.Legend.Top = 0

#chart.Legend.Left = 0

#%% 是否显示坐标轴 (x,y)
chart.HasAxis = (True,True)

#%% 是否显示数据表
chart.HasDataTable = False

#%% 设置x和y坐标上的主要网格线
chart.Axes().Item(1).HasMajorGridlines = False
chart.Axes().Item(2).HasMajorGridlines = False

#%% 设置x和y坐标上的次要网格线
chart.Axes().Item(1).HasMinorGridlines = False
chart.Axes().Item(2).HasMinorGridlines = False

#%% 调整绘图区的位置
chartPlotAreaHeight = chart.PlotArea.Top+chart.PlotArea.Height
chart.PlotArea.Top = 0
chart.PlotArea.Height += chartPlotAreaHeight

#%%
print(‘stop!!!!!’)

#%% 另存文件
filename = r’c:\test2.xls’
workbook.SaveAs(filename)
workbook.Close()
application.Quit()

排版

  • 多级列表
  • 大纲视图和级别
  • 样式

遇到问题:大纲级别,样式,多级列表三者统一自动化。
先设置完大纲级别,再一起加多级列表即可。

如何保存样式设置:

多级列表只显示当前一级:直接在多级列表编辑中删去前面的级别即可