読者です 読者をやめる 読者になる 読者になる

<jQuery, Flickr> getJSONの使い方と、Flickr APIを少し、、

getJSONの使い方がようようわかったので、メモ。

$.getJSON( url [, data] [, success(data, textStatus, jqXHR)] )

この書式で、successは、getの実行結果が返ってくる。
ここがなかなか、わかりずらかったなり。
まさか、実行結果も引数の中に置いておくとは思わなかった。。。

わかりやすいイメージは、下記。

success = getJSON(url, data)

ここで勉強。

$.getJSON() | jQuery 1.9 日本語リファレンス | js STUDIO

$.each() | jQuery 1.9 日本語リファレンス | js STUDIO

$.eachを少し確認してみた。

https://jsfiddle.net/fjjrgsbL/

<httpie, msys2> curlじゃなくて、httpieだそうです。

なういのは、curlじゃなくて、httpieだそうです。

>pip install httpie

で、

>http GET www.yahoo.co.jp

、、、待ってども、何もおこらず、、、

ちとググると、msys2では、--ignore-stdinのおまじないがいるらしい。

>http --ignore-stdin GET www.yahoo.co.jp

動いた。

qiita.com

github.com

<Python, pandas, Beautiful Soup> html tableからpandas dataframeへ。

html中にあるtableから、pandas dataframeを作る。
<tr> <td>タブとかを、ちくちくと、Beautiful Soupでパースしないといけないのか、、、
いやいや、そんな面倒なことは、誰かが、既に何かを作っているはず、、と思ってたら、あった。

pd.read_html()でいける。ちょー楽。

In [1]: import pandas as pd

In [2]: lst = pd.read_html('http://stocks.finance.yahoo.co.jp/stocks/history/?code=998407.O', flavor='bs4')

In [3]: lst[0].head()
Out[3]: 
        0   1         2                  3
0  日経平均株価 NaN  19871.96  前日比-23.74(-0.12%)

In [4]: lst[1].head()
Out[4]: 
            0         1         2         3         4
0          日付        始値        高値        安値        終値
1   20175819709.01  19929.48  19705.13   19895.7
2   20175219335.72   19464.3  19335.02   19445.7
3   20175119154.03  19311.21  19144.62  19310.52
4  201742819240.65  19264.57  19164.68  19196.74

すげー。

qiita.com

sinhrks.hatenablog.com

<Python, selenium> ブラウザのウインドウを切り替える。

レニウムseleniumを使ってる時に、ブラウザbrowserのウインドwindowを切り替える技。

.window_handlesアトリビュートに、Window Idが入っているので、
それを、.switch_to_window()メソッドで指定する。

In [93]: from selenium import webdriver

In [94]: d = webdriver.Chrome()

In [97]: d.get(url)

In [98]: d.window_handles
Out[98]: 
['CDwindow-c9388392-a2af-4698-85bc-06bc1c51e4e9',
 'CDwindow-f5edab75-8c6b-4580-9e4b-46353a364058']

In [99]: w = d.window_handles

In [101]: d.switch_to_window(w[1])

stackoverflow.com

<Python, iPython, Jupyter> Historyをファイルに保存する。

iPythonで、ちょろちょろ実行した結果のhistoryをファイルに保存saveする。

In [170]: %history -f aaa.py

File 'aaa.py' exists. Overwrite? y
Overwriting file.

29個目の回答がそれだった。 さんきゅー。

stackoverflow.com

<Python, selenium> 空白のあるクラス名を選択するには、、

Seleniumで、空白のあるクラス名を選択するには、、、 how to select the class name having a blank in it?

まずは、xpathを使う。

In [133]: from selenium import webdriver

In [144]: d = webdriver.Chrome()

In [145]: d.get('http://nekoyukimmm.hatenablog.com/entry/2017/04/27/164336')

In [146]: d.find_element_by_xpath('//*[@id="box2-inner"]/div[3]')
Out[146]: <selenium.webdriver.remote.webelement.WebElement (session="a489f57900d9be9af6a6356176a89bd9", element="0.23540204403336795-1")>

In [148]: d.find_element_by_xpath('//*[@id="box2-inner"]/div[3]').text
Out[148]: 'カテゴリー\nselenium (2) Python (305) sentdex (2) pandas (86) Office2016 (1) numpy (7) pyplot (4) Javascript (15) jQuery (11) JSFiddle (3) flask (26) Vim (62) gspread (2) requests (2) Json (7) Google Cloud Platform (4) dos (5) conda (7) Github (11) msys2 (21) Anaconda (5) handsontable (1) Bootstrap (1) Google App Engine (5) Windows (24) matplotlib (27) seaborn (12) ATOM (5) datetime (2) SQLite (7) peewee (2) Apache (1) Beautiful Soup (7) Visual Studio (1) Linux (29) ftp (1) Werkzeug (1) html (11) tqdm (1) Unix Command (2) ssh (2) zsh (10) iPython (22) pacman (4) Cheatsheet (5) css (5) regexp (8) jinja (2) highcharts (8) socket (2) mermaid (2) Markdown (7) CDN (1) Bash (20) Network (2) Outlook (3) Pygments (1) Web (1) tmux (2) pip (5) Solarized (4) KDE (1) mintty (2) Putty (1) Go (2) peco (2) dotfiles (1) Jupyter (5) VBA (5) Excel (7) Surfingkeys (2) NeoBundle (2) SystemVerilog (1) x240 (4) MinGW+mintty (8) Sphinx (2) X (2) japandas (1) urllib (2) readability-lxml (2) html2text (1) Chrome (2) plotly (4) statistics (1) Office2013 (4) cron (1) bokeh (1) pptx (4) PIL (2) pdb (1) docopt (1) cgi (1) Jedi (4) XML (1) mpld3 (2) tput (1) iconv (1) mutt (1) Vundle (1) sed (1) Gow (2) ggplot (1) Perl (3)'

で、find_element_by_class_nameをしてみる。
ゲロ、、エラー。

In [155]: d.find_element_by_class_name('hatena-module hatena-module-category')
---------------------------------------------------------------------------
InvalidSelectorException                  Traceback (most recent call last)

その場合は、find_element_by_xpathで、div[@class='hage hage']とするらしい。

In [157]: d.find_element_by_xpath('//div[@class="hatena-module hatena-module-category"]')
Out[157]: <selenium.webdriver.remote.webelement.WebElement (session="a489f57900d9be9af6a6356176a89bd9", element="0.23540204403336795-1")>

In [158]: d.find_element_by_xpath('//div[@class="hatena-module hatena-module-category"]').text
Out[158]: 'カテゴリー\nselenium (2) Python (305) sentdex (2) pandas (86) Office2016 (1) numpy (7) pyplot (4) Javascript (15) jQuery (11) JSFiddle (3) flask (26) Vim (62) gspread (2) requests (2) Json (7) Google Cloud Platform (4) dos (5) conda (7) Github (11) msys2 (21) Anaconda (5) handsontable (1) Bootstrap (1) Google App Engine (5) Windows (24) matplotlib (27) seaborn (12) ATOM (5) datetime (2) SQLite (7) peewee (2) Apache (1) Beautiful Soup (7) Visual Studio (1) Linux (29) ftp (1) Werkzeug (1) html (11) tqdm (1) Unix Command (2) ssh (2) zsh (10) iPython (22) pacman (4) Cheatsheet (5) css (5) regexp (8) jinja (2) highcharts (8) socket (2) mermaid (2) Markdown (7) CDN (1) Bash (20) Network (2) Outlook (3) Pygments (1) Web (1) tmux (2) pip (5) Solarized (4) KDE (1) mintty (2) Putty (1) Go (2) peco (2) dotfiles (1) Jupyter (5) VBA (5) Excel (7) Surfingkeys (2) NeoBundle (2) SystemVerilog (1) x240 (4) MinGW+mintty (8) Sphinx (2) X (2) japandas (1) urllib (2) readability-lxml (2) html2text (1) Chrome (2) plotly (4) statistics (1) Office2013 (4) cron (1) bokeh (1) pptx (4) PIL (2) pdb (1) docopt (1) cgi (1) Jedi (4) XML (1) mpld3 (2) tput (1) iconv (1) mutt (1) Vundle (1) sed (1) Gow (2) ggplot (1) Perl (3)'

できた。

さんくー、スタックオーバーフロー。

stackoverflow.com

<Python, selenium> Chromeを動かしてみた。

ちょと、seleniumを試す。

>pip install selenium

で、下記から、chromedriver.exeをゲットする。

sites.google.com

そいつをパスpathが通っている、/usr/local/binに放り込む。

で、

In [1]: from selenium import webdriver

In [6]: d = webdriver.Chrome()

In [7]: d.get('http://www.yahoo.co.jp')

In [9]: d.quit()

お、動く。

Selenium - Web Browser Automation