Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

提取第一层数据和第二层数据不能一一匹配 #34

Closed
therocflyinginbluesky opened this issue May 18, 2023 · 3 comments
Closed

Comments

@therocflyinginbluesky
Copy link

以下是案例:Easyspider采集公开招标信息记录
一、应用场景
在中国政府采购网中,采集公开招标信息,采集的信息包括公开招标主页数据和公告明细页数据。
URL:http://www.ccgp.gov.cn/cggg/dfgg/gkzb/
二、设置流程

设计流程图

流程说明:
1.打开网页。
2.循环点击下一页:xpath://*/a[@Class="next"],测试时只循环1次。
3.循环提取数据:xpath:/html/body/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/ul[1]/li
4.提取总览数据:提取采购公告总览列表数据,提取项目名称、发布时间、地域、采购人、连接地址字段。
5.点击进入明细页:点击采购公告名称链接,进入公告明细页面。xpath:/html/body/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/ul[1]/li/a[1]
6.提取明细也数据:提取明细页全部数据,字段名“采购公告”,xpath:/html/body/div[2]/div[1]/div[2]
7.点击下一页:点击下一页按钮。
三、问题
执行任务,能进入明细页和跳转下一页,能成功实现数据采集,但是采集的数据有问题,提取总览数据和提取明细页数据,有冗余,并且不能一一对应,提取第一部分数据有两行,提取第二部分数据也有两行,两部分数据交错对应。
请帮忙看下是什么问题,是不是设计流程出了问题?
四、附件
1.word记录;
2.设计流程json;
3.提取的数据;
4.日志。
Uploading 附件.zip…

@NaiboWang
Copy link
Owner

NaiboWang commented May 18, 2023

没看到你的附件,请上传完成。
但按照软件逻辑来说,数据交错应该每隔两行的数据是对应好的,因为软件本身的逻辑是每一个提取数据操作执行完成后都会输出一行,你的任务流有两个提取数据操作,因此每一轮采集都会输出两行,偶数行的数据是对应的。如第一个提取数据由字段A,B,C组成,第二个由D,E组成,那么第1轮采集时,软件会先填充ABC输出一行,再填充DE并保留之前ABC的值再输出一行。下一轮采集时,第一次ABC的值会变成第2次的新值,DE的值仍然是第一次的旧值;第二次ABC的值保留,DE的值变成第二次的新值,用表格表示即:

image

也就是说,流程中有几个提取数据的操作,每一轮执行就会生成几行。

因此,加粗部分的值应该是一一对应好的值,其余的值可以删掉,你用excel简单操作一下就可以了,可以看一下数据是不是我说的这样子。

另外另一个解决方案是设计两个任务分两次提取,第一次提取所有详情页的链接,第二次根据链接提取详情页内容,最后手动合并两边的数据。

最后提一句,对于政府和军事机关等网站的爬虫操作,本人以后将不会进行答疑,以免触碰国家相关法律法规和政策。

@therocflyinginbluesky
Copy link
Author

非常感谢你的解答,非常专业,我遇到的问题就是你解答中的这个情况,提取的数据样式也是与你提供的一致。通过你的解答,我明白了取数的逻辑,再次感谢。

@NaiboWang
Copy link
Owner

谢谢,因为程序全部都是我自己写的,自然对这个逻辑很清晰,感谢使用~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants