練習使用JS自動登入網站
程式碼如下 :
var element = document.getElementB.yId('account');
element.value="account";
後續更換網站後發現沒辦法輸入帳號,一開始發現為ID會變動,
於是想說先getElementsByTagName 拿到ID值後再放入,
但其中一網頁沒辦法拿到ID的值。
爬了下文章後,使用檢視原始碼發現沒辦法看到該網頁全部的HTML碼 QQQQ
只有按F12內才能完整看到,
想請問各位大大這種的網站該如何抓取網頁的Element呢??
或是該如何做到自動輸入帳密
爬了下文章後,使用檢視原始碼發現沒辦法看到該網頁全部的HTML碼 QQQQ
只有按F12內才能完整看到,
大大說的這個狀況
應該是畫面還沒render完成
因為抓取的目標還沒出現在畫面上
所以抓取不到
需要等待網頁載入完成才能執行抓取的操作
例如以下方法:
window.onload = function(){}
(如有錯誤還請指正)
@yellow_river您好~
有嘗試使用過
window.onload = init;
function init(){
alert("ok");
//var element = document.getElementsByTagName("input")[0].id ;
//alert(element);
var element = document.getElementsByTagName("div")[0].id ;
alert(element);
}
以上程式碼在該網頁可抓到div[0] 但抓不到input[0],div[1]也抓不到。
網頁檢視原始碼如下 :
<!DOCTYPE html>
<html xmlns:ng="" xmlns:tb="">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="initial-scale=1, maximum-scale=2, width=device-width, height=device-height, viewport-fit=cover">
<meta name="format-detection" content="telephone=no">
<meta name="vizportal-config" data-buildId="2021_4_127_cuni7fuc93" data-staticAssetsUrlPrefix=""><link href="vendors-vizportal.css?a86dc391ac411415647e" rel="stylesheet"><link href="vizportal.css?a86dc391ac411415647e" rel="stylesheet"><script type="text/javascript" src="/javascripts/api/tableau-2.min.js?a86dc391ac411415647e"></script><script type="text/javascript" src="jquery.min.js?a86dc391ac411415647e"></script><script type="text/javascript" src="rsa.js?a86dc391ac411415647e"></script><script type="text/javascript" src="underscore-min.js?a86dc391ac411415647e"></script><script type="text/javascript" src="q.min.js?a86dc391ac411415647e"></script><script type="text/javascript" src="canvas-to-blob.min.js?a86dc391ac411415647e"></script><script type="text/javascript" src="js.cookie.js?a86dc391ac411415647e"></script><script type="text/javascript" src="mousetrap.js?a86dc391ac411415647e"></script><script type="text/javascript" src="core.min.js?a86dc391ac411415647e"></script><script type="text/javascript" src="vendors-vizportal.js?a86dc391ac411415647e"></script><script type="text/javascript" src="vizportal.js?a86dc391ac411415647e"></script></head>
<body class="tb-body">
<div class="tb-app" id="app-root">
</div>
</body>
</html>
要抓的input是在body裡面QQQQQ
聽起來像是擴充跑完程式後
input才跑出來
如果搭配setTimeout
每隔一秒抓一次呢?
(以下沿用大大的function)
function init(){
var element = document.getElementsByTagName("input") ;
if(element[0]){ // 如果元素存在
console.log(element[0].id) // 顯示元素ID
} else { // 如果找不到
setTimeout(init,1000) // 每隔一秒找一次
}
}
@yellow_river 您好 ~~~
沿用您的程式碼出現空白
將console.log(element[0].id)
改成 alert(element[0].id)
抓到ID拉!!!!!!!!!
非常謝謝您 似乎可以再往下走
想請問您,所以正常都是可以抓到整個網頁的東西是嗎?
一開始以為只能抓到檢視原始碼裡面的東西,目前還在自學中QQ 感謝您。
是的~只要是在DOM的元素理論上都能抓到
經由您的描述
推測input應是透過js渲染於畫面中
由於檢視原始碼是直接從server讀取html的程式碼
沒有經過瀏覽器render程序
所以這也是沒有看到input的原因
But
還是像樓上大大說的
登入這類的敏感資訊不建議由前端操作@@
@yellow_river
好的,感謝您的提醒,
謝謝大家 :D