Dubai Mall walter’s
之前记录在Evernote的“hexo git page博客记录”中,换mac再梳理一遍。
brew install node
brew install git
git init
npm install hexo-cli -g
hexo -v
$ 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 显示图片。
两年前就看到的一篇文章:
当时方向未定,并且技术储备也不足。没有实际操作。
正好现在初涉比特币,爬虫和数据处理也都有了初步的认识,可以尝试做一下。
迪拜平台:
中国平台:
直接获取页面代码被403禁止。需要伪装浏览器:
req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).read()
取得价格的代码:
soup.select(".bitcoinBuyPrice")[0].string
实际交易的汇率
这是沙特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
如上图用浏览器观察找到信息所在位置。
关键是用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()
然后就是流程代码,对所有演讲网页进行遍历,抓取信息,存入数据库。
接下来可以对数据进行一系列分析。
目的:
步骤:
两家的数据格式处理
看不懂微软复杂的数据库版本号……
用Access ACCDB文件,Provider=Microsoft.ACE.OLEDB.12.0
调用下面这个库的函数:
http://zhiqiang.org/blog/it/excel-vba-database-functions.html
=sql.request(“”)
如何用python 替代VB:
PyWin32
https://sourceforge.net/projects/pywin32/
http://blog.sina.com.cn/s/articlelist_2805368764_0_1.html
xlwings
通过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
“””
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()
缘起:对excel处理发现需要用到win32com
安装python x y(已停更)
现在推荐Anaconda
步骤:https://www.zhihu.com/question/22718672