【Scrapy初心者】最初につまずいたとこ
インストールは簡単にできたのだが、pythonで起動させようとファイルを追加した際にごちゃごちゃになったので、その整理図
Scrapyを起動させるまでは、多数他のブログあるので探してみてください。
https://doc-ja-scrapy.readthedocs.io/ja/latest/intro/tutorial.html
ファイルの関係値
crawl.py
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
process = CrawlerProcess(get_project_settings())
# 'followall' is the name of one of the spiders of the project.
process.crawl('quotes', domain='quotes.toscrape.com')
process.start() # the script will block here until the crawling is finished
process.crawl()のなかに、2つ指定しているがこれが
quotes_spider.pyのファイルに記載されているとこと連動が必要。
scrapy crawl quotes
本来、コマンドでは↑の役割をPythonでさせていると考えるとわかりやすい。quotesはスパイダーの名前ということになる。※「スパイダー名」
quotes_spider.pyの中は?
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
def start_requests(self):
urls = [
'http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
nameとあるが、ここに先程のスパイダー名が記述されている。
あとはURLの指定をする箇所として urls 注意点は単体とし投げている変数は urlですね。
最後に重要なのは、class名 の「QuotesSpider」
さぁスパイダーを実行してみよう
cmdでやるときと、pythonでやるときで異なる。まずは、cmdでやる際には立ち上げたのち、「quotes_spider.py」があるディレクトリまで移動して実行しなければならない。
scrapy crawl quotes
こちらでエンターを押せば起動するはず。
settings.pyに下記が記述されていないと、おそらく、スパイダーがどこにあるか?示しているとおもう。消すとスパイダーを探せなくエラーがでる。
SPIDER_MODULES = ['ten_min_scrapy.spiders']
NEWSPIDER_MODULE = 'ten_min_scrapy.spiders'
これでhtmlのサイトであればみることが可能。
ではPythonで起動させるには?
crawl.py これがpythonで起動させるファイルで名前はなんでも大丈夫。
冒頭でも記載しているが、同じものをこちらでも掲載
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
process = CrawlerProcess(get_project_settings())
# 'followall' is the name of one of the spiders of the project.
process.crawl('quotes', domain='quotes.toscrape.com')
process.start() # the script will block here until the crawling is finish
これを開発環境上から実行すれば、同じ挙動になるはずである。
次回予定:
次回はは、スクレイピングの肝であるパースをどうするか?
パースとは、プログラムのソースコードやXML文書など、一定の文法に従って記述された複雑な構造のテキスト文書を解析し、プログラムで扱えるようなデータ構造の集合体に変換することである。
パースを行うためのプログラムの総称を「パーサ/パーザ」という。
(Proto Solutionより)
HTMLに詳しくなく、イチから調べていますがまだ整理できそうにないw
一番難解なのは、これでhtmlが取得できない動的ページ。
や利用はあるみたいだが、初心者には非常に難しい。。
まずは、基礎的なパースを試してみて整理をしてみます。