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 展开
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 展开
4个回答
展开全部
你不能直接存储一个类的实例啊,mongodb用bson存储数据,bson是json的binary形式,所以你只能存储javascript的基本类型、Object和Array这些东西。像beautiful soup里面的类的实例,你可以存储关键的数据,到你再需要用的时候,取出数据再构造一个新实例,而不是把这个实例存入数据库。
追问
能说的再细一点吗?我感觉我存储的都是字符串啊?是哪里出的问题啊?
追答
你用type()看看你的tbname、id、name、date、img都是什么类型
展开全部
难道是img的问题。
mongodb是可以直接存的。这种写法没有问题。问题还是出在变量名与变量值上。
很简单就可以定位。你先将img换成一个字符串,如果成功了,就是img本身的格式问题。如果还不成可以试试将"id"换成"Identify"类似的这样的名子再式。2-3次试验就可以找到原因。
mongodb是可以直接存的。这种写法没有问题。问题还是出在变量名与变量值上。
很简单就可以定位。你先将img换成一个字符串,如果成功了,就是img本身的格式问题。如果还不成可以试试将"id"换成"Identify"类似的这样的名子再式。2-3次试验就可以找到原因。
追问
我把每一个变量都单独注释了,但是都有错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可能很多变量都是bs4.element.Tag类型的。mangodb不能把它转成bson。
你是不是用什么库parse html的返回的bs4.element.Tag类型的对象,不是字符串。
只要你的数据是可以转成json的就都可以存。
你是不是用什么库parse html的返回的bs4.element.Tag类型的对象,不是字符串。
只要你的数据是可以转成json的就都可以存。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-10 · 知道合伙人软件行家
关注
展开全部
我写过一个爬虫是爬糗事百科的,然后存在sqlite里面。你也可以试试sqlite。
http://www.fiiii.com/qiushibaike_collector/
http://www.fiiii.com/qiushibaike_collector/
追问
我们实验室的任务是用mongodb的,sqlite以前用,现在不用了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询