ASKfmからテキストをスクレイピングする
※本記事は直接DeepLearningとは関係ありません
最近DeepLearningの学習をしており、TensorFlowのチュートリアルのseq2seqをいじり、会話応答できるものを実装してみました。
ただ、日本語の会話データなんてどこにもないよ。。。となり、スクレイピングして集めることにしました。
実装してみる
実際のソースコードは下記にあります。
https://github.com/ryosuke1217/askfm_q-a_scraper/blob/master/askfm.py
seleniumを使ってChromeからスクレイピングします。
askfm.py
driver = webdriver.Chrome()
driver.get("https://ask.fm/" + word)
wordには取得したいURLの「ask.fm/」以降をコマンドラインから渡してあげます。
askfm.py
while True:
scroll_h = driver.execute_script("var h = window.pageYOffset; return h")
judge = driver.execute_script("var m = window.pageYOffset; return m")
previous_h = driver.execute_script("var h = window.pageYOffset; return h")
#スクロール
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
sleep(3)
after_h = driver.execute_script("var h = window.pageYOffset; return h")
if previous_h == after_h:
break
print('load complete')
スクロールしながら画面の高さを取得し、変化がなくなるまで続けることで、
最下層までスクロールできます。
askfm.py
questions = driver.find_elements_by_class_name("streamItemContent-question")
answers = driver.find_elements_by_class_name("answerWrapper")
qas = [(q.find_element_by_tag_name('h2').text, a.find_element_by_tag_name('p').text) for q, a in zip(questions, answers)]
画面のHTMLソースのから質問と回答の部分を集めます。
askfm.py
with codecs.open('data/askfm_data_' + word + '.txt', 'w', 'utf-8') as f:
for q, a in qas:
if q == '' or a == '' or 'http' in q or 'http' in a:
continue
q = q.replace('\n', '')
a = a.replace('\n', '')
f.write(q)
f.write('\n')
f.write(a)
f.write('\n')
f.write('\n')
driver.quit()
あとはデータを必要な形に整理し、ファイルに書き出して終了です。
実行してみた
askfm_data_partyhike.txt
若いときの浜崎あゆみはリア充オーラが 大嫌いでしたが 最近の浜崎あゆみはむしろブルースを感じるんですよね
ブルースじゃなくて、デブースじゃないの?
就職活動つかれました。何かアドバイスください、、
この時期の頑張りが残りの人生の90%を決めるんだから、多少無理をしても諦めずに走り続けた方がいいよ。たかだか数か月で、残りの数十年が決まると考えれば頑張れるはずだよ。
たまに飲みのゆる募されていますが、毎回大体何人くらいの方が参加されますか?
男女問わず差しでしか飲まないよ。複数でやると盗撮したり2ちゃんねるに個人情報を書いたりとかする輩が混じるからね。あと毎回5~10人DMを貰うけど、信用できそうな人からはあまり来ないから成立しないことの方が多いよ。
駆け落ちしてみたいと思いませんか?
思わないね。
唇と唇目と目と手と手神様は何も禁止なんかしてない?
愛してる~×3
おじさんは通勤電車で痴漢冤罪対策をなにかされていますか?
僕は出社が遅いから満員電車に乗ることはほぼないんだけど、たまに乗ったら両手でつり革につかまって完全防御するよ。
・
・
以下膨大なので省略
会話というよりは質問と回答のテキストですが、
うまいこと使おうと思うのでよしとします。
以上、見ていただいてありがとうございました。