Shell-Script

用於網頁下載和螢幕互動的腳本語言或平台是什麼?

  • November 13, 2018

可能重複:

這裡有人有使用 curl 在 Web 應用程序中自動執行某些任務的經驗嗎?

這是我需要做的嗎?想知道哪個平台最適合 - 易於理解且易於編碼。我可能不得不外包它,因為這可能超出我的技能水平。

一些背景:

我可以通過我的圖書館訪問一些資訊數據庫和網站。訪問數據庫和網站的方式是首先載入圖書館網頁。在對話框中輸入我的借書證號碼,然後點擊送對外連結接。然後為我想從中獲取數據的服務打開經過身份驗證的(我假設是通過 cookie 等)網頁。

我想要達到的目標:

我想在文件夾中創建適當命名的 Pdf 文件的彙編。或者,並且優選地,想要創建一個 PDF 文件,該文件包含所有保存的頁面,這些頁面是從一個 PDF 文件中的索引頁面超連結的。

這些頁面將來自多個網站。訪問這些站點是免費的,或者使用密碼或基於庫的訪問(據我所知,這需要基於螢幕的互動)。

此外,在這些可以通過基於庫的訪問訪問的網站之一上,地址欄中的網頁地址在我每次轉到不同的頁面時都不會改變(糟糕)。因此,我想下載許多頁面以供離線查看,不適合使用簡單的 Wget 類型的命令。據我所知,它需要一些方法來點擊網站上的右側選項卡,以便頁面載入,並且一旦頁面載入,它需要列印為具有合適名稱的 PDF 文件,並編譯成一個 PDF 文件。

想知道使用什麼平台來開發這個迷你應用程序/腳本?

有人可以幫我決定哪種平台最適合這種應用程序嗎?理想情況下,我希望解決方案是面向函式呼叫的,這樣如果我必須在開發一個月後添加一個網頁,我就不必跑到開發人員那裡進行這種“配置”更改。

平台不一定是 Unix,儘管我認為使用 Unix 平台可以創造最大的靈活性。我可以在我的 Mac 上執行它,或者在主機上執行,或者在我的 Raspberry Pi 上執行它:)

謝謝!!


更新:

我剛從一位精通 IT 的朋友那裡聽說 http://seleniumhq.org/http://scrapy.org/可能是不錯的選擇。也會研究它們。

對於這樣的工作,我一直使用LWP (libwww-perl) 或WWW:Mechanize - 有幾種程式任務我會使用 python,但對於涉及文本處理的任何事情,我更喜歡 perl。

可能我寫的最複雜的一個是幾年前,當我和我的搭檔擁有一家小書店時——她需要一個程序來從圖書發行商的網站上提取有關圖書的資訊(鍵入 ISBN 或條碼)並將相關詳細資訊插入她( postgresql) 股票數據庫。

請注意,編寫網路爬蟲可能既乏味又耗時——您花費大量時間閱讀各種網頁的 HTML 原始碼,並弄清楚如何辨識和僅提取您正在尋找的資訊。

這並不是特別困難,但它確實需要良好的 HTML 知識和至少中級程式技能。

您可能必須為每個數據庫站點編寫不同的爬蟲,而不是一個完整的爬蟲 - 儘管您可以編寫一個包裝腳本,將它們作為函式包含在內,或者根據站點呼叫單獨的腳本。

網站也傾向於改變。一個已經執行了六到十二個月的抓取工具可能會突然停止工作,因為該站點已經過重新設計,並且不再按照您的腳本期望的方式執行。

因此,如果任何數據庫具有某種用於程式訪問的 API(例如使用RESTSOAP甚至RSS),那麼使用它而不是抓取 HTML。不幸的是,這對於通過庫提供的那種數據庫來說是不太可能的(數據庫所有者往往對數據有前網路態度,並且對控制和限制訪問比其他任何事情都更感興趣)。他們不想讓任何人通過程序而不是瀏覽器輕鬆訪問他們的數據,並且有些人付出了巨大的努力來混淆他們的網站,使 HTML 程式碼難以理解,或者需要一個 javascript 解釋器來提取連結和其他數據。

舉個很好的例子,電視列表網站就是一個很好的例子——他們中的一些人真的不希望人們使用他們的數據來自動記錄 MythTV 等節目的時間表,因此網站開發人員和網站爬蟲之間存在著一場持續的技術戰爭作者。

有 perl 的 javascript 解釋器(包括一個與 WWW::Mechanize 一起使用的稱為WWW::Scripter的解釋器,但有時更容易自己檢查站點的 javascript 程式碼,弄清楚它在做什麼來混淆 HTML,然後編寫 perl 程式碼來解釋- 在沒有 js 解釋器的情況下混淆數據。

好的,所以在收到scrapy 的連結後我做了一些研究,並知道我說的是網路爬蟲。對於其他可能關心的人,這是我收集的一些資訊。

仍然不確定如何前進,但聽起來 BeautifulSoup 和 Mechanize 可能是最簡單的前進方式。由於其簡單性,斜紋布看起來也相當不錯。有什麼想法嗎?


從我的研究中收集連結

python web 抓取工具概述 http://www.slideshare.net/maikroeder/overview-of-python-web-scraping-tools

機械化 http://wwwsearch.sourceforge.net/mechanize/

美麗的湯:我們稱他為烏龜,因為他教我們。 http://www.crummy.com/software/BeautifulSoup/

twill:一種用於網頁瀏覽的簡單腳本語言 http://twill.idyll.org/

Selenium - Web 瀏覽器自動化 http://seleniumhq.org/

PhantomJS:帶有 JavaScript API http://phantomjs.org/的無頭 WebKit


機械化是我的最愛;強大的高級瀏覽功能(超級簡單的表單填寫和送出)。

Twill 是一種建立在 Mechanize 之上的簡單腳本語言

BeautifulSoup + urllib2 也很好用。

Scrapy 看起來是一個非常有前途的項目;這是新的。

有人知道我可以使用的基於 Python 的優秀網路爬蟲嗎?- 堆棧溢出 https://stackoverflow.com/questions/419235/anyone-know-of-a-good-python-based-web-crawler-that-i-could-use


PycURL 首頁 http://pycurl.sourceforge.net/


Scrapy 評估 - BeautifulSoup + Mechanize 似乎可能更簡單(我的評論來自這裡),使用 evenlet 來獲得併發

python - 值得學習 Scrapy 嗎?- 堆棧溢出 https://stackoverflow.com/questions/6283271/is-it-worth-learning-scrapy


提煉、重用和請求數據 | ScraperWiki https://scraperwiki.com/


引用自:https://unix.stackexchange.com/questions/47483