kuroの覚え書き

96の個人的覚え書き

Pythonのスクリプトをデスクトップアプリ化する

自分で作成したアプリを自分の環境において使う分にはコマンド操作で全然問題ないが、人にわたして使ってもらうとなると
モジュール等揃えてインストールしてもらって・・・となかなかハードルが高くなる。
なので簡単にデスクトップアプリ化できるならそれに越したことはない。

ということでpy2appというのを試してみた。

結論から言うと、
Python3は動かないコードがある。基本Python2で動くコードで作っておく。
そのためにUnicodeがらみは要注意。
外部のファイルと入出力する際はPATHを考えて書く必要がある。(スクリプト本体はapp/Contents/MacOS/以下に入る。)
という感じだ。

import csv, requests, bs4

with open('../../../input.csv', 'r') as f:
    reader = csv.reader(f)
    f2 = open('../../../output.txt', 'w')
    f2.write('Google csv scraping results\n')

    for row in reader:
        row2 = '+'.join(row)
        a = 'http://www.google.co.jp/search?as_q='
        b = '&as_epq=&as_oq=&as_eq=&as_nlo=&as_nhi=&lr=&cr=&as_qdr=all&as_sitesearch=&as_occt=any&safe=active&as_filetype=&as_rights='
        c = a + row2 + b

        r = requests.get(c)
        r.raise_for_status()
        r2 = r.text.encode('utf-8')

        soup = bs4.BeautifulSoup(r2, "html.parser")
        r3 = soup.select('.g')

        f2 = open('../../../output.txt', 'a')
        f2.write('--------------------\n')
        f2.write(row2)
        f2.write('\n')
        f2.write('--------------------\n')
        for r4 in r3:
            f2.write((u'{}'.format(r4.getText())).encode('utf-8'))
            f2.write('\n\n')
            f2.write('+++++++++++++++++++\n')
        f2.write('\n')
        f2.close()