Pythonでやる奴

Python出来る→機械学習も出来る→価値UPで年収UPでやりがいUP→いつかは田舎暮らししたい男のブログ

jupyter notebookでよく使うショートカット

ショートカットの一覧は、notebook画面でEcsキーを押して(コマンドモードに入る)、hキー押せば一覧がポップアップしてくる。(記事最後に、その時に表示される全コマンドを記載)

素人である私が今の所「おっ、これええやん」というショートカットをメモしておく

 

Tab:コマンド補完

→例えば、DataFrameと打ちたい時、D打ってTabキー押せば一番上の候補に出てくるのでEnterで確定。超便利

 

Shift + Tab : Docstring表示

→Docstringをツールチップで表示してくれる。こんな感じ。パラメータがすぐ分かっていいよね

Init signature: DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
Docstring:     
Two-dimensional size-mutable, potentially heterogeneous tabular data
structure with labeled axes (rows and columns). Arithmetic operations

 

Command + D : カーソル行、または選択行(複数行可) 削除

Command + / : カーソル行、または選択行(複数行可) コメントon/off

 

・・・あれ?意外と少ないな。もうちょっと使いこなせるように意識して使っていこう

 

以下、全コマンド

 ------------------------------------------------------------------

Command Mode (press Esc to enable)

F: find and replace 見つけて置きかえる
: enter edit mode
⌘⇧F: open the command palette
⌘⇧P: open the command palette
P: open the command palette
⇧↩: run cell, select below
⌃↩: run selected cells
⌥↩: run cell and insert below
Y: change cell to code
M: change cell to markdown
R: change cell to raw
1: change cell to heading 1
2: change cell to heading 2
3: change cell to heading 3
4: change cell to heading 4
5: change cell to heading 5
6: change cell to heading 6
K: select cell above
: select cell above
: select cell below
J: select cell below
⇧K: extend selected cells above
⇧↑: extend selected cells above
⇧↓: extend selected cells below
⇧J: extend selected cells below
A: insert cell above
B: insert cell below
X: cut selected cells
C: copy selected cells
⇧V: paste cells above
V: paste cells below
Z: undo cell deletion
D,D: delete selected cells
⇧M: merge selected cells, or current cell with cell below if only one cell is selected
⌘S: Save and Checkpoint
S: Save and Checkpoint
L: toggle line numbers
O: toggle output of selected cells
⇧O: toggle output scrolling of selected cells
H: show keyboard shortcuts
I,I: interrupt the kernel
0,0: restart the kernel (with dialog)
Esc: close the pager
Q: close the pager
⇧L: toggles line numbers in all cells, and persist the setting
⇧␣: scroll notebook up
: scroll notebook down

Edit Mode (press Enter to enable)

: code completion or indent
⇧⇥: tooltip
⌘]: indent
⌘[: dedent
⌘A: select all
⌘Z: undo
⌘/: comment
⌘D: delete whole line
⌘U: undo selection
Insert: toggle overwrite flag
⌘↑: go to cell start
⌘↓: go to cell end
⌥←: go one word left
⌥→: go one word right
⌥⌫: delete word before
⌥⌦: delete word after
⌘⇧Z: redo
⌘⇧U: redo selection
⌃K: emacs-style line kill
⌘⌫: delete line left of cursor
⌘⌦: delete line right of cursor
⌃M: enter command mode
Esc: enter command mode
⌘⇧F: open the command palette
⌘⇧P: open the command palette
⇧↩: run cell, select below
⌃↩: run selected cells
⌥↩: run cell and insert below
⌃⇧Minus: split cell at cursor
⌘S: Save and Checkpoint
: move cursor down
: move cursor up

TensorFlow チュートリアルをとりあえず動かして見たら想定外のところで挫折した件

機械学習で調べたらTensorFlowが出てきたのでHelloWorld的なチュートリアルを実施した


  • 手持ちのmacbook(2015)では余りにもパワーが足りなかった。
  • GPUパワーが必要になるらしく、ゲーミングPCクラスのスペックがないといつまでたっても処理が終わらない 例) GPUを使って処理した場合:5分 / CPUを使って処理した場合:数時間以上

会社で超ハイスペックPCを買って貰うところから始めよう!

スクレイピング - Seleniumを使う場合

Pythonスクレイピングをやる人、多いと思います。

私もそのクチでした。

ここでは、スクレイピングの中でも、実際にブラウザを動かして操作するSeleniumで、以下の操作を実現しました。


  1. Chromeを立ち上げyahoo.co.jpにアクセスする
  2. 検索窓に指定したキーワードを入力し、検索ボタンクリック
  3. 検索結果をタイトルとURLを取得する
  4. 3.の内容をファイルに保存する。(今回は、HTMLファイルに記録)

記事の最後に、躓いた所など書いています。

from selenium import webdriver
import urllib.parse

# 1.〜3.までの処理をsearch()に一括りにしました。
def search():
    browser = webdriver.Chrome()
    browser.get("http://yahoo.co.jp")

    elem_search_word = browser.find_element_by_id("srchtxt")
    elem_search_word.send_keys("半端ないって")
    elem_search_btn = browser.find_element_by_id("srchbtn")
    elem_search_btn.click()

    # 検索結果(Link)を取得 #〜〜はid要素、.〜はclass要素 その他はタグ要素
    links = browser.find_elements_by_css_selector("#WS2m .w .hd h3 a")

    # url取得
    html_output = {}
    for elem in links:
        # マルチバイトがあるのでデコード処理を入れておく
        url = urllib.parse.unquote(elem.get_property("href"))
        title = elem.text
        html_output[title] = '<a href="' + url + '">' + title + '</a><br>'
    write_file(html_output)
    browser.close()

# 取得した結果を画面表示するイメージで、htmlファイルに書き込みます。
def write_file(s):
    with open('search_rank.html', 'w') as f:
        f.write("<html>\n<head>\n")
        f.write("<meta http-equiv='content-type' charset='utf-8'>\n")
        f.write("</head>\n<body>\n")
        for k, v in s.items():
            f.write(k + ":" + v + "\n")
        f.write("</body>\n</html>")
        
# 実行
search()

出力されたHTMLファイル

<html>
<head>
<meta http-equiv='content-type' charset='utf-8'>
</head>
<body>
大迫半端ないってとは (オオサコハンパナイッテとは) [単語記事] - ニコニコ ...:<a href="http://dic.nicovideo.jp/a/大迫半端ないって">大迫半端ないってとは (オオサコハンパナイッテとは) [単語記事] - ニコニコ ...</a><br>
大迫 、ハンパないって!!フルバージョン - YouTube:<a href="https://www.youtube.com/watch?v=pZ2UIYRK5I4">大迫 、ハンパないって!!フルバージョン - YouTube</a><br>
【大流行】「大迫半端ないってゲーム」を作ったら盛り上がりすぎたw - YouTube:<a href="https://www.youtube.com/watch?v=8snezGmNVsE">【大流行】「大迫半端ないってゲーム」を作ったら盛り上がりすぎたw - YouTube</a><br>
大迫はんぱないbot (@osako_hanpa) | Twitter:<a href="https://twitter.com/osako_hanpa">大迫はんぱないbot (@osako_hanpa) | Twitter</a><br>
「大迫、ハンパないって!」発言の滝川二・中西隆裕主将の今 : スポーツ報知:<a href="http://www.hochi.co.jp/soccer/worldcup/CO034053/20180621-OHT1T50032.html">「大迫、ハンパないって!」発言の滝川二・中西隆裕主将の今 : スポーツ報知</a><br>
大迫半端ないって!の続きがさらに公開されたようなので書きおこしてみる ...:<a href="http://nakosan.com/?p=1297">大迫半端ないって!の続きがさらに公開されたようなので書きおこしてみる ...</a><br>
Good loser「半端ないって!!!」の中西隆裕さんの今 - NAVER まとめ:<a href="https://matome.naver.jp/odai/2139995039593566401">Good loser「半端ないって!!!」の中西隆裕さんの今 - NAVER まとめ</a><br>
「大迫半端ないって!」という名言でこの日を約束された未来にしてくれた ...:<a href="http://blog.livedoor.jp/vitaminw/archives/53284800.html">「大迫半端ないって!」という名言でこの日を約束された未来にしてくれた ...</a><br>
3 「大迫、半端ないって〜!」生みの親、職場から異例の ... - 週刊女性PRIME:<a href="http://www.jprime.jp/articles/-/12662">3 「大迫、半端ないって〜!」生みの親、職場から異例の ... - 週刊女性PRIME</a><br>
</body>
</html>

このHTMLファイルをブラウザで開くとこんな感じ

大迫半端ないってとは (オオサコハンパナイッテとは) [単語記事] - ニコニコ ...:大迫半端ないってとは (オオサコハンパナイッテとは) [単語記事] - ニコニコ ...
大迫 、ハンパないって!!フルバージョン - YouTube:大迫 、ハンパないって!!フルバージョン - YouTube
【大流行】「大迫半端ないってゲーム」を作ったら盛り上がりすぎたw - YouTube:【大流行】「大迫半端ないってゲーム」を作ったら盛り上がりすぎたw - YouTube
大迫はんぱないbot (@osako_hanpa) | Twitter:大迫はんぱないbot (@osako_hanpa) | Twitter
「大迫、ハンパないって!」発言の滝川二・中西隆裕主将の今 : スポーツ報知:「大迫、ハンパないって!」発言の滝川二・中西隆裕主将の今 : スポーツ報知
大迫半端ないって!の続きがさらに公開されたようなので書きおこしてみる ...:大迫半端ないって!の続きがさらに公開されたようなので書きおこしてみる ...
Good loser「半端ないって!!!」の中西隆裕さんの今 - NAVER まとめ:Good loser「半端ないって!!!」の中西隆裕さんの今 - NAVER まとめ
「大迫半端ないって!」という名言でこの日を約束された未来にしてくれた ...:「大迫半端ないって!」という名言でこの日を約束された未来にしてくれた ...
3 「大迫、半端ないって〜!」生みの親、職場から異例の ... - 週刊女性PRIME:3 「大迫、半端ないって〜!」生みの親、職場から異例の ... - 週刊女性PRIME


今回、ちょっと躓いた所

Q)chromedriverどこ置いたらええの?

A)パスが通っている所に置いたら大丈夫っぽいので私はanaconda3/binフォルダに置きました。

(参考)パスの確認はターミナルで以下を入力

echo $PATH

今後、リファクタリングしたり、DBにデータを保存したり、別の処理と連携してまた違うことをやってみたいと思います。。

ちなみに、今回このプログラムを思いついたのはクラウドソーシングの案件の中で、「指定したキーワードをyahooで検索して特定の順位のサイトURLを報告する(〜10円程度/件)」というのを見て、これ自動化したらめっちゃ儲かるんじゃね?って思ったから。(動機が不純)結局単価が低いのと、件数にも上限がありそうなので諦めましたが:D)

参考にしたサイト: www.inet-solutions.jp