“TypeError:unhashable type”在尝试使用beauthoulsoup、Python检索信息时

2024-06-16 10:00:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用TumblrAPI,PyTumblr来具体地,在带有特定标签的帖子中抓取一些图片

这就是我使用的代码,非常简单:

import pytumblr
from bs4 import BeautifulSoup

# Authenticate via API Key
client = pytumblr.TumblrRestClient('#Here is my API Key#')
print client.posts('wergida.tumblr.com', type='photo', tag='BERND AND HILLA BECHER', limit=1, offset=0)

结果是这样的:

但是当我使用beauthoulsoup解析我得到的信息时:

soup = BeautifulSoup(client.posts('wergida.tumblr.com', type='photo', tag='BERND AND HILLA BECHER', limit=1, offset=0),"lxml")

我知道了:

Traceback (most recent call last):
File "tumblr_test.py", line 29, in <module>
soup = BeautifulSoup(client.posts('wergida.tumblr.com', type='photo', tag='BERND AND HILLA BECHER', limit=1, offset=0),"lxml")
File "/Users/CB/Public/scrapy/env/lib/python2.7/site-packages/bs4/__init__.py", line 199, in __init__
if markup[:5] == "http:" or markup[:6] == "https:":
TypeError: unhashable type

我尝试过不同的解析器,比如“语法分析器.html“html5lib”,仍然得到相同的错误。在

谢谢你的任何线索!在


Tags: andcomclienttagtypetumblroffsetposts
1条回答
网友
1楼 · 发布于 2024-06-16 10:00:27

client.post()调用返回一个Python dictionary,而不是一个包含HTML的字符串;它已经为您解析了JSON响应。因为BeautifulGroup试图将其视为一个字符串,您会得到错误,因为:5作为一个切片对象传递到字典,这是不可哈希的:

>>> {}[:5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type

字典不是HTML。没有必要尝试用beauthoulsoup解析它。只需访问嵌套结构中的单个数据元素;如果这样的元素本身是一个字符串,并且该字符串包含HTML标记,那么解析该特定数据段可能是有意义的:

^{pr2}$

相关问题 更多 >