Python Scrapy未下载图像和获取管道错误

Python Scrapy未下载图像和获取管道错误,python,scrapy,Python,Scrapy,我有这个密码 class MyImagesPipeline(ImagesPipeline): def get_media_requests(self, item, info): for image_url in item['image_urls']: yield Request(image_url) 这是BaseSpider中的spider子类。这只蜘蛛给了我噩梦 def parse(self, response): h

我有这个密码

class MyImagesPipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
            for image_url in item['image_urls']:
                yield Request(image_url)
这是BaseSpider中的spider子类。这只蜘蛛给了我噩梦

def parse(self, response):

    hxs = HtmlXPathSelector(response)
    sites = hxs.select('//strong[@class="genmed"]')
    items = []


    for site in sites[:5]:

        item = PanduItem()
        item['username'] = site.select('dl/dd/h2/a').select("string()").extract()
        item['number_posts'] = site.select('dl/dd/h2/em').select("string()").extract()
        item['profile_link'] = site.select('a/@href').extract()



        request =  Request("http://www.example/profile.php?mode=viewprofile&u=5",
        callback = self.parseUserProfile)
        request.meta['item'] = item
        return request


这就是我得到的错误。我找不到。看起来它得到的项目,但我不确定

ERROR

File "/app_crawler/crawler/pipelines.py", line 9, in get_media_requests
            for image_url in item['image_urls']:
        exceptions.TypeError: 'NoneType' object has no attribute '__getitem__'

嗯。您在任何情况下都不会将
附加到
(尽管文档中的示例代码也没有附加,所以我可能是找错了树)

尝试将其添加到
parse(self,response)
中,类似这样,看看这是否解决了问题:

for site in sites:
    item = PanduItem()
    item['username'] = site.select('dl/dd/h2/a').select("string()").extract()
    item['number_posts'] = site.select('dl/dd/h2/em').select("string()").extract()
    item['profile_link'] = site.select('a/@href').extract()

    items.append(item)

并将图像存储设置设置为用于存储下载图像的有效目录。否则,管道将保持禁用状态,即使您将其包括在“项目\管道”设置中

例如:

IMAGES_STORE = '/path/to/valid/dir'

您的pipelines.py中缺少一个方法 所述文件包含3种方法:

  • 过程项
  • 获取媒体请求
  • 项目(u)已完成
item_completed方法是处理将图像保存到指定路径的方法。此路径在settings.py中设置如下:

ITEM_PIPELINES = ['scrapy.contrib.pipeline.images.ImagesPipeline']
IMAGES_STORE = '/your/path/here'
如上所示,settings.py中还包括启用imagepipeline的行


我试着用我能理解的最好的方式来解释它。为了进一步的参考,请看一下官方的剪贴簿。

你也可以发布你的完整erorr吗?在
parseUserProfile
中,打印图像\u绝对\u url,看看它是否真的包含任何内容。它有这个
[u'http://www.example.com/images/12.gif“]
@Talvlin My Friend你上网了吗,我没有什么问题,我很快就要发帖了。恐怕今晚是圣诞派对,但我今晚晚些时候或明天早上会在线。你能把你所有的代码都发到Pastebin或类似的地方吗?我已经设法让一个正常的管道工作(好吧,至少到了它试图下载和镜像然后失败的地步),所以我不确定这里出了什么问题。我尝试了所有方法,但我没有让管道工作。看起来项目对象未到达管道。它不仅是图像管道,甚至是普通管道都有相同的错误。爬行是可以的,其他一切都可以,但我的物品没有到达我的管道
ITEM_PIPELINES = ['scrapy.contrib.pipeline.images.ImagesPipeline']
IMAGES_STORE = '/your/path/here'