我在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"}
我该怎么办?
答案 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;
}