我的目标是将 html 源输出到文件中,我正在使用w3m从终端浏览网页。
在终端上使用以下命令时:w3m <url> -dump
程序以非交互方式显示网站,但不显示其 html 源代码。
如果您使用 打开网站w3m <url>
,终端将显示该网站,如果您按五,然后程序将显示 html 源代码,我尝试编写此脚本,但没有成功。我以为命令行参数-dump_source
会对我有所帮助,但我得到的唯一结果是一个非人类阅读内容,我不知道-dump_source
应该返回什么
这是我迄今为止尝试过的:
-T text/html
在终端上使用-dump
但输出没有改变-T text/plain
在终端上使用-dump_source
,希望将非人类输出转换为纯文本,但没有成功(我不明白 -T 是用来做什么的,即使man w3m
在终端上输入阅读了 w3m 手册之后)- 知道紧迫五当 w3m 显示网站从网页内容切换到 html 源代码时,我尝试使用数据库将其附加到 w3m 进程并重定向其标准输入和标准输出到我的文件(input.txt,output.txt),其中input.txt包含一个五,但我没有成功。在我的测试程序上执行此操作按预期进行。我按照描述进行操作这里如果我写入
ls -l /proc/<w3m_pid>/fd
,其中 w3m_pid 是我ps ax
在终端上使用时获得的 w3m 进程 id,我可以看到有 3 个文件描述符,如果我尝试重定向第三个,程序就会崩溃并显示:发生错误:errorno=25 - 重定向标准 I/O
w3m <url> < input.txt > output.txt
也不起作用 - W3M 使用按键绑定在网络上导航,这意味着如果你按五无需按回车键,终端没有缓冲输入,使用附加到 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
Ubuntu 版本: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