Scrapy:如何在进入网站并抓取内容之前抓取链接图像?

时间:2014-05-24 08:07:18

标签: web-crawler scrapy

我最近在学习Scrapy并使用edX.org作为锻炼目标,但遇到了一些困难。

假设我要抓取此页面中的内容: https://www.edx.org/course/edx/edx-edxdemo101-edx-demo-1038#.U4BRta0zD3E

一切正常,除非我不喜欢此页面上的图片,因为它太大了。我发现第https://www.edx.org/course-list页上的列表提供的图像是我想要的,这个URL是我的抓取工具的起始位置。

如何将本课程的第二个URL(课程列表)提供的图像和第一个URL(特定课程信息)中显示的相应课程信息合并为一个项目? Scrapy API中的哪种机制可以帮助我做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用请求的meta功能来传递img网址。

# parse list page
def parse(self, response):

    sel = Selector(response)

    for e in sel.xpath('...'):
        url = e.xpath('...').extract()[0]
        img = e.xpath('...').extract()[0]
        yield Request(url=url, meta={'img':img}, callback=self.parse_item)

# parse detail page
def parse_item(self, response):

    img = response.meta['img']
    title = '...'

    yield YourItem(title=title, img=img)