Python 要解析的粗糙管道

Python 要解析的粗糙管道,python,parse-platform,scrapy,scrapy-pipeline,Python,Parse Platform,Scrapy,Scrapy Pipeline,我制作了一个管道,将零碎的数据放到我的解析后端 PARSE='api.PARSE.com' 端口=443 但是,我找不到在Parse中发布数据的正确方法。因为每次它都会在我的Parse DB中创建未定义的对象 class Newscrawlbotv01Pipeline(object): def process_item(self, item, spider): for data in item: if not data:

我制作了一个管道,将零碎的数据放到我的解析后端

PARSE='api.PARSE.com' 端口=443

但是,我找不到在Parse中发布数据的正确方法。因为每次它都会在我的Parse DB中创建未定义的对象

 class Newscrawlbotv01Pipeline(object):
    def process_item(self, item, spider):
        for data in item:
            if not data:
                raise DropItem("Missing data!")
        connection = httplib.HTTPSConnection(
            settings['PARSE'],
            settings['PORT']
        )
        connection.connect()
        connection.request('POST', '/1/classes/articlulos', json.dumps({item}), {
       "X-Parse-Application-Id": "XXXXXXXXXXXXXXXX",
       "X-Parse-REST-API-Key": "XXXXXXXXXXXXXXXXXXX",
       "Content-Type": "application/json"
     })
        log.msg("Question added to PARSE !", level=log.DEBUG, spider=spider)
        return item
错误示例:

TypeError: set([{'image': 'http://apps.site.lefigaro.fr/sites/apps/files/styles/large/public/thumbnails/image/sport24.png?itok=caKsKUzV',
 'language': 'FR',
 'publishedDate': datetime.datetime(2016, 3, 16, 21, 53, 10, 289000),
 'publisher': 'Le Figaro Sport',
 'theme': 'Sport',
 'title': u'Pogba aurait rencontr\xe9 les dirigeants du PSG',
 'url': u'sport24.lefigaro.fr/football/ligue-des-champions/fil-info/prolongation-entre-le-bayern-et-la-juve-796778'}]) is not JSON serializable

看起来您在
项['data']
中有一个
集合
,这在JSON上是不被接受的


您需要先将该字段更改回列表,然后再尝试将其设置为JSON可接受。

看起来您在
项['data']
中有一个
集,这在JSON上是不可接受的

您需要将该字段更改回列表,然后才能尝试使其成为JSON可接受的字段。

我找到了解决方案

class Newscrawlbotv01Pipeline(object):
def process_item(self, item, spider):
    for data in item:
        if not data:
            raise DropItem("Missing data!")
    connection = httplib.HTTPSConnection(
        settings['PARSE'],
        settings['PORT']
    )

    connection.connect()
    connection.request('POST', '/1/classes/Articles', json.dumps(dict(item)), {
   "X-Parse-Application-Id": "WW",
   "X-Parse-REST-API-Key": "WW",
   "Content-Type": "application/json"
 })
    log.msg("Question added to PARSE !", level=log.DEBUG, spider=spider)
    return item
    #self.collection.update({'url': item['url']}, dict(item), upsert=True)
我找到了解决办法

class Newscrawlbotv01Pipeline(object):
def process_item(self, item, spider):
    for data in item:
        if not data:
            raise DropItem("Missing data!")
    connection = httplib.HTTPSConnection(
        settings['PARSE'],
        settings['PORT']
    )

    connection.connect()
    connection.request('POST', '/1/classes/Articles', json.dumps(dict(item)), {
   "X-Parse-Application-Id": "WW",
   "X-Parse-REST-API-Key": "WW",
   "Content-Type": "application/json"
 })
    log.msg("Question added to PARSE !", level=log.DEBUG, spider=spider)
    return item
    #self.collection.update({'url': item['url']}, dict(item), upsert=True)

您的日志显示
connection.request('POST','/1/classes/articlulos',json.dumps({data}),{
,而您的代码
connection.request('POST','/1/classes/articlulos',json.dumps({item}),{
,您是否给出了不好的示例?哦,是的,很抱歉,当connection.request('POST','/1/classes/articlulos',json.dumps({item})出现错误时,{({data})你能更新你的问题吗?(编辑它)你的日志上写着
connection.request('POST','/1/classes/articlulos',json.dumps({data}),{
而你的代码
connection.request('POST','/1/classes/articlulos',json.dumps({item}),{
,你给出了不好的例子吗?哦,是的,对不起,这是connection.request时的错误('POST','/1/classes/articlulos',json.dumps({item}),{was({data})你能更新你的问题吗?(编辑它)不要用
{}
包围
,只传递项我传递了项json.dumps(item),但它是相同的错误:TypeError:{'image':'','language':'FR',publishedDate':datetime.datetime(2016,3,16,22,10,43,146000),“出版商”:“费加罗体育报”,“主题”:“体育报”,“标题”:你在拜仁社区杂志上的地址:“\xe9 Juve italienne”,“url”:u'sport24.lefigaro.fr/network/atp/fil info/gasquet-je-sais-que-mon-meilleur-niveau-reviendra-796780”}不是JSON serializable相同的错误,
datetime
不可序列化,您必须像字符串一样格式化它。不要用
{}
包围
,只传递项我传递了项JSON.dumps(项),但它是相同的错误:TypeError:{'image':'','language':'FR',PublishedDateTime:'datetime(项)(2016,3,16,22,10,43,146000),“出版商”:“费加罗体育报”,“主题”:“体育报”,“标题”:你在拜仁社区杂志上的地址:“\xe9 Juve italienne”,“url”:u'sport24.lefigaro.fr/network/atp/fil info/gasquet-je-sais-que-mon-meilleur-niveau-reviendra-796780”}不是JSON serializable相同的错误,
datetime
不是可序列化的,您必须将其格式化为字符串