我有一个运行良好的爬虫蜘蛛:
`# -*- coding: utf-8 -*-
import scrapy
class AllCategoriesSpider(scrapy.Spider):
name = 'vieles'
allowed_domains = ['examplewiki.de']
start_urls = ['http://www.exampleregelwiki.de/index.php/categoryA.html','http://www.exampleregelwiki.de/index.php/categoryB.html','http://www.exampleregelwiki.de/index.php/categoryC.html',]
#"Titel": :
def parse(self, response):
urls = response.css('a.ulSubMenu::attr(href)').extract() # links to den subpages
for url in urls:
url = response.urljoin(url)
yield scrapy.Request(url=url,callback=self.parse_details)
def parse_details(self,response):
yield {
"Titel": response.css("li.active.last::text").extract(),
"Content": response.css('div.ce_text.first.last.block').extract(),
}
Run Code Online (Sandbox Code Playgroud)
` 与
scrapy runningpider spider.py -o dat.json 它将所有信息保存到 dat.json
我希望每个起始 url 都有一个输出文件 categoryA.json categoryB.json 等等。
一个类似的问题没有得到解答,我无法重现这个答案,我也无法从那里的建议中学习。
我如何实现拥有多个输出文件的目标,每个 starturl 一个?我只想运行一个命令/shellscript/文件来实现这一点。
调试器告诉我我没有使用我的变量,但它也没有声明。这里发生了什么?if 语句有自己的作用域吗?不知何故,固定长度的数组似乎不在 if 块内的同一范围内。
我的最小例子
#include <stdio.h>
#include <stdlib.h>
void nullarray(int start,int end, char array[]){
if(start<end) // TODO used to be <=
{
array[start]='0';
nullarray(++start,end,array);
}else{array[start]='\0';}
}
int main()
{
int commaindex2=-1;
int mostdecimaldigits=6;
if(commaindex2==-1){
char decimalnum2[1];decimalnum2[0]='0';
}
else{
char decimalnum2[mostdecimaldigits]; // get enought store incl filling up zeros
nullarray(0,mostdecimaldigits,decimalnum2); // write zeros to array
}
printf("%s", decimalnum2);
}
Run Code Online (Sandbox Code Playgroud)
调试器输出
||=== Build: Debug in test4 (compiler: GNU GCC Compiler) ===|
D:\main.c||In function 'main':|
D:\main.c|20|warning: variable 'decimalnum2' set but not used …Run Code Online (Sandbox Code Playgroud)