スクレイピーを使用して kickstarter.com プロジェクトを解析したいのですが、start_urls で明示的に指定していないスパイダー検索プロジェクトを作成する方法がわかりません。スクレイピー コードの最初の部分を理解しました (1 つの Web サイトから必要な情報を抽出できます)。ドメイン kickstarter.com/projects の下のすべてのプロジェクトに対してこれを実行することはできません。
私が読んだことから、(1) 開始ページ (kickstarter.com/projects) のリンクを使用する、(2) あるプロジェクト ページからのリンクを使用して別のプロジェクトにジャンプする、および (3) を使用して解析が可能であると信じています。解析する Web ページを見つけるためのサイト マップ (kickstarter.com にはないと思います)。
これらの各方法を何時間も試してみましたが、どこにも行きません.
私はスクレイピーのチュートリアル コードを使用し、その上に構築しました。
これまでのところ動作する部分は次のとおりです。
from scrapy import log
from scrapy.contrib.spiders import CrawlSpider
from scrapy.selector import HtmlXPathSelector
from tutorial.items import kickstarteritem
class kickstarter(CrawlSpider):
name = 'kickstarter'
allowed_domains = ['kickstarter.com']
start_urls = ["http://www.kickstarter.com/projects/brucegoldwell/dragon-keepers-book-iv-fantasy-mystery-magic"]
def parse(self, response):
x = HtmlXPathSelector(response)
item = kickstarteritem()
item['url'] = response.url
item['name'] = x.select("//div[@class='NS-project_-running_board']/h2[@id='title']/a/text()").extract()
item['launched'] = x.select("//li[@class='posted']/text()").extract()
item['ended'] = x.select("//li[@class='ends']/text()").extract()
item['backers'] = x.select("//span[@class='count']/data[@data-format='number']/@data-value").extract()
item['pledge'] = x.select("//div[@class='num']/@data-pledged").extract()
item['goal'] = x.select("//div[@class='num']/@data-goal").extract()
return item