【スクレイピング】URLを抜き出す

スクレイピング
スクレイピング準備記事

【やりたいこと】URLを抜き出す練習したい!

WebページからURLを抜き出す方法は、色々紹介しましたね。

今回は、スクレイピングで使用するcssselectの練習記事です。「こんな方法でスクレイピングしてるよ」って記事ですね。

では、さっそく、スクレイピングしていきましょう!

【10分でできる】cssselectに慣れよう!

※ダウンロード時間は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

Tera Term (テラターム) プロジェクト日本語トップページ - OSDN
Tera Term は、オリジナルの Tera Term Pro 2.3 の原作者公認の後継版です。オープンソースで開発されており、UTF-8 表示に対応しています。 また、SSH1 対応モジュール TTSSH を拡張し、SSH2 プロトコルをサポートしています。

・Python3.4

・lxml

2.手順

※下記の記事の内容を完了しているものとして、進めていきます。

①Webページの検証

本サイトのトップページから、記事を右クリックします。

検証をクリックします。

記事のURLが含まれる文字列を確認します。

確認した結果、a要素にclass属性とtitle属性といっしょに記事のURLが含まれていることが分かります。

②Pythonスクリプトファイルの作成

import requests
import lxml.html

response = requests.get('https://hk-ryukyu.club/hideto/')
root = lxml.html.fromstring(response.content)
for a in root.cssselect('a[class="entry-card-wrap a-wrap cf"]'):
url = a.get('href')
print(url)

Pythonクローリング&スクレイピング サンプルコードpython_crawler_1参考

上記のスクリプトを作成します。着目してほしい点は、以下の1つです。

('a[class="entry-card-wrap a-wrap cf"]')

複数あるa要素の中で、「class=”entry-card-wrap a-wrap cf”」を属性に持つa要素を取得しています。

そうすることで、記事以外のURLを取得しないようになります。

③実行

②で作成したスクリプトを実行しました。

記事タイトルが表示されていないので、分かりづらいですが、

記事のURLだけを抽出することに成功しています。

3.追記

cssselectの使い方に慣れてきましたか。

正規表現が文字列の細かいパターンを取得するために使うのに対して、

cssselectは、要素や属性など大きな枠組みを取得するのに向いていそうですね。

【最後に】参考図書の紹介

以下の書籍は、私がPythonスクレイピングを勉強するにあたって、使用した書籍です。

「Python逆引き大全」は、秀和システムの技術書読み放題サービス「10×Eng」で読めます。最初の2週間は無料、それ以降は、月額900円で利用できます。

「プログラミング超初心者が初心者になるためのPython入門」はkindle unlimitedで読めます。

 

コメント

タイトルとURLをコピーしました