python写了一个爬虫,内容储存到mongodb数据库,遇到一个错误不知怎么改,求大神帮忙

爬虫爬的百度黄山吧,需要的内容都已经找到,但是存储过程出现错误。value={"tbname":tbname,"id":id,"name":name,"date":dat... 爬虫爬的百度黄山吧,需要的内容都已经找到,但是存储过程出现错误。

value={"tbname":tbname,
"id":id,
"name":name,
"date":date,
"img":img}
posts.insert(value)
以下是错误代码
Traceback (most recent call last):
File "spider.py", line 89, in <module>
gettb(x)
File "spider.py", line 77, in gettb
gettb_back(purl,tbname)
File "spider.py", line 48, in gettb_back
posts.insert(value)
File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5.2-py2.7-linux-i686.egg/pymongo/collection.py", line 357, in insert
continue_on_error, self.__uuid_subtype), safe)
File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5.2-py2.7-linux-i686.egg/pymongo/message.py", line 79, in insert
encoded = [bson.BSON.encode(doc, check_keys, uuid_subtype) for doc in docs]
File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5.2-py2.7-linux-i686.egg/bson/__init__.py", line 567, in encode
return cls(_dict_to_bson(document, check_keys, uuid_subtype))
File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5.2-py2.7-linux-i686.egg/bson/__init__.py", line 476, in _dict_to_bson
elements.append(_element_to_bson(key, value, check_keys, uuid_subtype))
File "/usr/local/lib/python2.7/dist-packages/pymongo-2.5.2-py2.7-linux-i686.egg/bson/__init__.py", line 466, in _element_to_bson
type(value))
bson.errors.InvalidDocument: cannot convert value of type <class 'bs4.element.Tag'> to bson
展开
 我来答
kaisa1028
2013-06-10 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5429
采纳率:28%
帮助的人:2571万
展开全部
你不能直接存储一个类的实例啊,mongodb用bson存储数据,bson是json的binary形式,所以你只能存储javascript的基本类型、Object和Array这些东西。像beautiful soup里面的类的实例,你可以存储关键的数据,到你再需要用的时候,取出数据再构造一个新实例,而不是把这个实例存入数据库。
追问
能说的再细一点吗?我感觉我存储的都是字符串啊?是哪里出的问题啊?
追答
你用type()看看你的tbname、id、name、date、img都是什么类型
bdwisyou7d
2013-06-10 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1066万
展开全部
难道是img的问题。

mongodb是可以直接存的。这种写法没有问题。问题还是出在变量名与变量值上。

很简单就可以定位。你先将img换成一个字符串,如果成功了,就是img本身的格式问题。如果还不成可以试试将"id"换成"Identify"类似的这样的名子再式。2-3次试验就可以找到原因。
追问
我把每一个变量都单独注释了,但是都有错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
holychuo
2013-06-11 · TA获得超过156个赞
知道小有建树答主
回答量:341
采纳率:0%
帮助的人:181万
展开全部
你可能很多变量都是bs4.element.Tag类型的。mangodb不能把它转成bson。
你是不是用什么库parse html的返回的bs4.element.Tag类型的对象,不是字符串。
只要你的数据是可以转成json的就都可以存。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友87b2a52
2013-06-10 · 知道合伙人软件行家
百度网友87b2a52
知道合伙人软件行家
采纳数:523 获赞数:3490
毕业于南京大学,硕士学位。10年软件研发经验。现任信息系统架构师。

向TA提问 私信TA
展开全部
我写过一个爬虫是爬糗事百科的,然后存在sqlite里面。你也可以试试sqlite。
http://www.fiiii.com/qiushibaike_collector/
追问
我们实验室的任务是用mongodb的,sqlite以前用,现在不用了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式