scrapy在同一个json对象中保存不同的产量

时间:2017-09-11 07:38:18

标签: json python-3.x scrapy

我在scrapy上的代码如下所示:

def parse(self, response):
    for quote in response.css('div.search-item '):
        f = quote.css('a.stack::attr(href)').extract_first()
        f = response.urljoin(f)
        # print(f)
        yield {
            'text': quote.css('span.tags::text').extract_first(),
            'title': quote.css('h3 em::text').extract_first(),

            }
        yield response.follow(f, self.parse_program)

def parse_program(self, response):
    def extract_with_css(query):
        return response.css(query).extract_first().strip()

    yield {
         'name': extract_with_css('div.headline h1::text'),}

结果结果如下:

 {'text':"sdada",'title':"12321q"}
 {'name':"sdasdsa"}

我想这样做:

{'text':"sdada",'title':"12321q",'name':"sdasdsa"}

我该怎么办?

1 个答案:

答案 0 :(得分:2)

您需要为此使用请求元数,并且只有在拥有所有数据时才生成项目

// Duplicate a given string.
XMLSTR stringDup(XMLCSTR lpszData, int cbData)
{
if (lpszData==NULL) return NULL;

XMLSTR lpszNew;
if (cbData==-1) cbData=(int)xstrlen(lpszData);
lpszNew = (XMLSTR)malloc((cbData+1) * sizeof(XMLCHAR));
if (lpszNew)
{
    memcpy(lpszNew, lpszData, (cbData) * sizeof(XMLCHAR));
    lpszNew[cbData] = (XMLCHAR)NULL;
}
return lpszNew;
}