2 flat logo on transparent 256
2018-04-07

Scrapyで相対パスを絶対パスに変更する

L9832131

プログラミング言語のPythonのフレームワークScrapyは サイトのスクレイピングに特化した、フレームワークになります。

今回URLをスクレイピングする際に相対パスを絶対パスに変更する際の解説を行います。

そもそも絶対パスとは

https:// から始まるURLを指します。 ブラウザにコピーして貼り付ければ、ページへアクセスできます。

https://programming-beginner-zeroichi.jp/articles/77

そもそも相対パスとは

絶対パスのドメイン部分(https://○○)を省略したURLになります。

相対パスをコピーしてブラウザに貼り付けてもアクセスできません。

<a href="/articles/77">

ここではなぜ2つの記載方法があるかは割愛しますが、 スクレイピングする際は必ず、絶対パスか相対パスかを確認する必要があります。相対パスをスクレイピングする際はドメインを付与しなければ、正しく情報を取得する事ができなくなります。

.urljoinメソッドを利用する

Scrapyで相対パスを絶対パスに変更するのは非常に簡単で、 パースしたいURLの後ろにurljoinを記載する事で相対パスを絶対パスに変更する事ができます。

コード例

import scrapy

class TestSpider(scrapy.Spider):
    name = "test_spider"
    allowed_domains= "http://toyokeizai.net/'"
    start_urls = [
        'http://toyokeizai.net/'
    ]

    def parse(self, response):
        for test in response.css('span.shoulder'):
            #response.urljoinでstart_urlsのドメインを取得
            yield {
                'a': response.urljoin(test.css('a::attr(href)').extract_first()),
            }

以上になります。

その他関連記事

BeautifulSoupとpython3を利用し、画像をスクレイピングしてローカルに保存する

前の記事
次の記事