爬取结果问题
ChrisLiang2020 opened this issue · comments
爬取的结果中,重复爬取查询到的所有数据中的最后一条数据,查询到的其他结果未爬取存入文件中,导致缺少大量数据
目测是因为__init__.py中format_context方法的context字典对象每次使用的同一个,导致数组中每次都保持同一个对象,结果相同,把context赋值放到下面的for循环里保证每次运行都有新的OrderedDict对象即可。
context = OrderedDict()
for each in header:
context[each] = ''
放到
for data in query_result:
for row in data['data']['resultsData']:
tmp = dict(zip(header, row[1:]))
context.update(tmp)
下面
结果为
header = '项目名称 批准号 项目类别 依托单位 项目负责人 资助经费(万元) 批准年度 关键词 是否结题 研究成果(期刊论文;会议论文;著作;奖励;专利) 依托单位ID 项目负责人ID 项目类别代码 申请代码 起止年月'.split()
for data in query_result:
for row in data['data']['resultsData']:
tmp = dict(zip(header, row[1:]))
context = OrderedDict()
for each in header:
context[each] = ''
context.update(tmp)
conclusion_context = {}
if context['是否结题'] == 'true':
conclusion_context = self.conclusion_project(context['批准号'])
我试了一下,这样改不能解决问题,问题似乎不在这里
我试了一下,这样改不能解决问题,问题似乎不在这里
我试了一下是可以的,上面context = OrderedDict()这一行的缩进需要调整一下,然后就没有重复值了
for data in query_result:
for row in data['data']['resultsData']:
tmp = dict(zip(header, row[1:]))
context = OrderedDict()
for each in header:
context[each] = ''
context.update(tmp)
conclusion_context = {}
if context['是否结题'] == 'true':
conclusion_context = self.conclusion_project(context['批准号'])
然后在dos命令框中用 pip setup.py install,这样对吗
我是直接打开了__init__.py,把这段代码替换了,并没有重新执行install
运行成功了,在dos命令框去切换到nsfc-master,使用pip install .
名称是__init__.py的这个文件
这个文件运行的结果不是爬取下来的数据,而且输入的代码分类的子代码分类,那个结果本来就是对的
这个文件运行的结果不是爬取下来的数据,而且输入的代码分类的子代码分类,那个结果本来就是对的
当然不是,这个py文件替换过后,在命令提示符里输入查阅指令才会爬取,作者给出的有示例的
那你之前没有输入查阅指令爬取是怎么判断数据重复的问题解决了,运行了里面的__init__.py又无法输入指令爬取数据
那你之前没有输入查阅指令爬取是怎么判断数据重复的问题解决了,运行了里面的__init__.py又无法输入指令爬取数据
并不是重复爬取数据啊大哥……你可以自己修改代码打印一下看看,结果是对的,只不过重复使用同一个OrderedDict()对象了……
for data in query_result: for row in data['data']['resultsData']: tmp = dict(zip(header, row[1:])) context = OrderedDict() for each in header: context[each] = '' context.update(tmp) conclusion_context = {} if context['是否结题'] == 'true': conclusion_context = self.conclusion_project(context['批准号'])
然后在dos命令框中用 pip setup.py install,这样对吗
你修改之后再重新install就覆盖掉修改了啊大哥
我知道的,我运行成功了,我的意思是要install才能爬取数据,才能知道问题有没有解决