Section 12 Building Web Crawler with Scrapy

本屋のECサイトスクレイピングする。

プロジェクト環境を整える。 f:id:yukking3:20180515181139p:plain

コードは以下の通り

$ scrapy startproject books_crawler
$ cd books_crawler
$ scrapy genspider books books.toscrape.com/

books.pyのURLを変更する。wwwは取り除くことが注意ポイントである。 wwwがあるとエラーがでることがある。 f:id:yukking3:20180515183708p:plain 実際にwwwを入れてやってみるとtwisted errorがでる。 f:id:yukking3:20180515183810p:plain

インポートする

from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

ルールを追加する。

rules = (Rule(LinkExtractor(), callback='parse_page', follow=True),)   

follow=Trueとする事でLinkExtractorがすべてのURLを取得して、Next PgaeのURLも取得する。もしすでに取得した情報がある場合は2回目は取得しない。
follow=Trueとした場合は、最初のページのみのURLを収拾する。

callback='parse_pageでは、取得したページ内のすべてのURLを取得します。

Ruleにdeny_domainを追加すると、そのドメインのページだけ取得はしなくなる。 f:id:yukking3:20180515185838p:plain

逆にURLにMusicが含まれるページのみをスクレイピングする事もできる。 f:id:yukking3:20180515190201p:plain f:id:yukking3:20180515190134p:plain