A Song of Python and Anaconda


  • Startseite

  • Archiv

  • Tags

用Python和SAE开发微信公众号的方法

Veröffentlicht am 2016-09-05

说明:此贴是以新浪SAE+git+Python设置微信公众号的方法,注意新浪SAE需要实名认证才能工作。


1、在SAE新建应用,如van3,则得到http://van3.applinzi.com/的2级域名一枚,后续会用于微信公众号的URL。

2、选择Git部署。同时得到仓库地址:https://git.sinacloud.com/van3

3、在C盘根目录新建一个sae的文件夹(可自选名字和路径),代码:

cd sae


git clone https://git.sinacloud.com/van3

4、 此时,van3里面还是空的,后续是在本地更新文件后再上传到SAE,当然在Github也做一个备份。随后登录微信公众平台,在“基本配置”的地方,找到APP_ID 和SECRET_KEY,并复制到一个文本文档,后面要用到,并点击页面中间的“修改配置”,设置URL为第一步中的2级域名,而Token(自定义),EncodingAESKey则随机生成,选择安全模式,并把token的内容也复制到文本文档。此时不提交(要先配置本地文件,否则Token无法识别的)。并去图灵网【点我】申请一个key,也复制到文本文档。

5、 操作本地项目文件,代码:

cd van3

pip install requests


update.py

6、这里是基于在Github上已经有了一个示范程序了。选择1:update config 2:update articles 4: update server
界面跳出token,此时把微信公众平台设置的token,APP_ID ,
SECRET_KEY和图灵网的key的内容都复制进去。

7 把本地文件更新到Github服务器,代码:

git push origin master:1

8、把本地文件更新到SAE:

git remote add sae https://git.sinacloud.com/van3

git add .

git push sae master:1

9、参考: MyPlatform

ECS 基于Nodejs运行微信公众号的bug调试

Veröffentlicht am 2016-09-05

1、因此方法基于Nodejs,但之前安装了Nginx,占用了80端口,而微信公众号必须80端口,因此要把Nginx停用。

2、此文是确定80端口被Nginx占用,如不确定,应该用netstat命令查询谁占用了80端口,而查询nginx进程

ps -ef | grep nginx

3、停止nginx

kill -QUIT 主进程号

`

基于神箭手的简易爬虫示范--切糕王子--

Veröffentlicht am 2016-09-05

说明:原文【点我】的第一课。


1、如果是第一次接触爬虫,搜索一些范例,比如相对最流行的scrapy(Python)的来说,你看到完整的但是感觉很长的代码,就头大了。 网页上的示范代码,还有一个可能的也是很大的问题是因为不同网站的对代码的支持方式,导致的缩进问题,而刚好Python对缩进的报错,在较多的代码的时候,是很让人抓狂的。

2、好在现在已经有很多第三方平台,可以大大简化一些基础代码的编写,所以以神箭手 官网【点我】 为基础,一个简单的范例。

3、代码分析:

var configs = {
    domains: ["www.qiegaowz.com"],
    scanUrls: ["http://www.qiegaowz.com/product/Default.html"],
    contentUrlRegexes: ["http://www\\.qiegaowz\\.com/product/.{36}\\.html"],
    helperUrlRegexes: ["http://www\\.qiegaowz\\.com/product/Default\\.html"], //可留空
    fields: [
            {
                // 第一个抽取项
                name: "thumbnail",
                selector: "//div[contains(@class,'showpic')]/img/@src", //默认使用XPath
                required: true //是否不能为空
            },
            {  
                // 商品标题  
                name: "title",  
                selector: "//div[contains(@class,'showproduct')]/h1" 
            }, 
            {
                // 其他抽取项
                name: "content",
                selector: "//div[contains(@class,'shownewdes')]" 
            }
    ]
};

var crawler = new Crawler(configs);
crawler.start();

4、从代码长度来看相对简单,而且只需要根据domains,scanUrls,fields内容等对应修改。原文已经对需要修改的地方,做了较详细的解释,同时,也需要对正则表达式,xpath有基础了解。必须了解:正则的点和问号都是要转义的,并且转义需要两个\,另外关于正则表达式,可参考廖雪峰的网站内容 【点我】。

5、最后总结下:依托神箭手,写爬虫的主要核心步骤就是3步:

1. 选入口Url 
2. 限定内容页和中间页
3. 写内容页抽取规则

编程初学者如何使用搜索引擎

Veröffentlicht am 2016-09-05

说明:正确使用搜索引擎真心是有用和重要,某种程度上,是跨行的自信支撑。这是转帖


原文地址: 编程初学者如何使用搜索引擎【点我】

把基于Python自动脚本转成了批处理

Veröffentlicht am 2016-09-05

在上一个帖子里,已经实现了本地文件同步更新到站点。是通过Python运行了一个.py文件的形式,本来丢在VPS也不用管,但因本身VPS也运行我其他程序,导致手机远程登录的时候,查看那个py程序不方便(屏幕小)

于是,在Python文件格式的基础上,混编成了批处理文件,这样,各司其职,更好些。 可以把这个bat文件放在任意文件夹了。

代码:

"""
::==============this is the note
::batch and Python hybrid coding
::Van

::Below is code
@echo off&cls
echo batch echo
python.exe %0&pause
::=====================comments
"""
#below is your Python code

__author__ = 'Van'


import os
import time
import subprocess

file = 'C:\\Users\\Administrator\\TestBlog\\vansnowpea.github.io\\source\\_posts\\'

path = "C:\\Users\\Administrator\\TestBlog\\vansnowpea.github.io"

t1 = os.path.getmtime(file)

print (t1)

def update_Hexo():
    print ('hi')
    p = subprocess.Popen('cmd.exe', shell=True, stdin=subprocess.PIPE)
    p.stdin.write('cd '+ path + '\n')
    p.stdin.write('hexo generate --deploy' + '\n')
    p.stdin.close()


while 1:
    time.sleep(1)
    t2 = os.path.getmtime(file)
    if t2 == t1:
        pass

    else:
        print('file was modified, will update Hexo!')
        update_Hexo()
        print(' update Hexo done!')
    t1 = t2



if __name__ == "__main__":
pass

Ubuntu中Nginx安装遇到的错误

Veröffentlicht am 2016-09-05

说明:在2台电脑相同版本的Ubuntu系统中,遇到了不同的现象,一台一开始死活出现Nginx启动异常。已经根据Nginx官网提示安装了cong的key,依然失败,以下是解决过程,感谢谷歌。


1、现象:在尝试了一些方案后,出现的错误现象也有不同,最后的症状是:

nginx: [emerg] open() “/etc/nginx/nginx.conf” failed (2: No such file or directory)

2、 一开始查阅的一些方案也没搞定,以下网址的方案,测试成功,运行命令是:

sudo apt-get remove --purge nginx nginx-full nginx-common 
sudo apt-get install nginx 

3、其他的错误现象,以后遇到了再更新进来。

实现Win下本机操作自动更新Hexo到远程Github

Veröffentlicht am 2016-08-28

在实现了VPS上Win系统中Github博客布置之后,虽可实现多机远程操作,而无需每个机器pull,push的烦恼了。但是每次更新博客的时候,有一些命令是不断重复的,比如:hexo g, hexo d, hexo s。而VPS到本机,即便是国内网络也是有一定延迟,如果VPS在国外延迟就更大了。 当你在VPS输入上述命令的时候,也会因为文件数量的增多而延长响应时间,这导致体验感不是很好。

所以,一个新的需求产生了,如何能在本地+MP编辑好文章后,让VPS自动更新发布呢?


华丽的分割线


1、网上有的人推荐Dropbox实现文件同步,但需要翻墙,为简单,这里测试安装坚果云,官网【点我】

2、把VPS上的_posts文件夹通过坚果云进行同步,同时本地电脑登录坚果云,这样就实现了两头的文件自动同步。


3、剩下的问题就是如何在VPS自动即时更新,去找找资料,继续分割线

the most important thing here is to build a tool to update the articles automatically.


4、国内外的都没直接的案例,只有零星的讲解Python的subprocess函数,最后,我通过自己编写的Python程序实现了VPS上的博客自动更新,也算原创,对Python顿感深爱,代码在第6部分。

5、下面是考虑问题过程中的一些思路,仅作为记录,可忽略之。

目前,搜索到的基于Hexo的自动更新博客的2个帖子都基于Linux系统,但因我的VPS是基于Win的,所以一开始的思路是搜索网络是否有Win的类似的解决方案,但是找了半天没发现。后来想到:

思路1:

看看针对Linux系统方案的工具软件,是否得到Win系统的下载和支持,但是,监测文件系统变化这样的工作与操作系统是紧密相关的,在不同平台下需要有不同的实现。Linux下内核的INotify接口目前是实现这一功能的通用方法,文件发生变化是内核会通知user space的程序哪个文件发生了什么变化。在KDE等GUI下都是使用基于INotify的User Space Library来实现检测文件变化的。Windows下可以通过ctypes库调用Win32的API来实现。

思路2:

是否可以用Python来实现?赶紧搜了下,比如这个网址【点我】发现一些信息:

首先,pyinotify是Python基于Linux的inotify模块的。

其次:watchdog不同平台的的事件都进行了封装。主要有三个角色:observer,event_handler,被监控的文件夹。三者原本是独立的,主要通过observer.schedule函数将三者串起来,意思为observer不断检测调用平台依赖代码对监控文件夹进行变动检测,当发现改变时,通知event_handler处理。

再次:然而,突然想到只要有文件更新,文件夹的最后修改时间就会变更,从这个角度来说,核心命令就是:

`os.path.getmtime(file)`  

6、程序代码(请根据自己路径修改 file和path,转载请注明出处):

__author__ = 'Van'

#-*- coding:utf-8 -*-

import os
import time
import subprocess

file = 'C:\\Users\\Administrator\\TestBlog\\vansnowpea.github.io\\source\\_posts\\'
path = "C:\\Users\\Administrator\\TestBlog\\vansnowpea.github.io"
t1 = os.path.getmtime(file)
print (t1)

def update_Hexo():
    print ('hi')
    p = subprocess.Popen('cmd.exe', shell=True, stdin=subprocess.PIPE)
    p.stdin.write('cd '+ path + '\n')
    p.stdin.write('hexo generate --deploy' + '\n')
    p.stdin.close()
    #p.wait()
    #print sys.stdout.readline()


while 1:
    time.sleep(1)
    t2 = os.path.getmtime(file)
    if t2 == t1:
        pass

    else:
        print('file was modified, will update Hexo!')
        update_Hexo()


    print(' update Hexo done!')
    t1 = t2



if __name__ == "__main__":
    pass

7、更新:
把自动程序升级到了批处理文件,具体见下一个帖子。:)

8、参考: 基于Linux系统的: VPS+Dropbox+markeditor打造Hexo完美体验

如何在Win系统实现Github博客的管理

Veröffentlicht am 2016-08-27

本文参考了其他作者的文章【点我】里面有比较详细的说明,但是有一个地方是深坑,这可能是因为原作写的时候较早,那时候的命令有的细节不符合当前的Github设置,后面会详细说到,在此之前,请先参考我的第一篇博客【点我】了解如何在Ubuntu下搭建Github博客的,实际上,在Win系统的操作大同小异,无非是如何实现Win到Linux系统的过渡。

深坑在哪里?开头说到的深坑,是其他作者在修改_config.yml文件的 deploy部分的命令是:

type: github

而如今正确的命令是:

type: git

不然,hexo d的命令无法发挥作用,始终造成本机资料修改无法更新到服务器上去。而找到这个错误之前,搜索了很多其他地方的修改比对,消耗时间较多。

PS:需要补充说明的是,在不同电脑上安装Hexo遇到过失败的现象,一般是npm安装不完全导致的,可选的备用方案是使用淘宝的npm源。不过命令会变成cnpm:

$ sudo npm install -g cnpm --registry=https://registry.npm.taobao.org

$ sudo cnpm install hexo-cli -g

Ubuntu系统安装遇到的一些坑

Veröffentlicht am 2016-08-27

说明:虽然win10 已经开始支持子系统运行Ubuntu了。 但因为个人倾向win7的精简风格,W+U双系统测试,剧情比较悲催,记录之。

1、一开始通过本机Win+virtualbox(Ubuntu),预期解决本机数据不能复制到Virtualbox的问题,故尝试装Win+Ubuntu双系统。

2、由于2个Win的双系统对本机其他盘的文件没影响,一开始惯性思维装Ubuntu也问题不大,但实际问题很大。这是后来才发现,使用Ubuntu不仅要修改硬盘格式,还要修改其他Bios设置。

3、这导致我一马平川的装好Ubuntu的时候(鼠标点太快),发现Win已经全部没了。很多历史的总结文档,好在大部分有云存储。

4、发现本机Ubuntu有不少问题,这是因为第一,Linux的熟悉度不够,第二,一些第三方软件的使用,比较麻烦,比如安装命令不确定带来的错误,有的非常难搞定安装和使用,而在Win下超简单。于是想采用本机Ubuntu+virtualbox(Win7)的方案,又发现,在Ubuntu下,运行Virtualbox的窗口比较小(没找到直接调试的地方),这使得Win的体验感很差,而在Win下,使用Virtualbox的窗口可简单调整。第三是,发现一运行Virtualbox就特别卡。

5、最后决定,本机换回Win,但是从Ubuntu到Win的切换又遇到问题。 首先,修改了Bios,但是硬盘格式没有修改,这是因为搜索别人的经验建议Win7以上保留该格式。最后通过U盘带PE+iso的方案。 可进入PE怎么调试也装不上Win,经过多轮比对测试发现,还是硬盘读取数据异常。 测试修改硬盘格式,终于读取了iso。

6、单机安装Win,又遇到问题,因为没有任何驱动,主要是网卡。这样我手机的东西不能直接通过数据线连到电脑, 本来想明天到其他电脑通过copy网卡驱动在搞,后来突然想到通过手机下载万能网卡驱动到SD卡,然后手机SD卡+读卡器安装到电脑。这样就一下搞定了。

7、总结不足的地方,惯性思维导致丢失了硬盘数据,第一次本机换装Linux系统,没查到硬盘格式不同,导致后来很多问题。事后发现,Win+Ubuntu的双系统,应该在Win分区,但很繁琐。或者单独给Ubuntu装,或者继续用Win+Virtualbox的方案,或者装Win10 insider_preview版本。

推荐MarkdownPad 作为Win系统本机端的MarkDwon编辑器

Veröffentlicht am 2016-08-27

一开始写了一个文章,本机排版后传到blog杂乱无章,所以搜索了下Markdown编辑器,然后试用MarkdownPad,效果还不错,故推荐之。如果是Web端编辑,则推荐jianshu.com,简书本身也是很优秀的网站。 官网【点我】

附上MP的注册码【点我】:

1…678
Van

Van

71 Artikel
© 2017 Van
Erstellt mit Hexo
Theme - NexT.Muse