【发布时间】:2013-03-14 02:38:36
【问题描述】:
我想使用 scrapy 解析 kickstarter.com 项目,但不知道如何制作我未在 start_urls 下明确指定的蜘蛛搜索项目。我已经弄清楚了scrapy代码的第一部分(我可以从一个网站提取必要的信息),但我无法让它为域kickstarter.com/projects下的所有项目执行此操作。
根据我的阅读,我相信解析是可能的 (1) 使用起始页面 (kickstarter.com/projects) 上的链接,(2) 使用来自一个项目页面的链接跳转到另一个项目,以及 ( 3) 使用站点地图(我认为 kickstarter.com 没有)来定位要解析的网页。
我已经花了几个小时尝试这些方法中的每一个,但我一无所获。
我使用了scrapy教程代码并在其上构建。
这是目前有效的部分:
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
【问题讨论】:
标签: web-scraping scrapy web-crawler