因为三天以来,我试图将各自的start\urs保存在meta属性中,以便将其作为item传递给scrapy中的后续请求,因此我可以使用start_url调用字典来填充输出中的附加数据。实际上它应该很简单,因为它在documentation中有解释。。。在
在google上有一个讨论scrapy group,还有一个问题here,但我无法让它运行:(
我是scrapy的新手,我认为这是一个很棒的框架,但是对于我的项目,我必须知道所有请求的起始url,它看起来很复杂。在
我真的很感激你的帮助!在
目前我的代码如下:
class example(CrawlSpider):
name = 'example'
start_urls = ['http://www.example.com']
rules = (
Rule(SgmlLinkExtractor(allow=('/blablabla/', )), callback='parse_item'),
)
def parse(self, response):
for request_or_item in super(example, self).parse(response):
if isinstance(request_or_item, Request):
request_or_item = request_or_item.replace(meta = {'start_url': response.meta['start_url']})
yield request_or_item
def make_requests_from_url(self, url):
return Request(url, dont_filter=True, meta = {'start_url': url})
def parse_item(self, response):
hxs = HtmlXPathSelector(response)
item = testItem()
print response.request.meta, response.url
我想删除这个答案,因为它不能解决OP的问题,但我想把它作为一个蹩脚的例子。在
Warning:
请改用BaseSpider:
相关问题 更多 >
编程相关推荐