簡體   English   中英

不使用 BS 或 selenium (Python) 抓取網站數據

[英]Scrape website data without BS or selenium (Python)

基本上我的情況是我打開了網頁,想從我的屏幕上打開的網站復制一些文本(每次都有一個完整的登錄過程)。 出於安全原因,我不想連續登錄網頁,因此請求不合適。 我也不想使用 selenium,因為當我想使用我現有的瀏覽器時,它會打開一個新的瀏覽器。 我的問題是我的瀏覽器已經在我想要從中獲取信息的頁面上打開,我可以制作某種腳本來為我檢索頁面上的某些信息並將其保存在某處(幾乎就像一個宏,但它能夠檢索某些元素)。 這是一種可能嗎?

我不確定我是否正確理解了這個問題。

一種方法可能是下載整個 .html 並在下載 .html 后“本地”處理相應的數據。

如果你使用“請求”,就像使用郵遞員一樣,你不需要每次都登錄。 如果您擁有有效的 JWT 令牌,您將跳過登錄。 但這取決於你的東西是如何工作的(你的問題缺乏細節)。

我不了解 selenium,但使用 puppeteer(並發),您可以重新使用已安裝的瀏覽器,而不是下載新的瀏覽器。

另外......你甚至需要硒或木偶戲? 您不能在控制台(瀏覽器控制台)中運行一些代碼嗎? 您可以在 chrome 的源選項卡中創建和保存片段。 如果您需要直接訪問您的文件系統(意味着您收集的數據會自動下載到下載文件夾中,或者有下載彈出窗口來選擇文件夾,這對您來說是不夠的),您可以看看 TamperMonkey 擴展。 或者你可能需要做一個 chrome 擴展。


閱讀您的評論@JeanVanNiekerk 后更新:

// to get user name of the one asking.
console.log(
  document.querySelector('#question .user-details a').innerText
); // 'Jean Van Niekerk'
navigator.clipboard.writeText('stuff').then(
  e => {
    console.log('Copied text ready !');
  }
);

// If you write that above in the console, you
// will get `Uncaught (in promise) DOMException: Document is not focused.`
// This is a security (maybe it can be disabled for your special case, another
// option is to make an extension that has this kind of rights).

// To try it out right now, paste this code bellow into you console, and swiffly click on the page (anywhere)
setTimeout(() => {
  navigator.clipboard.writeText('stuff').then(
  e => {
    console.log('Copied text ready !');
  }
);
}, 1000);
// Ctrl+V to paste your text :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM