スクレイピング準備記事

【スクレイピング】仮想マシンの起動
【やりたいこと】仮想マシンを起動させたい! 今回は、初めてのスクレイピング記事になります。 スクレイピング記事の大まかな流れとしては、 仮想マシンを構築→スクレイピング 以上の流れで進めていきます。 今回は、1記事...

【スクレイピング】仮想マシンでPythonスクリプトファイルの実行
【やりたいこと】Pythonスクリプトファイルを仮想マシンで実行させたい! 前回の記事「【スクレイピング】仮想マシンの起動」の続きです。 ホストOSでPythonスクリプトファイルを実行するには、そのファイルがあるフォルダに...
関連記事
【やりたいこと】複数の記事ページを取得したい!
前回は、トップページから1つの記事をスクレイピングしました。
今回は、トップページにあるすべての記事をスクレイピングしてみましょう。
【10分でできる】サーバーの負担に注意!
※ダウンロード時間は10分の中に含まれていません。
1.使用したもの
・Virtual box
Oracle VM VirtualBox
・Vagrant

Vagrant by HashiCorp
Vagrant enables users to create and configure lightweight, reproducible, and portable development environments.
・Term Term
https://ja.osdn.net/projects/ttssh2/
・Python3.4
2.手順
※下記の記事の内容を完了しているものとして、進めていきます。

【スクレイピング】仮想マシンの起動
【やりたいこと】仮想マシンを起動させたい! 今回は、初めてのスクレイピング記事になります。 スクレイピング記事の大まかな流れとしては、 仮想マシンを構築→スクレイピング 以上の流れで進めていきます。 今回は、1記事...

【スクレイピング】仮想マシンでPythonスクリプトファイルの実行
【やりたいこと】Pythonスクリプトファイルを仮想マシンで実行させたい! 前回の記事「【スクレイピング】仮想マシンの起動」の続きです。 ホストOSでPythonスクリプトファイルを実行するには、そのファイルがあるフォルダに...

【スクレイピング】記事ページからスクレイピング
スクレイピング準備記事 【やりたいこと】記事ページをスクレイピングしたい! 今までは、ブログのトップページからスクレイピングを行ってきました。 今回は、トップページから1記事選び、その記事のURL・タイ...
①Pythonスクリプトファイルの作成
import time # timeモジュールをインポートする。 import re import requests import lxml.html def main(): session = requests.Session() response = session.get('https://hk-ryukyu.club/hideto/') urls = scrape_list_page(response) for url in urls: time.sleep(1) # 1秒のウェイトを入れる response = session.get(url) page = scrape_detail_page(response) print(page) def scrape_list_page(response): root = lxml.html.fromstring(response.content) root.make_links_absolute(response.url) for a in root.cssselect('a[class="entry-card-wrap a-wrap cf"]'): url = a.get('href') yield url def scrape_detail_page(response): """ 詳細ページのResponseから記事の情報をdictで取得する。 """ root = lxml.html.fromstring(response.content) page = { 'url': response.url, # URL 'title': root.cssselect('h1[class="entry-title"]')[0].text_content(), # タイトル 'content': root.cssselect('div[class="toc-content"]')[0].text_content(), # 目次 } return page # dictを返す。 if __name__ == '__main__': main()Pythonクローリング&スクレイピング サンプルコードpython_crawler_6.pyを参考 ※一部変更
上記のスクリプトを作成します。着目してほしい点は、以下の2つです。
1.
前回のスクリプトからbreakが削除されている
2.
time.sleep(1) # 1秒のウェイトを入れる
【1解説】
前回のスクリプトでは、main()関数のfor文にbreak文を記入することで、1つの記事のみスクレイピングしていました。
今回は、トップページに表示されているすべての記事をスクレイピングするため、break文を削除しています。
【2解説】
サーバーに負担がかからないように、1秒間のインターバルをとっています。
②実行
①で作成したスクリプトファイルを実行した結果、
複数の記事ページのURL・タイトル・目次を取得することができました。
3.追記
次は、MongoDBに保存してみます!
【最後に】参考図書の紹介
以下の書籍は、私がPythonスクレイピングを勉強するにあたって、使用した書籍です。
「Python逆引き大全」は、秀和システムの技術書読み放題サービス「10×Eng」で読めます。最初の2週間は無料、それ以降は、月額900円で利用できます。
「プログラミング超初心者が初心者になるためのPython入門」はkindle unlimitedで読めます。
コメント