TypeError:不可用类型' list'尝试按链接

时间:2017-09-24 22:56:53

标签: python xpath lxml python-2.x

尝试按链接保存文件,但面对TypeError: unhashable type: 'list'

import requests
import lxml
page = requests.get('https://karabas.com')
for link in links:
   event_page = requests.get(link)
   tree_event_page = html.fromstring(event_page.content)
   image = tree_event_page.xpath('//figure[@class="photo"]/meta/@content')
   f = open('00000001.jpg','w+')
   f.write(requests.get(image).content)

image变量是一个链接。我试图下载图片的方式有什么问题?

链接示例:https://image.karabas.com/w/350/h/496/f/files/import/1308758146_ImageBig636415263072975494.jpg

1 个答案:

答案 0 :(得分:1)

我无法重现您的错误,可能是因为您遗漏了代码的基本部分,例如,page从未使用过,links从未定义过。在任何情况下,我认为您的错误可能是由于您的image变量是字符串列表(对应于链接),而不是您认为的单个链接。这就是xpath method返回的内容。

因此,如果您知道只返回一个结果,则需要以下内容:

image = tree_event_page.xpath('//figure[@class="photo"]/meta/@content')[0]

重点是最后的[0]

PS:经过一番猜测后,我确认下面的脚本可能会按照您的意图运行:

import requests
from lxml import html

links = ['https://kiev.karabas.com/pro-mishej-ta-lyudej-2']
for link in links:
   event_page = requests.get(link)
   tree_event_page = html.fromstring(event_page.content)
   image = tree_event_page.xpath('//figure[@class="photo"]/meta/@content')[0]
   with open('00000001.jpg','w+') as f:
      f.write(requests.get(image).content)