かれこれ、平日夜と週末とでPythonプログラミング歴3ヶ月くらいになってきたわけですが、楽しく引き続きやっています。
最近やったことは、
1,形態素解析
・データをMecabに放り込んで、名詞のみで絞り込んで頻度算出、その後ユーザー辞書追加して再度やってみるという流れを掴んでおきたかったのでちょっとやってみた
・すぐに出来たので特に内容は記載しません。。。
【参考にさせていただいたサイト】
http://qiita.com/fantm21/items/d3d44f7d86f09acda86f
http://qiita.com/naoyu822/items/473756fb8e8bbdc4d734
http://www.mwsoft.jp/programming/munou/mecab_command.html
http://shimz.me/blog/d3-js/2711
2,スクレイピング
・テキストや画像など、スクレイピングは業務に関係することが非常に多いので、ある程度勉強したいなと思い今回は書籍から入ってみた
https://www.amazon.co.jp/dp/4873117615
・まずはPython+Beautiful Soupで単ページで構造が分かりやすいものはさくっととれるということがよく分かった
・次いで、JSで生成されてるサイトは単に上記組み合わせでは難しく、PhantomJS、CasperJSってのがあってJSで書いてスクレイピングすることで、これまたさくっととってこれるということが分かった
・その後、PythonでもSelenium+PhantomJSという組み合わせで、JSで生成されるwebサイトをスクレイピングできることが分かった
・とりあえず最後のコードのPandasのDataframeでcsv化しようとした時に、UnicodeEncodeErrorが出続けてはまりまくったけど、Dataframeでcsv化するところにencodeの指定を入れて解決というなんだかなという結末で、とりあえずやりたいことが実現出来た
【参考にさせていただいたサイト】
http://doz13189.hatenablog.com/entry/2016/08/21/154219
http://zipsan.hatenablog.jp/entry/20150413/1428861548
http://qiita.com/okadate/items/7b9620a5e64b4e906c42
単に参考にさせていただいたサイトのソースをコピペで組み合わせさせていただいてるだけですが、以下のようなソースでやりました。。。
import lxml.html
from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
import time
aaa = []
bbb = []
ccc = []
for page in range(1,2): # ページの上限は適宜設定
driver = webdriver.PhantomJS()
driver.get("https://www.~~=page=" + str(page))
data = driver.page_source.encode('utf-8')
soup = BeautifulSoup(data, "lxml")
for o in soup.findAll("h3", class_="hoge"):# よく見かけるけど、なんでみんなhogeってするんだろう?
aaa.append(o.string)
for o1 in soup.findAll("h3", class_="hoge"):# なんでhoge?
bbb.append(o1.string)
for o2 in soup.findAll("div", class_="hoge"):# なん...?
ccc.append(o2.get_text())
time.sleep(3)
df = pd.DataFrame({"aaa":aaa, "bbb":bbb, "ccc":ccc})
print(df)
df.to_csv("hogehoge.csv", index=False, encoding='utf-8')
driver.quit()
よく分からず書いてるところ多々ありますが、とりあえず動いた。
引き続き勉強していきます。