我的目標是將 html 來源輸出到文件中,我正在使用w3m從終端瀏覽網頁。
在終端機上使用以下命令時:w3m <url> -dump
程式以非互動方式顯示網站,但不顯示其 html 原始碼。
如果您使用 開啟網站w3m <url>
,終端將顯示該網站,如果您按v,然後程式將顯示html來源,我嘗試編寫腳本但沒有成功。我認為命令列參數-dump_source
會對我有幫助,但我得到的唯一的是非人類閱讀內容,我不知道-dump_source
應該回傳什麼
這是我到目前為止所嘗試的:
-T text/html
在終端機上使用-dump
但輸出沒有改變- 在終端上使用
-T text/plain
with-dump_source
希望將非人類輸出轉換為純文本,但沒有成功(即使在終端上鍵入閱讀 w3m 手冊後,我也不明白 -T 的用途man w3m
) - 知道緊迫v當 w3m 顯示網站從網頁內容切換到 html 原始碼時,我嘗試使用資料庫將其附加到 w3m 進程並重定向其標準輸入和標準輸出到我的文件(input.txt,output.txt),其中input.txt包含一個v,但我沒有成功。在我的測試程序上執行此操作按預期工作。我遵循了所描述的內容這裡。如果我寫
ls -l /proc/<w3m_pid>/fd
,其中 w3m_pid 是我在終端上使用的 w3m 進程 IDps ax
,我可以看到有 3 個檔案描述符,如果我嘗試重定向第三個,程式崩潰並顯示:發生錯誤:errorno=25 - 重定向標準 I/O
w3m <url> < input.txt > output.txt
也不起作用 - W3M 使用鍵綁定在網路上導航,這表示如果您按v無需按 Enter 鍵,終端不緩衝輸入,使用附加到 w3m 進程的 gdb 我嘗試使用 刪除它
p system ("/bin/stty cooked")
,但 w3m 鍵綁定沒有改變。
我的問題是:為什麼使用 gdb 重定向 I/O 不起作用以及我可以做什麼來獲取 html 原始碼? w3m 有一個選項可以輸出我缺少的 html 原始碼,或者我必須使用另一個程式?
PS:我需要 html 原始碼作為大學作業,透過 html 原始碼,我可以建立一個腳本來瀏覽網頁並將頁面輸出到文件中,而不是我應該使用這些輸出與 flex 來提取有關事物的靜態資訊在網路上,例如:c語言的題中stack這個字出現了多少?這是我的想法。
任何建議,將不勝感激。
W3M版本:0.5.3+debian-15
GDB版本:7.7.1
烏班圖版本:14.04
先致謝!
答案1
為什麼不能使用curl
?
curl web-address > file-source.
將輸出原始碼file
像這樣
curl http://askubuntu.com/questions/822139/how-to-output-web-page-html-source-code-into-a-file > source-html
答案2
這已經在以下內容中得到了回答:https://askubuntu.com/a/1273410/1124534
w3m -o accept_encoding=UTF-8 -dump_source google.com >file