1.地址是:http://app1.sfda.gov.cn/datas...
2.想要获取的数据是
3.调试工具
4.自己测试POST的数据返回的值是
5.不知道哪里错了,求助大家了
1.地址是:http://app1.sfda.gov.cn/datas...
2.想要获取的数据是
3.调试工具
4.自己测试POST的数据返回的值是
5.不知道哪里错了,求助大家了
我试了下,发现返回结果与你的一样。这说明不是你的参数不全之类的问题,而是网站做了反爬,无法重试。所以你需要考虑的就是看看哪个参数是变化的以及从哪里可以获取获取这个参数。
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()
})()
做浏览器插件处理吧。
自己用客户端拿的话,会很花时间。
这个站专门针对抓取作了处理的,而且整套机制是配合着前端 js 来的。要解析它的流程,需要人肉“翻译”它页面上的那段 js,那里面有些按位操作的东西,我猜就是它自己的一套“加解密逻辑”,好消息是,那段 js 代码还不算长。
哪来的什么加解密。。
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
的问题啦。
尝试了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 获取的数据如下:
最后也还是未成功获取到网页数据 = =!
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
好厉害 这网站怎么做到的
具体是我F12 再点击td标签 竟然自动断点?> 然后返回100什么的