因为三天以来,我试图将各自的 start_urs 保存在元属性中,以将其作为项目传递给 scrapy 中的后续请求,因此我可以使用 start_url 调用字典来用其他数据填充我的输出。实际上它应该很简单,因为它在文档中进行了解释......
google scrapy 组中有一个讨论,这里也有一个问题,但我无法让它运行:(
我是scrapy的新手,我认为它是一个很棒的框架,但是对于我的项目,我必须知道所有请求的start_urls,它看起来很复杂。
我真的很感激一些帮助!
目前我的代码如下所示:
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