<Json, jQuery> JSONP

サイトを越えて、すなわち、クロスドメインcloss domainで、
JSONデータを$.getJSON()したいときは、JSONPらしい。

iwb.jp

ふーん。

結局、$.getJSON()先生でなくて、$.ajax()さんでやったんだけど、動いた。

$(function(){
    $.ajax("http://hanage.hana.co.jp/json/return",
        {
            type: "get",
            data: { q: "f" },
            dataType: "jsonp"
        }
    )
    .done(function(data){
        alert("Aha!");
    })
    .fail(function(){
        alert("Boo...");
    });
});

参考。
エラー発見までの過程。。。
対象URLにアクセス。
Google ChromeF12をポチ。
デバックモードで下記を見る。
一番下のエラーメッセージ XMLHttpRequest...ほげほげで、ああー、JSONゲットできなかったんだと知る。

f:id:nekoyukimmm:20170606152241p:plain

<Json, REST API> Json Test

REST APIの実験をかねて、Jsonのデータを返してくれるようなとこないかな? と探したらあった。

http://www.jsontest.com/

こりゃいいや。
早速試す。

In [1]: import requests

In [2]: requests.get('http://echo.jsontest.com/key/value/one/two')
Out[2]: <Response [200]>

In [3]: r = requests.get('http://echo.jsontest.com/key/value/one/two')

In [4]: r.content
Out[4]: b'{\n   "one": "two",\n   "key": "value"\n}\n'

In [5]: import json

In [8]: r.content.decode('utf-8')
Out[8]: '{\n   "one": "two",\n   "key": "value"\n}\n'

In [10]: json.loads(r.content.decode('utf-8'))
Out[10]: {'key': 'value', 'one': 'two'}

いける。 いけるじょー。

<Python> 文字コード

文字コード Character Codesで少し遊んだ。

UTF-8のコード表。

UTF-8コード表(1)

このコード表を元にデコードdecodeしてみる。

In [36]: b'\xe3\x81\x82'.decode()
Out[36]: 'あ'

In [37]: b'\xc3\xa0'.decode()
Out[37]: 'à'

なるへそ。
じゃ、ってことで、エンコードしてみる。

In [38]: 'あ'.encode()
Out[38]: b'\xe3\x81\x82'

ふむふむ。

で、わかりずらかったのがリテラルちゅうやつ。
要はどう表記するか? ということらしい。

アスキー文字ascii君達は、\xで始まるコード記号でスタートしなくても認識してくれるようだ。

In [40]: b'7'.decode()
Out[40]: '7'

In [41]: b'\x37'.decode()
Out[41]: '7'

参考。

qiita.com

uxmilk.jp

マニュアル。

https://docs.python.jp/3/howto/unicode.html#converting-to-bytes

<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