基本上,下面的代码会抓取表格的前 5 个项目。其中一个字段是另一个href,单击该href 提供了我想要收集并添加到原始项目的更多信息。所以parse
应该传递半填充的项目parse_next_page
,然后刮下一个位,并将完成的item
返回给parse
运行下面的代码仅返回收集的信息parse
如果我将其更改return items
为return request
我得到一个包含所有 3 个“事物”的完整项目,但我只得到 1 行,而不是全部 5 行。我确定它很简单,我就是不能看见。
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