Scrapy 非回拨方法的剩余收益

Scrapy 非回拨方法的剩余收益,scrapy,Scrapy,我试图刮取一个html文件,该文件包含一个json对象和所有必需的测试用例数据,但json的处理在“find”和“parseTestCaseDetails”方法中进行,在该方法中,我迭代地获取测试用例详细信息,最后在“findInterestedFields”中解析,因此,我的要求是将测试用例的细节从层次结构中调用的最后一个方法(即findInterestedFields)生成一个json文件,有可能实现吗 提前谢谢 import scrapy 导入日期时间 导入json 进口稀土 导入集合 导

我试图刮取一个html文件,该文件包含一个json对象和所有必需的测试用例数据,但json的处理在“find”和“parseTestCaseDetails”方法中进行,在该方法中,我迭代地获取测试用例详细信息,最后在“findInterestedFields”中解析,因此,我的要求是将测试用例的细节从层次结构中调用的最后一个方法(即findInterestedFields)生成一个json文件,有可能实现吗

提前谢谢

import scrapy
导入日期时间
导入json
进口稀土
导入集合
导入时间
导入操作系统
导入js2xml
从scrapy.selector导入HtmlXPathSelector
等级高原前进速度SpiderTest(scrapy.Spider):
name=“AltiplanoavinProgresstSpiderTest”
buildNumber=[]
FormattedBuildTime=[]
键=[]
testcaseName=“”
testcaseSuit=''
testcaseDoc=''
def start_请求(自我):
打印操作系统环境[“jenkinsdomain”]
URL=[
os.environ[“jenkinsdomain”]+“/job/InprogressFlakyAndBlockedTestCaseDetails/lastSuccessfulBuild/”
]
对于url中的url:
打印url
生成scrapy.Request(url=url,callback=self.parse,errback=self.parseerror)
def解析错误(自身,故障):
打印失败
def解析(自我,响应):
hxs=HtmlXPathSelector(响应)
buildNumberString=hxs.select('normalize-space(//*[@id=“main panel”]/h1/text()))。extract_first()
self.buildNumber=buildNumberString.split(“#”)[-1]。split(“(”[0]。strip()
buildTimeUnformatd=buildNumberString.split(“”[-1]。split(“”)[0]。strip().replace(“PM”,”).replace(“AM”,”)
buildTimeUnformatd=buildTimeUnformatd.strip()
t=time.strTime(buildTimeUnformatd,“%b%d,%Y%I:%M:%S”)
self.formattedbuildtime=time.strftime(“%d%b%y%H:%M IST',t)
静态_testDetailsUrl=os.environ[
“jenkinsdomain”]+“XX/Inprogress ANV.html”
生成scrapy.Request(url=static\u testDetailsUrl,callback=self.parseTestDetails,errback=self.parseerror)
def find(self、key、dictionary):
对于dictionary.iteritems()中的k,v:
如果k==键:
产量v
self.parseTestCaseDetails(v)
elif isinstance(v,dict):
对于self.find(键,v)中的结果:
产量结果
elif isinstance(v,列表):
对于v中的d:
对于self.find(键d)中的结果:
产量结果
def parseTestCaseDetails(自身、测试用例):
#获取测试用例列表,然后再次逐个解析它们以获取名称和其他字段
对于testcase中的testcase:
self.findInterestedFields(测试用例)
def findInterestedFields(自身,字典):
jsonLoad=json.dumps(字典,缩进=4)
loaded_json=json.loades(jsonLoad)
readabledatetime=datetime.datetime.now().strftime(“%d%b%y%H:%M IST”)
对于k,v,在加载的_json.iteritems()中:
如果k==“名称”:
testcaseName=v
如果k==“全名”:
测试套=v
如果k==“单据”:
testcaseDoc=v
产生{“名称”:“avInprogresstestcases”,“avInprogresstestcases”:{
“testcaseName”:testcaseName
}}
def parseTestDetails(自我,响应):
data=response.xpath('//script[4]/text()')。extract_first().strip()
jstree=js2xml.parse(数据)
testDetailsInJson=js2xml.jsonlike.getall(jstree)
jsonLoad=json.dumps(testDetailsInJson[0],indent=4)
loaded_json=json.loades(jsonLoad)
列表(self.find('tests',loaded_json))

请检查上面的代码格式。您的代码非常不寻常,很难理解。您是否完成了前一位成员所说的第一个?代码格式有问题。例如
def findInterestedFields(self,dictionary)的内容:
def findInterestedFields(self,dictionary):
完全没有缩进。第二,你能举个例子说明你到底在找什么。请看