1.地址是:http://app1.sfda.gov.cn/datas...
2.想要获取的数据是
3.调试工具
4.自己测试POST的数据返回的值是
5.不知道哪里错了,求助大家了
尝试了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 获取的数据如下:
最后也还是未成功获取到网页数据 = =!
好厉害 这网站怎么做到的
具体是我F12 再点击td标签 竟然自动断点?> 然后返回100什么的
我试了下,发现返回结果与你的一样。这说明不是你的参数不全之类的问题,而是网站做了反爬,无法重试。所以你需要考虑的就是看看哪个参数是变化的以及从哪里可以获取获取这个参数。
chrome ctrl + shift + j
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() })()
做一下浏览器伪装试一下,用httpclient之类的包
做浏览器插件处理吧。
自己用客户端拿的话,会很花时间。
这个站专门针对抓取作了处理的,而且整套机制是配合着前端 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的问题啦。
JSESSIONID
http://htmlunit.sourceforge.net/
http://www.seleniumhq.org/
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(8)
尝试了python下使用phantomjs模拟浏览器,来抓取目标网站的首页数据
1、request.js 文件
2、phantomjs request.js 获取的数据如下:
最后也还是未成功获取到网页数据 = =!
好厉害 这网站怎么做到的
具体是我F12 再点击td标签 竟然自动断点?> 然后返回100什么的
我试了下,发现返回结果与你的一样。这说明不是你的参数不全之类的问题,而是网站做了反爬,无法重试。所以你需要考虑的就是看看哪个参数是变化的以及从哪里可以获取获取这个参数。
chrome
ctrl + shift + j
做一下浏览器伪装试一下,用httpclient之类的包
做浏览器插件处理吧。
自己用客户端拿的话,会很花时间。
这个站专门针对抓取作了处理的,而且整套机制是配合着前端 js 来的。要解析它的流程,需要人肉“翻译”它页面上的那段 js,那里面有些按位操作的东西,我猜就是它自己的一套“加解密逻辑”,好消息是,那段 js 代码还不算长。
哪来的什么加解密。。
是
JSESSIONID
的问题啦。http://htmlunit.sourceforge.net/
http://www.seleniumhq.org/