3 回答

TA貢獻1853條經(jīng)驗 獲得超9個贊
我已經(jīng)完全按照你所指的做了,只使用Python和Selenium。我不明白為什么Python不會成為你特定用例使用的語言。我能看到的唯一問題是網(wǎng)頁是否不斷(或緩慢)變化。
我遇到了一個問題,其中網(wǎng)頁被重新設(shè)計,并通過了我的Xpath。我所要做的就是更正Xpath以反映新位置,它仍然有效。
另一種解決方案可能是檢查您嘗試抓取的網(wǎng)頁是否已經(jīng)存在現(xiàn)有API。如果是這種情況,您可能不必進行任何網(wǎng)絡(luò)抓取,只需調(diào)用API即可獲得您的價值。這將是最有效的方法,但如果沒有要調(diào)用的API,顯然是不可能的。
附注:我對Python最滿意,并且在嘗試自動執(zhí)行任務(wù)時通常會默認使用它??赡苡懈嘈阅苷Z言可以使用,但我的選擇是Python。

TA貢獻1821條經(jīng)驗 獲得超6個贊
這是潛在的破壞性操作,不適用于聲明的任何內(nèi)容(這會阻止重新分配)。您可以嘗試在代理中“包裝”需要監(jiān)視的數(shù)據(jù)const
在此示例中:
該變量存在于頁面上,并且是您要跟蹤的變量。
commodities
該函數(shù)通過Selenium注入和執(zhí)行。它保存一個小的“db”,用于記錄任何更改。
track_commodities

TA貢獻1799條經(jīng)驗 獲得超8個贊
// inject that function and call it via Selenium >>>
function track_commodities () {
track_commodities.db = { gold: []
, silver: []
, copper: []
};
commodities =
new Proxy(commodities, {
set: (o, k, v) => {
track_commodities.db[k].push(v);
o[k] = v;
return true;
}
});
}
track_commodities();
// <<<
// Normal execution of your web page...
commodities.gold = 20;
commodities.gold = 30;
commodities.gold = 40;
commodities.gold++;
commodities.gold++;
console.log(commodities.gold);
console.log(track_commodities.db.gold)
<!-- This is the JS value you need to track -->
<script>
let commodities = { gold: 0
, silver: 0
, copper: 0
};
</script>
添加回答
舉報