Webスクレイピング
はじめに
こんにちは.
はんぺんです.
以下の二つの記事を書くときに,WebスクレイピングでNAVERまとめからツンデレ文章を取得させていただきました..
Kerasを用いたディープラーニング(LSTM)で新しいツンデレセリフを生成してみた
この記事ではその方法について説明していきたいと思います.
コードの説明
インポート
1 2 |
import requests from bs4 import BeautifulSoup |
requests
Requestsは、人が使いやすいように設計されていて、Pythonで書かれている Apache2 Licensed ベースのHTTPライブラリです。
BeautifulSoup
Beautiful Soupは、HTMLやXMLファイルからデータを取り出すためのPythonライブラリです。あなたの好きな構文解析を行い、検索し、変更するための慣用的な方法を提供します。プログラマは数時間または数日間の作業を節約します。
(参考を日本語訳)
htmlを取得して必要なクラスを取得
1 2 3 4 5 6 7 8 9 10 11 12 13 |
txt_all = [] for i in range(1,5): # URLの指定 if i == 1: target_url = 'https://matome.naver.jp/odai/2135019121882313701' else: target_url = 'https://matome.naver.jp/odai/2135019121882313701?page='+str(i) r = requests.get(target_url) #requestsを使って、webから取得 soup = BeautifulSoup(r.text, "html.parser") txt = soup.find_all(class_="mdMTMWidget01ItemQuote01View") txt_all.append(txt) sleep(3) #3秒待って次の処理に移る |
1~7行目: 抽出したいページが5つあるので,URLに合わせて書いていきます.
11行目: 必要なクラスを指定して,その部分だけ取り出します.
13行目: 3秒待って次の処理に移行します.連続でリクエストを送ることは好ましくないので,私はいつも3秒待って処理を続行するようにしています.
必要な個所を取得
1 2 3 4 5 6 |
sentence_all = [] for i in range(len(txt_all)): for j in range(len(txt_all[i])): sentence_buf_1 = str(txt_all[i][j]) sentence_buf_2 = sentence_buf_1.replace("<p class=\"mdMTMWidget01ItemQuote01View\"><span class=\"mdMTMWidget01ItemQuote01Ico\"></span><q class=\"mdMTMWidget01ItemQuote01Txt\">", '').replace("</q></p>", "") sentence_all.append(sentence_buf_2) |
<p class=”mdMTMWidget01ItemQuote01View”><span class=”mdMTMWidget01ItemQuote01Ico”></span><q class=”mdMTMWidget01ItemQuote01Txt”>001:あたしツンデレな奴って嫌いなの!・・・あんたは別だけど。</q></p>
このように必要ない部分を含んでいるので,成形していきます.
4行目: 文字列として扱った方が都合がいいので,string型にします.
5行目: 前半の不要な部分と</q></p>を削除します.
すると以下の様になります.
001:あたしツンデレな奴って嫌いなの!・・・あんたは別だけど。
テキストファイルへ保存
1 2 3 4 |
f = open('text.txt', 'w') # 書き込みモードで開く for sentence in sentence_all: f.write(sentence + "\n") f.close() # ファイルを閉じる |
注意点
スクレイピングをする時はいくつかの注意事項があるので,理解しておいた方がよさそうです.
私は以下を読みました.
まとめ
今回はWebスクレイピングについてお話ししました.
自然言語処理をするにあたってWeb上の文章データは非常に有益であり,Webスクレイピングを使うことでそれを効率よく集めることができます.
ぜひお試しください.
参考
Kerasを用いたディープラーニング(LSTM)で新しいツンデレセリフを生成してみた
コメントを残す