如何获取这个政府网站的数据?

发布于 2022-09-05 15:35:10 字数 823 浏览 21 评论 0

1.地址是:http://app1.sfda.gov.cn/datas...

2.想要获取的数据是
图片描述

3.调试工具
图片描述

4.自己测试POST的数据返回的值是
图片描述

图片描述

5.不知道哪里错了,求助大家了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

z祗昰~ 2022-09-12 15:35:11

尝试了python下使用phantomjs模拟浏览器,来抓取目标网站的首页数据

1、request.js 文件

var url="http://app1.sfda.gov.cn/datasearch/face3/base.jsp?tableId=25&tableName=TABLE25&title=%B9%FA%B2%FA%D2%A9%C6%B7&bcId=124356560303886909015737447882";
var page = require('webpage').create();
page.open(url, function(status) {
  console.log(page.content);
  phantom.exit();
});

2、phantomjs request.js 获取的数据如下:
图片描述

最后也还是未成功获取到网页数据 = =!

汐鸠 2022-09-12 15:35:10

好厉害 这网站怎么做到的

具体是我F12 再点击td标签 竟然自动断点?> 然后返回100什么的

影子的影子 2022-09-12 15:35:10

我试了下,发现返回结果与你的一样。这说明不是你的参数不全之类的问题,而是网站做了反爬,无法重试。所以你需要考虑的就是看看哪个参数是变化的以及从哪里可以获取获取这个参数。

旧城空念 2022-09-12 15:35:10

chrome ctrl + shift + j

(function () {
    function devPage(jj) {
        return new Promise(r => {
            var curForm = document.getElementById('pageForm');
            curForm.curstart.value = jj;
            commitForECMA(function () {
                let request = this
                if (request.readyState == 4) {
                    if (request.status == 200) {
                        setTimeout(() => {
                            r(request.responseText)
                        }, 2e3)
                    }
                }
            }, 'search.jsp', curForm);
        })
    }

    async function a() {
        const el = document.createElement('html')
        for (let i = 1; i <= 11035; i++) {
            el.innerHTML = await devPage(i)
            el.querySelectorAll('a').forEach(t => {
                if (t.href.indexOf('javascript:commitForECMA(callbackC') === 0) {
                    console.log(t.innerHTML)
                }
            })
        }
    }

    a()
})()
深爱成瘾 2022-09-12 15:35:10

做一下浏览器伪装试一下,用httpclient之类的包

傾旎 2022-09-12 15:35:10

做浏览器插件处理吧。

自己用客户端拿的话,会很花时间。

这个站专门针对抓取作了处理的,而且整套机制是配合着前端 js 来的。要解析它的流程,需要人肉“翻译”它页面上的那段 js,那里面有些按位操作的东西,我猜就是它自己的一套“加解密逻辑”,好消息是,那段 js 代码还不算长。

鸩远一方 2022-09-12 15:35:10

哪来的什么加解密。。

request.onreadystatechange = callbackC;
function callbackC() {
    if (request.readyState == 1) document.getElementById("content").innerHTML="<br></br><br><img src=images/loading.gif>";
    if (request.readyState == 4) {
        if (request.status == 200) {
            oldContent[oldContent.length] = request.responseText;
            document.getElementById("content").innerHTML = request.responseText;
            request = null;
        }
        else {
            document.getElementById("content").innerHTML="<br><br><br><span style=font-size:x-large;color:#215add>服务器未返回数据</span>";
        }
    }
}

JSESSIONID的问题啦。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文