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_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'