中国节日的日语说法

󰃭 2017-05-30

中国节日 中国の祝祭日(ちゅうごくのしゅくさいじつ Chinese Festival 2. 新年-新年(しんねん) 3.春节(农历正月初一)—旧正月(きゅうしょうがつ) 4. 元宵节(农历正月十五)—小正月(こしょうがつ) 5. 妇女节(3月8日)—妇人デ一 (ふじんデ一) 6. 清明节(4月5日)—清明(せいめい) 7. 劳动节(5月1日)— メ一デ一 Labor Day ( May 1st) 8. 青年节(5月4日)—青年节(せいねんせつ) 9. 儿童节(6月1日)— 儿童节(じどうせつ) 10.党的生日(7月1日) 中国共产党の诞生日(ちゅうごくきゅうさんとうのたんじょうび 11.端午节(农历5月初5)—端午の节句(たんごのせつく) 12. 建军节(8月1日)—建军节(けんぐんせつ) 13.教师节(9月10日—教师节(きょんしせつ) 14. 国庆节(10月1日)— 国庆节(こつけいせつ) 15. 中秋节(农历八月十五日)— 中秋の名月(きゅうしゅうのめいげつ) 16. 重阳节(农历九月初九)—重阳节(ちょうよのせく)

Continue reading 


「わかる」と「知る」はどう違う?

󰃭 2017-05-30

「わかる」と「知る」はどう違う? ×いろいろ試してみたが使い方を知らない。 いろいろ試してみたが使い方がわからない。 このように、「知る」は新たに知識などを得ることを表しますが、「わかる」はそれを理解・把握し自らのものとすることに主眼がおかれています。したがって、「知る」→「わかる」という過程はあっても、「わかる」→「知る」という過程はありえないということがいえます。 アメフラシは、その存在は広く知られているが、生態はまだよくわかっていない。 また、二つの語には、このような意味の違いの他に、統語的な振る舞いにおける違いが見られます。 知りたい/×わかりたい 知られている/×わかられている

Continue reading 


日本人常用的口头禅

󰃭 2017-05-30

あの 、あのう→想不出適當的話時,或說話表現出遲疑,經過大腦思考才說出來比較慎重的緩衝用詞。帶有’這個嘛,讓我想想看。恩,講起來。我說啊。啊!對了。 ええと →想不起下句話該怎麼說的時候ˇ一種緩衝用詞,沒有什麼特別的意思。不要和搭腔的﹝ええ,そうです﹞弄混。音調較平。 じつうは、実は →其實嘛!不瞞你說!說真的!老實說!事實上嘛!對了,我要告訴你! ※ じつに(真是,實在是)不同。 やはり、やつうぱり:果然不錯,正如你所說的。果然不出所料。我早就知道會這樣。就是嘛,我也這麼認為。想來想去,最後的結論還是~。我就知道。經過一番認真思考,根據我的意見嘛,還是認為這樣做最明智…。等等意思! とにかく:兩件事情比較,抓出其中優先順序重要者,先加以關心。無論如何,好歹,先就對了。不管怎麼樣,總之,反正再說了。尤其特別是,沒有料到。 つもり:對同一件事做進一步的說明,也就是說~,總之,就是說~。到底~。 要するに:給前面自己所說的話作個總結。 結局:說來說去還是,最後,歸根究底。 例えば、たとえば:比方說,我來打個比方說。 ほとんど:大體上來說嘛,大致而言。 なんといっても:不管怎麼說,畢竟,無奈。 言っちャ惡いけど:雖然說出來不太好,但~。 くりかえしもすと:反過來說的話,話說回來,回過頭來說 自慢じャないが:不是我在吹牛的,不是我自誇。 いわば:從某種意義來說,說起來,可以說。 たとえて言うなら:從某種意義來說,說起來,可以說。 いずれにしても:反正,不管怎麼說,無論如何,總之。 どちらかといえば:要怎麼講才好?說起來。 あたりまえばら:照理說,本來應該~ う一ん:恩,這個嘛。 どうしても:無論如何,說來說去,不管怎麼樣。 すごく/すごっく:這個實在太了。 ぜんぜん:簡直、根本、完全、絲毫不。 言い換えれば:換句話來說。 そうすると、そうすれば、そうひしたら:這麼一來、如此一來、於是。 そのためには、そのためみ、そのため:因此。 それで:於是、因此、所以、後來嘛。 それでは、それなら、さようばらば:如果是這樣的話~。 いちあう:大體上、大致上。 まして:更何況、況且、更談不上。 まず:首先、大概、大體而言。 むしろ:反而、還不如、倒不如說。

Continue reading 


楽々敬語を使おう

󰃭 2017-05-29

1.尊敬語 ①尊敬を表す特別な語形 いらっしゃる、見える、お見えになる、おいでになる、お越しになる、おっしゃる、なさる、召し上がる、上がる、くださる、賜る(与える)、お隠れになる(死ぬ)、ご覧になる、召す(着る)、 お風邪を召す(風邪を引く)、お気に召す(気に入る)、お年を召す(年を取る)、ご存じ、ご存じでいらっしゃる ②れる、られる ⇒いつごろ、中国に来られますか。 ③「―する」型の動詞(サ変動詞)は⇒「―なさる」 「ご」をつけず、機械的に「する→なさる」と変える。例:運転、散歩、旅行、結婚、コピー…例外なし ④その他の動詞(主に五段動詞)は⇒「お/ご…になる」 ⇒何時ごろ会社にお戻りになりますか。 ⑤お(ご)~です ⇒今より、お帰りですか。 ⑥~てくださる→お(ご)~くださる、~てください→お(ご)~ください ⇒指導してくださった先生は上海大学の林先生です。→ご指導くださった先生は上海大学の林先生です。 ⇒ちょっと待ってください。→少々お待ちください。 ⑦~です→~でいらっしゃる(普通は他人の場合にしか使わない);~です→~でございます(丁寧語だから、他人の場合でも、自分の場合でも使える) ⇒そちらは泉さんのお宅でいらっしゃいますか。 ⇒もしもし、こちらは大和銀行でございます。 ⑧~させてくださる(使役+授受関係);~させてください(請求) ⇒先生は私にそれを飲ませた。→先生は私にそれを飲ませてくださいいました。 ⇒社長、この仕事をを私にやらせてください。 2、謙譲語 ①謙遜の意味を表す特別な語形 いたす、いただく、頂戴、さしあげる、進上(しんじょう)する、進呈(しんてい)する、献上する、まいる、申す、申し上げる(言う)、拝見する、拝借する(借りる)、承る(聞く、受ける、分かる)、伺う、おる、存ずる、存じ上げる(知る、思う)、お目にかかる(会う)、お目にかける(見せる)、上がる(行く、訪ねる)、お邪魔する、持参する(持っていく、持って来る)、賜る(受ける)、拝受(はいじゅ)する(受ける) ②お/ご~する/いたす、お/ご~申す/申し上げる ⇒この件につきましては、後ほど私が詳しくご説明いたします。 ⇒これからのご幸福のことをお祈り申し上げます。 ③~ていただく→お/ご~いただく ⇒詳しく説明していただき、どうもありがとうございました。→詳しくご説明いただき、どうも、ありがとうぞざいました。 ⇒こちらにお名前とご住所をお書きいただきます。 ④お/ご~願う(請求、頼む) ⇒後ほど私に電話をかけてくださるようご伝言をお伝え願えませんか。 ⑤お/ご~できる(可能形の謙譲語) ⇒残念ながら、ご要望にはお応えできません。 ⑥~(さ)せていただく(希望) ⇒これで、本日の授業を終わらせていただきます。 3、間違いやすい敬語 (1)語形の誤り ①「お/ご」の使い分けの誤り: 原則は「お+和語、ご+漢語」 ②二重敬語:○ 「お書きになる」→ × 「お書きになられる」 ③「お/ご~される」: × 「ご出席される」 (2)尊敬語と謙譲語の誤り ① 謙譲語「お/ご~する」を尊敬語のように使う * 例 「社長は良くこのホテルをご利用するそうです」、コミュニケーションの障害になる。 ②「お/ご~してくださる、ください」 * 例 「先生、ご説明してください。」 ③「お/ご~していただく」 * 例 「先生にご指導していただきました。」 ④謙譲語を尊敬語のように使う * 例 「あなたは、その会議にまいりますか」 (3)身内、高める必要のない人を高める誤り ①身内の人を高める誤り:* 例 「父は出席なさいます」、社外の人に「課長は席をはずしていらっしゃいます。」 ②高める必要のない人を高める誤り。 * 例 「通行人に伺ったら教えてくださいました。」

Continue reading 


Python 多进程实践

󰃭 2017-05-25

多进程的方式可以增加脚本的并发处理能力, python 支持这种多进程的编程方式 进程创建 在类unix系统中, python的os 模块内置了fork 函数用以创建子进程 fork 方式创建子进程 import os print "Process %s start ..." %(os.getpid()) pid = os.fork() if pid == 0: print "This is child process and my pid is %d, my father process is %d" %(os.getpid(), os.getppid()) else: print "This is Fater process, And Its child pid is %d" %(pid) 执行结果 Process 4276 start ... This is Fater process, And Its child pid is 4277 This is child process and my pid is 4277, my father process is 4276 从结果可以看到, 从pid = os.

Continue reading 


Flask 单元测试实例

󰃭 2017-05-21

Flask 单元测试 Flask 内完美兼容了unittest, 以下是简单的一个测试方式 接口定义 我们用Flask 简单定义了两个接口 import json from flask import Flask app = Flask(__name__) @app.route('/test/api', methods=['POST']) def test_api_handler(): data = { 'code': 0, 'msg': 'OK', 'data': { 'name': 'tony', 'age': 22 } } return json.dumps(data) @app.route('/test') def test_handler(): return "hello world" if __name__ == '__main__': app.run(port=9999) 一个是 /test/api, 一个是/test, 前者返回一个json 字符串, 后者返回一个普通字符串 单元测试用例 以下是写的 Flask 的测试模块 import run import unittest class TestDemo(unittest.TestCase): def setUp(self): self.app = run.app.test_client() def test_test(self): ret = self.

Continue reading 


python logging 日志多进程并发写单文件

󰃭 2017-05-16

原创作品:首发u3v3, 转载请保留 地址:https://www.u3v3.com/ar/1330 作者ID:Yi_Zhi_Yu 首发日期:2017.5.16 Python学习群:278529278 (欢迎交流) logging 多进程写同一个文件 logging 包的官方文档中明确说过 Although logging is thread-safe, and logging to a single file from multiple threads in a single process is supported, logging to a single file from multiple processes is not supported, because there is no standard way to serialize access to a single file across multiple processes in Python 没有标准的方式让多进程写同一个日志文件 logging 包有一个FileHandler 实现了日志写入文件的操作, 但多进程并发写入时, 会产生数据截断, 覆盖等问题, 下面我们会进行这个实验 同时, 我们也自己简单实现了一个自定义的Handler, 希望能实现多进程并发写入而不会产生FileHandler时的问题, 并进行验证

Continue reading 


git简单使用方法

󰃭 2017-05-10

git 简单使用方法 1.从命令行创建新的仓库 touch README.md git init git add README.md git commit -m "first commit" git remote add origin https://git.u3v3.com/myname/myfirstfaskweb.git git push -u origin master 2.从命令行推送已经创建的仓库 git remote add origin https://git.u3v3.com/myname/myfirstfaskweb.git git push -u origin master 3.查看文件状态 git status 4.跟踪新文件 git add README.md 5.提交更新 git commit 6.推送更新 git push

Continue reading 


我认为正确的学习方法

󰃭 2017-05-10

看了群里小伙伴兴高采烈的的讨论看什么什么书,忍不住想要吐槽,但又不好意思直接泼冷水,只好写在这里: 我可以很负责的告诉你们,不管你看多少遍,能学的到只有很少很少的一部分,90%的东西都是你做东西时候才能学的到,书本只不过是给你查漏补缺的,不亲自动手做一下你连书上在讲什么都不知道。 不喜勿喷,请直接屏蔽。

Continue reading 


荒野的flask学习笔记

󰃭 2017-05-09

荒野的flask学习笔记(1) 导入类 实例化 name传递包或模块的名称 from flask import Flask, url_for, render_template app = Flask(__name__) 装饰器rout(’/’)确定触发函数的URL 或者说函数绑定到URL上 @app.route('/') def index(): return 'Index Page' 采用render_template渲染模板 @app.route('/hello/') @app.route('/hello/<name>') def hello(name=None): return render_template('hello.html', name=name) 给url增加变量 @app.route('/user/<username>') def show_user_profile(username): return 'User %s' %username @app.route('/post/<int:post_id>') def show_post(post_id): return 'Post %d' %post_id @app.route('/projects') def projects(): return 'The project page' @app.route('/about') def about(): return 'The about page' ==登录,待补充完善== @app.route('/login', methods=['GET','POST']) def login(): if request.method == 'POST': do_the_login() else: show_the_login_form() ==静态文件==

Continue reading 


python django静态文件配置

󰃭 2017-05-05

只是想为django中的模板添加标签,接入css文件,但是百度里的教程基本都是没用的。 看了不少,最后用一下方法成功调用了css文件 转自http://blog.csdn.net/liqiancao/article/details/66151287 Django版本1.10 网站通常需要js,css,图片等文件,在Django中,我们把这些文件称为“静态文件”(static files)。Django提供django.contrib.staticfiles来管理他们。 使用方法如下: 1.在settings.py中定义你的STATIC_URL: STATIC_URL = ‘/static/’ 2.在项目(app)中,static文件的目录 ├─logcontrol │ ├─migrations │ └─static │ └─css css文件夹下下创建css文件 3.在settings.py中添加项目APP: 4.在HTML文件中调用: {% load static %}

Continue reading 


机器学习读后感(二)概念学习和一般到特殊序

󰃭 2017-05-05

从特殊的训练样例中提取出一般的特征是机器学习的中心问题,这一问题被称为概念学习(concept learning),或称从样例中逼近布尔值函数。定义: 概念学习是指从有关某个布尔函数的输入输出训练样例中推断出该布尔函数。 术语定义 概念定义在一个实例(instance)集合之上,表示为X。 目标概念(target concept): 待学习的概念或函数,记作c。一般来说,c是可以定义在实例集X上的任意布尔函数,即c:X→{0,1}。 训练样例(training examples):每个样例为X中的一个实例x以及它的目标概念值c(x)。对于c(x)=1的实例被称为正例(positive example),对于c(x)=0的实例为反例(negative example)。经常可以用序偶<x,c(x)>来描述训练样例。 假设(hypothese):对目标概念的估计,所有可能假设的集合为H。H中的每个假设h表示X上的定义的布尔函数即h:X→{0,1}。机器学习的目标就是寻找一个假设,使对于X中的所有x,h(x) = c(x)。 归纳学习假设:任一假设如果在足够大的训练样例集中很好的逼近目标函数,它也能在未见实例中很好的逼近目标函数。 假设的一般到特殊序 如果任何被h1划分为正例的实例都会被h2划分为正例,那么我就说h2比h1更一般。 FIND-S:寻找极大特殊假设 FIND-S算法使用一般到特殊序,在偏序结构的一个分支上执行一般到特殊搜索,以寻找与样例一致的最特殊假设。从H中最特殊假设开始,然后再该假设覆盖正例失败时将其一般化(当一假设能正确地划分一个正例时,称该假设“覆盖”该正例),算法如下: FIND-S算法的重要特点是:对以属性约束的合取式描述的假设空间,FIND-S保证输出为H中与正例一致的最特殊的假设。然而,这一学习算法仍存在一些未解决的问题: - 学习过程是否收敛到了正确的目标概念,也就是没法确定它是否找到了唯一合适的假设。 - 为什么要用最特殊的假设。 - 训练样例是否相互一致。训练数据中的某些错误或噪声会严重破坏FIND-S算法,因为它忽略了所有反例。 - 如何处理有多个极大特殊假设的情况 变型空间和候选消除算法 候选消除(candidate-elimination)算法能解决FIND-S中的若干不足之处。FIND-S输出的假设只是H种能够拟合训练样例的多个假设中的一个,而候选消除算法输出的是如训练样例一致的所有假设的集合。候选消除算法利用一般到特殊序,通过渐进地计算极大特殊假设集合S和极大一般假设集合G计算变型空间。 表示 当一个假设能正确分类一组样例时,我们称这个假设是与这些样例一致的(consistent)。 候选消除算法能够表示与训练样例一致的所有假设,在假设空间中这一子集被称为关于假设空间H和训练样例D的变型空间(version space),因为他包含了目标概念的所有合理变型。 列表后消除算法 列表后消除算法列出所有成员来表示变型空间。 这一算法能保证得到所有与训练数据一致的假设,但是要繁琐的列出H中所有假设,这对于大多数实际的假设空间是并不现实。 变型空间的更简洁表示 候选消除算法与列表后消除算法遵循同样的原则,但它使用一种更简洁的变型空间表示法。变型空间被表示为它的极大一般和极大特殊的成员。这些成员形成了一般和特殊边界的集合,这些边界在整个偏序结构中划分出变型空间。 候选消除学习算法 关于变型空间和候选消除的说明 候选消除算法是否会收敛到正确的假设 由候选消除算法得到的变型空间能够收敛到正确假设的条件是: - 在训练样例中没有错误 - H中确实包含描述目标概念的正确假设 下一步需要什么样的训练样例 一般来说,概念学习的最优查询策略,是产生实例以满足当前变型空间中大约半数的假设。这样,变型空间的大小可以在遇到每个新样例时减半,正确的目标概念就可在只用⎡㏒₂|VS|⎤次实验后得到。 归纳偏置 现在还有一些问题,比如目标概念不在假设空间中怎么办?假设空间的大小对算法推广到未见实例的能力有什么影响?假设空间的大小对所需训练样例的数量有什么影响?这些都是归纳推理中的一些基本问题。 有偏的学习器 如果扩大假设空间来使每个可能的假设都被包含在内,则有偏的假设空间可定义的目标概念数量会过于巨大。 无偏的学习器 为了保证目标概念在假设空间中,我们需要一个能表达所有的可教授概念(every teachable concept)(即能够表达实例集X的所有可能的子集)的假设空间。一般我们把集合X的所有子集的集合称为X的幂集(power set)。 如果我们使用无偏的形式,将假设空间定义为允许使用前面假设的任意析取、合取或否定式,这样我们可以安全的使用候选消除算法而不必担心无法表达目标概念。然而新的问题是:概念学习算法将完全无法从训练样例中泛化。 无偏学习的无用性 以上的讨论说明了归纳推理的一个基本属性:学习器如果不对目标概念的形式做预先的假定 ,它从根本上无法对未见实例进行分类。由于归纳学习需要某种形式的预先假定,或称为归纳偏置(inductive bias),我们可以用归纳偏置来描述不同学习方法的特征。 候选消除算法的归纳偏置:目标概念c包含在给定的假设空间H中。 一种算法如果有偏性越强,那它的归纳能力越强,可以分类更多的未见实例。

Continue reading 


机器学习读后感(一):引言

󰃭 2017-05-04

机器学习最近很火很厉害的样子,是时候跟风了解一波了~ 机器学习顾名思义是让机器去进行学习,目前主要应用于自然语言处理(就是比如输入法啊,语音输入啊之类的)、模式识别、自动驾驶、各种数据的预测等等。 让我们先对机器学习有一个宽广的定义:如果一个计算机程序对某类任务T的用P衡量的性能根据经验E来自我完善,那么我们称这个计算机程序在从经验E中学习,针对某类任务T,他的性能用P来衡量。 比如一个学习下西洋棋的程序,他的任务T就是下棋,他的性能标准P就是获得胜利的百分比,训练经验E就是不断和自己下棋。 1.2.1选择训练经验 训练经验有三个重要属性: 训练经验能否为系统的决策提供直接或间接的反馈。(也就是 说每一次的训练能否让程序学到东西) 学习器可以在多大程度上控制训练样例序列。(比如下棋程 序能否随时摆出一个他想要的棋局进行学习,有点debug工具的 感觉,自如的控制函数的执行过程) 训练样例的分布能多好的表示实例分布,通过样例来衡量最终系统的性能P。(也就是说用来训练的数据和真正用来测试的数据是不是尽可能的相似) 1.2.2选择目标函数 之后我们要选择目标函数。对于下棋程序来说,最终程序需要学会在合法的走子中选择最佳走子,这代表了一类任务:合法走子定义了某个已知的巨大搜索空间,但是最佳的搜索策略未知。学习从合法走子中选出最好的走法,也就是表明要学习的信息类型是一个能对任何给定的棋局选出最好的走法的程序或函数。但是对于下棋程序,由于系统的训练经验是间接地(也就是假定没有人类高手去教给程序每一步应该怎么走,而是程序靠自己跟自己下棋去学习),所以很难去直接判断在某个棋局里哪个走法是最好的,所以我们可以转化一下,把目标函数改为一个评估函数V,它为任何给定棋局评一个分,好的棋局评分较高。那么系统如果学会了V,在下每一步棋时就可以先产生每一个走法的下一步棋局,然后用V选择评分最高的棋局来确定最佳走子。通常要完美的学习这样一个V的可操作形式(也就是在时间限制内计算出结果)是很困难的,我们通常只希望学习算法得到近似的目标函数,所以学习过程常被称为函数逼近(function approximation)。 1.2.3选择目标函数的表示 现在我们确定了理想的目标函数V,接下来要选择一个被学习程序用来描述要学习的函数Ṽ的表示。一方面我们希望有一个最有表现力的描述来最大可能地逼近理想的目标函数V,另一方面ṋ越有表现力的描述则需要越多的训练数据。为了简化讨论,现在选择一个简单的表示法:对于任何给定的棋盘状态,函数Ṽ可以通过以下棋盘参数的线性组合来计算: 1.2.4选择函数逼近算法 估计训练值 我们使用一个简单的方法,用后续棋局Successor(b)的估计值来估计棋局b的值。很明显越接近游戏结束的棋局,Ṽ的估计越精确。 2. 调整权值 要调整权值w,首先要定义最佳拟合(best fit)训练数据的含义(也就是说什么样的训练结果是最好的)。一种常用的方法是把最佳的假设(或权值集合)定义为使训练值和假设Ṽ预测出的值之间的误差平方和E最小。 现在我们需要一个算法,在有新的训练样例时可以更新权值,并且对训练数据中的差错有较好的健壮性。其中一个这样的算法叫做最小均方法(least mean squares)或叫LMS训练法则。对于每个训练样例,它把权值向减小这个误差的方向略微调整。 η是一个小的常数(如0.1),用来调整每次更新权值的幅度。 1.2.5最终设计 执行系统(Performance System):用已学会的目标函数来解决给定的任务,把新问题(一个新棋局)作为输入,产生一组解答路线作为输出。 鉴定器(Critic):它以对弈的路线或历史记录作为输入,输出目标函数的一系列训练样例。也就是把棋局的实例转化为训练法则。 泛化器(Generalizer):它以训练样例作为输入,产生一个输出假设作为它对目标函数的估计。也就是将每个特定的训练样例中泛化出一个一般的特征,使这个一般函数能覆盖这些样例和其它的样例。在这个例子中,泛化器对应LMS算法。 实验生成器(Experiment Generator):它以当前的假设(学到的函数)作为输入,输出一个新的问题(一个新棋局)让系统去探索。它的作用是挑选新的实践问题,以使整个系统的学习速率最大化。 以上只是一个机器学习的简单模型,用来概述机器学习的基本方法。实际上在各个步骤中都有更多更好的选择。

Continue reading 


如何用 selenium+phantomjs 抓取动态页面(抓取拉钩招聘信息例子)

󰃭 2017-05-03

介绍 目前许多网站大量运用 javascript 脚本进行一些页面的处理,这些页面的抓取对爬虫是个挑战。 这类页面的抓取,有下面几种方法 分析页面(firebug/chrome调试工具 等),找到ajax获取的数据源,看是否可以直接发请求获取 调用无界面依赖的浏览器引擎(headless browser) casperjs,phantomjs 获取最后的页面 第一种方法就不说了,主要是分析请求,主要说下第二种 用 selenium + phantomjs 抓取动态页面 1. pip 安装 selenium pip install selenium 2. 去 phantomjs 下载 下载对应的包安装 3. 用下面的脚本测试,抓取拉钩的 Python开发招聘信息 #!/usr/bin/env python # coding: utf-8 from selenium import webdriver from selenium.webdriver.remote.webelement import WebElement from selenium.webdriver import ActionChains from selenium.webdriver.common.desired_capabilities import DesiredCapabilities import bs4 as bs def main(): # 设置 user agent dcap = dict(DesiredCapabilities.PHANTOMJS) dcap['phantomjs.page.settings.userAgent'] = ( 'Mozilla/5.0 (Windows NT 10.

Continue reading 


如何抓取动态页面

󰃭 2017-05-02

介绍 目前许多网站大量运用 javascript 脚本进行一些页面的处理,这些页面的抓取对爬虫是个挑战。 这类页面的抓取,有到了下面几种方法 分析页面(firebug/chrome调试工具 等),找到ajax获取的数据源,看是否可以直接发请求获取 调用无界面依赖的浏览器引擎(headless browser) casperjs,phantomjs 获取最后的页面 第一种方法就不说了,大家自己分析下,主要说下第二种 用 selenium + phantomjs 抓取动态页面 pip 安装 selenium pip install selenium 去 phantomjs 下载 下载对应的包安装 用下面的脚本测试 #!/usr/bin/env python # coding: utf-8 from selenium import webdriver from selenium.webdriver.remote.webelement import WebElement from selenium.webdriver import ActionChains from selenium.webdriver.common.desired_capabilities import DesiredCapabilities import bs4 as bs def main(): # 设置 user agent dcap = dict(DesiredCapabilities.PHANTOMJS) dcap['phantomjs.page.settings.userAgent'] = ( 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.

Continue reading 


python学习笔记:第九章 类(二)

󰃭 2017-05-01

python学习笔记:第九章 类(二) Class, Multi-Class class Car(): def __init__(self, make, model, year): self.make = make self.model = model self.year = year self.odometer_reading = 0 def get_descriptive_name(self): long_name = str(self.year) + ' ' +self.make + ' ' +self.model return long_name.title() def read_odometer(self): print("This car has " + str(self.odometer_reading) + " miles on it.") def update_odometer(self, mileage): if mileage >= self.odometer_reading: self.odometer_reading = mileage else: print("You can't roll back an dodmeter!") def increment_odometer(self, miles): self.

Continue reading 


Mac pycharm环境配置

󰃭 2017-05-01

简介 pycharm 是一款针对python开发的优秀的IDE, 以下是针对其在mac上的开发配置使用 安装 下载链接 https://download.jetbrains.com/python/pycharm-community-2017.1.2.dmg 双击安装并打开应用 修改主题 pycharm默认的主题并不好看, 不过也提供了一些其他的选择, 这里我们选择Dacula的主体, 设置的路径是Preference->Appearence & Behavior->Appearence 效果如下 python 环境配置 py开发当然是要设置好环境了, 在我的mac上, 用virtualenv配置了多个py环境, pycharm 也支持virtualenv 设置路径如下 Preference->project->Project Interpreter 如果是第一次创建virtulenv, 点击Create VirtualEnv Location和Name决定了即将创建的virtualenv的环境所在的目录, Base interpreter 决定了该环境使用的python版本, 如果没有需要的python版本, 请先安装对应版本的python, 否则, 你将无法创建响应的python版本的环境 如果已经在本地创建过virtualenv, 请选择Add Local, 选中本地已经创建好的virtualenv的python路径 添加PYTHONPATH 我们有些自己的公共模块, 并没有放在系统预置的PYTHONPATH中, 如何在运行的时候添加进去呢 点击more, 默认当前的python环境 点击上图的按钮 点击+即可添加PYTHONPATH 项目运行 一般我们的项目都会用一个统一的入口文件, 比如flask和tornado 框架, 运行项目, 实际就是执行相应的python文件 python run.py --parameter v1 --parameter v2 那在pycharm 中如何执行启动脚本运行呢 点击配置启动脚本和参数 点击+ 选择Python Name 配置表示当前运行环境的名称 设置Script和Script parameters 分别是启动脚本和启动命令行参数

Continue reading 


mac下使用docker配置php开发环境

󰃭 2017-04-27

docker 安装 官网下载docker客户端:https://store.docker.com/editions/community/docker-ce-desktop-mac?tab=description 下载镜像 可以在阿里云寻找需要的开发环境:https://dev.aliyun.com/search.html?spm=5176.1972344.0.1.MS2HkI 由于我需要使用centos7作为开发环境,在容器中centos7无法执行systemctl命令。 报错信息如下:Failed to get D-Bus connection: Operation not permitted 根据官方结局方案需要自行生成支持systemctl的镜像。 支持systemctl的Dockerfile FROM centos:7 MAINTAINER "you" <your@email.here> ENV container docker RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \ systemd-tmpfiles-setup.service ] || rm -f $i; done); \ rm -f /lib/systemd/system/multi-user.target.wants/*;\ rm -f /etc/systemd/system/*.wants/*;\ rm -f /lib/systemd/system/local-fs.target.wants/*; \ rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ rm -f /lib/systemd/system/basic.target.wants/*;\ rm -f /lib/systemd/system/anaconda.target.wants/*; VOLUME [ "/sys/fs/cgroup" ] CMD ["/usr/sbin/init"] 根据以上Dockerfile生成基础镜像

Continue reading 


python学习笔记:第九章 类(一)

󰃭 2017-04-25

python学习笔记:第九章 类(一) 创建和使用类 类的首字母大写 class Dog(): def __init__(self, name, age): #类中函数称为方法 self.name = name self.age = age def sit(self): print(self.name.title() + " is now sitting.") def roll_over(self): print(self.name.title() + " rolled over!") 创建实例与句点表示法 my_dog = Dog('willie', 6) print("My dog's name is " + my_dog.name.title() + ".") print("My dog is " + str(my_dog.age) + " years old.") 调用方法 my_dog.sit() my_dog.roll_over() 使用类和实例 class Car(): def __init__(self, make, model, year): self.make = make self.

Continue reading 


Mac OS Flask 安装和运行

󰃭 2017-04-24

系统环境 MacOS 10.12.4 Python 3.6 Flask 0.12.1 在安装前, 请先安装virtualenv 并设置好py3.6的隔离环境, 以下操作均在该环境呢 virtualenv 的安装使用请参考https://www.u3v3.com/ar/1248 安装 在py3.6的环境下, 执行 pip install flask 即可, 如果是系统默认的环境中安装的话, 需要sudo权限 sudo pip install flask 这样, 我们就将flask安装在了对应的环境中, 验证 进入ipython 中, In [46]: import flask In [47]: flask.__version__ Out[47]: '0.12.1' 可以看出, 我们的flask的版本是0.12.1, 也是最新的稳定版 Flask 运行 在Flask的官网首页, 我们可以看到最简单的一个应用服务代码 from flask import Flask app = Flask("Test") @app.route('/') def hello(): return 'hello world' if __name__ == '__main__': app.run(port=9999) 启动服务 export FLASK_DEBUG=1 # 设置debug环境变量, 允许文件更改自动加载以及debug输出 python run.

Continue reading 


python学习笔记:第八章 函数(二)

󰃭 2017-04-23

python学习笔记:第八章 函数(二) 传递任意数量的实参 接纳任意数量实参的形参放在最后 def make_pizza(size, *toppings): print("\nMaking a " + str(size) +"-inch pizza with the following toppings:") for topping in toppings: print("- " + topping) make_pizza(16, 'pepperoni') make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese') 使用任意数量的关键字实参 def build_profile(first, last, **user_info): profile = {} profile['first_name'] = first profile['last_name'] = last for key, value in user_info.items(): profile[key] = value return profile user_profile = build_profile('albert', 'einsterin', location = 'princeton', field = 'physics') print(user_profile) 将函数存储在模块中 函数存储为:pizza.

Continue reading 


python学习笔记:第八章 函数(一)

󰃭 2017-04-20

python学习笔记:第八章 函数(一) 定义和传递,实参和形参 def greet_user(username): #username 是形参 """显示简单的问候语""" print("Hello," + username.title() + "!") greet_user('jesse') #'jesse'是实参 实参被存储在形参username中 传递实参 位置实参 def describe_pet(animal_type, pet_name): """显示宠物的信息""" print("\nI have a " + animal_type + ".") print("My " + animal_type + "'s name is " + pet_name.title() + ".") describe_pet('hamster', 'harry') 关键字实参 describe_pet(animal_type='hamster', pet_name='harry') 默认值 def describe_pet(pet_name, animal_type='dog'): """显示宠物的信息""" print("\nI have a " + animal_type + ".") print("My " + animal_type + "'s name is " + pet_name.

Continue reading 


Python 实例,类,静态方法说明

󰃭 2017-04-18

翻译转载 地址:https://realpython.com/blog/python/instance-class-and-static-methods-demystified/ Python学习群:278529278 (欢迎交流) 总览 首先让我先看一个包含了三种方法的类的例子(Python 3) class MyClass: def method(self): return 'instance method called', self @classmethod def classmethod(cls): return 'class method called', cls @staticmethod def staticmethod(): return 'static method called' 实例方法 MyClass类中,第一个方法,mehtod方法就是一个普通的实例方法。这是一个基本的,没有过多修饰的方法类型,在大多数情况下,我们使用的都是这个方法。 实例方法一定有一个self参数,指向这个类的实例本身。通过self参数,类的实例可以自由的获取实例的属性和其他方法。这为在方法内修改实例状态提供了一个入口。 除此之外,实例方法还可以通过 self.__class属性来访问类,这意味着,实例方法同样可以修改类本身的状态。 类方法 我们再来看@classmethod装饰器修饰的classmethod方法,类方法一定含有一个cls参数指向类本身。所以类方法只能修改类的状态,而无法修改实例对应的状态。 而类状态会这个类的所有实例共享。 静态方法 静态方法由装饰器@staticmethod来标识,这种类型的方法即没有self参数, 也没有cls参数。因此它无法影响类或者实例的状态,静态方法被严格限制它所能访问的数据。 它可以主要用来限定方法的命名空间(类中)。 实战例子 我们首先来看这些类型的方法在被调用的时候的行为。我们首先创建一个MyClass的实例,使用它来调用三种方法。 三个方法都会返回一个元组,这里面包含了我们想要追踪的信息。 下面是调用实例方法后的返回信息 >>> obj = MyClass() >>> obj.method() ('instance method called', <MyClass instance at 0x101a2f4c8>) 上面的输出显示,实例方法通过self参数返回了类的对象实例。当实例方法被调用的时候。Python会用类实例对象obj替换self参数。 我们可以忽略掉点操作符的语法糖,手工的将类的实例传入。得到相同的输出。 >>> MyClass.method(obj) ('instance method called', <MyClass instance at 0x101a2f4c8>) 再来看看类方法

Continue reading 


python 类方法的动态调用

󰃭 2017-04-17

原创作品:首发u3v3, 转载请保留 地址:https://www.u3v3.com/ar/1313 作者ID:Yi_Zhi_Yu 首发日期:2017.4.17 Python学习群:278529278 (欢迎交流) PHP中的动态调用 PHP 中对对象方法可以方便的使用, 如下 <?php class T { public function a(){ var_dump('Hello A'); } } $t = new T(); $t->a(); $func = 'a'; $t->{$func}(); //这里就是动态调用 和 $t->a()调用一样 上面的例子可以看出, 通过动态调用, 我们可以以对象->函数名字符串()的方式动态的调用类对象 python 中的动态调用 PHP 中的动态调用如此简单, 那Python中呢 python 中没有像PHP 那样的通过字符串作为函数名调用的方式, 但python 有另外一种实现方式 我们知道, 在python的类中, 有这么一个特殊的函数 __getattr__ 当我们通过obj.attr_name的方式获取obj中不存在的属性时, 就会触发该函数 # !/usr/bin/env python # -*- coding: utf-8 -*- # Tony Wang @ 2017-04-18 00:31:12 class T(): name = 'Yi_Zhi_Yu' def __getattr__(self, attr_name): return 'You are try get attr: {}'.

Continue reading 


Python ini 配置读取--configparser

󰃭 2017-04-13

原创作品:首发u3v3, 转载请保留 地址:https://www.u3v3.com/ar/1312 作者ID:Yi_Zhi_Yu 首发日期:2017.4.13 Python学习群:278529278 (欢迎交流) ini 文件 python下读取.ini文件格式的配置, 可以使用configparser这个包 一般.ini的配置格式如下 [db];[section] ;option=value host=127.0.0.1 port=3306 user=Yi_Zhi_Yu pwd=xxxx ;表示注释内容 以上标记出了不同部分的概念, [db]中括号里的的db就表示一个section host=127.0.0.1 则对应的是 option=value 了解这个, 我们对configparser的使用就更容易能看得懂了 configparser 下面我们来看看如何读取读取test.ini文件配置, 配置内容 [db] host=127.0.0.1 port=3306 user=Yi_Zhi_Yu pwd=xxxx if __name__ == '__main__': cfger = configparser.ConfigParser() cfger.read_file(open('test.ini')) print(cfger.sections()) # ['db'] 输出的是sections print(cfger.options('db')) # ['host', 'port', 'user', 'pwd'] 输出的是db 这个section下的options print(cfger.get('db', 'host')) # 127.0.0.1 db下的host配置 结果如下 ['db'] # sections ['host', 'port', 'user', 'pwd'] # options 127.0.0.1 # db.

Continue reading 


python构造类http_build_query函数简版

󰃭 2017-04-12

原创作品:首发u3v3, 转载请保留 地址:https://www.u3v3.com/ar/1311 作者ID:Yi_Zhi_Yu 首发日期:2017.4.13 Python学习群:278529278 (欢迎交流) 前言 在PHP中, 我们使用curl 扩展发送post请求时, 可以通过http_build_query 来构造多维的 post 参数, 用法如下 $request_params = [ 'name' => 'Yi_Zhi_Yu', 'scores' => [ ['name' => 'English', 'score'=>100], ['name' => 'Math', 'score'=>100] ]]; echo http_build_query($request_params); 输出如下 user=Yi_Zhi_Yu&info%5B0%5D%5Bage%5D=27&info%5B0%5D%5Bsex%5D=man 通过url decode, 即 user=Yi_Zhi_Yu&info[0][age]=27&info[0][sex]=man 这就是post时, 我们需要发送的post body 的内容 PHP 里有http_build_query, 那python中呢, 当然没了, 要不然我就不用自己实现了 问题 python 里, 我们发送post的时候, 如果需要将post body 做url encode, 有一个urllib2模块可以用 if __name__ == '__main__': request_params = {'name': 'Yi_Zhi_Yu', 'score': 100} print(urllib.

Continue reading 


pip 国内加速源配置

󰃭 2017-04-12

pip 使用国内镜像,下载加速 linux 下修改配置 修改 ~/.pip/pip.conf 文件,没有就创建一个 [global] index-url=https://pypi.douban.com/simple [install] trusted-host=pypi.douban.com windows 下修改配置 直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini, 文件的内容与上面 linux 的配置内容相同 可用的加速源 豆瓣(douban) https://pypi.douban.com/simple 阿里云 https://mirrors.aliyun.com/pypi/simple 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple

Continue reading 