<selenium, Python> Proxyの設定... Firefoxの場合と、Pyvirtualdisplay

seleniumProxyを指定する方法…Firefoxの場合。
あと、Pyvirtualdisplayで、Firefoxのヘッドレスheadlessをやってみた。

ヘッドレス、、とは、GUI無し。  つまり、うまくいけばtelnetrshで端末から入って、コマンドラインで動かせる。

rom selenium import webdriver
import time
import os
from pyvirtualdisplay import Display

url = 'http://www.yahoo.co.jp'
proxy = webdriver.Proxy()
proxy.proxy_type['string'] = 'AUTODETECT'

with Display(visible=0, size=(800, 600)):
    d = webdriver.Firefox(proxy=proxy)
    d.get(url)
    time.sleep(10)

    print(d.title)
    d.get_screenshot_as_file('{}.png'.format(os.path.basename(__file__)))

    d.quit()

うまくいった。
すばらしい! やったー。

いつもいつもお世話になるスタックオーバフロー。

stackoverflow.com

マニュアル。

https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.proxy.html

PyVirtualDisplay — PyVirtualDisplay 0.2.1 documentation

<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