写在前面
来看这个例子
需要点击展开阅读全文才能看全部的译文, 想想有没有好点的办法.
分析
打开调试, 发现这个按钮指向了 js 文件的一个函数, 具体看看:
<a style="text-decoration:none;width:640px;float:left; margin-bottom:10px;" href="javascript:fanyiShow(55737,'54A7CCDBFC8A6D3B')">展开阅读全文 ∨</a>
在 source 里面看 js 文件
//译赏展示
function fanyiShow(id, idjm) {
if (getCookie('gsw2017user') == null) {
window.parent.window.location.href = "/user/login.aspx?from=" + encodeURIComponent(window.location.href);
}
else {
document.getElementById('fanyi' + id).style.display = 'none';
document.getElementById('fanyiquan' + id).style.display = 'block';
var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
if (xmlhttp.responseText == "未登录") {
window.parent.window.location.href = "/user/login.aspx?from=" + encodeURIComponent(window.location.href);
}
else {
document.getElementById("fanyiquan" + id).innerHTML = xmlhttp.responseText;
//如果正在播放
if (document.getElementById('fanyiPlay' + id).style.display == "block") {
document.getElementById('speakerimgFanyiquan' + id).src = "https://ziyuan.guwendao.net/siteimg/speak-erOk.png";
}
}
}
}
xmlhttp.open("GET", "/nocdn/ajaxfanyi.aspx?id=" + id + "&idjm=" + idjm, false);
xmlhttp.send();
}
}
直接把函数的 if 里面==改成!=不就绕过登陆了吗
此时点击展开就能直接看内容了, 然后还能看看 xhr 请求:
https://so.gushiwen.cn/nocdn/ajaxfanyi.aspx?id=55737&idjm=54A7CCDBFC8A6D3B
发现这就是之前调用函数时候的 id 和 idjm.
那爬虫写起来就方便了, 直接组装 Ajax 即可.