基本的に、以下のコードはテーブルの最初の 5 項目をスクレイピングします。フィールドの 1 つは別の href であり、その href をクリックすると、収集して元のアイテムに追加したい詳細情報が表示されます。そのため、次のビットをスクレイピングし、完成したアイテムをに戻す必要があるparse
半実装アイテムを渡すことになっていますparse_next_page
item
parse
以下のコードを実行すると、で収集された情報のみが返されます。parse
を に変更するreturn items
とreturn request
、3 つの「もの」すべてを含む完了したアイテムが得られますが、5 つすべてではなく、1 つの行しか得られません。見てください。
class ThingSpider(BaseSpider):
name = "thing"
allowed_domains = ["somepage.com"]
start_urls = [
"http://www.somepage.com"
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
items = []
for x in range (1,6):
item = ScrapyItem()
str_selector = '//tr[@name="row{0}"]'.format(x)
item['thing1'] = hxs.select(str_selector")]/a/text()').extract()
item['thing2'] = hxs.select(str_selector")]/a/@href').extract()
print 'hello'
request = Request("www.nextpage.com", callback=self.parse_next_page,meta={'item':item})
print 'hello2'
request.meta['item'] = item
items.append(item)
return items
def parse_next_page(self, response):
print 'stuff'
hxs = HtmlXPathSelector(response)
item = response.meta['item']
item['thing3'] = hxs.select('//div/ul/li[1]/span[2]/text()').extract()
return item