使用基于文本的浏览器进行批量网站查询
Bulk website query using text based browsers
我想要像 lynx,w3m 或 links[=38= 这样的文本浏览器] 从可用 link 列表中执行批量查询。结果将针对关键字进行过滤,并应添加到原始列表中。
举个例子,让列表在 list.txt
:
"http://dict.cc//?s=Chemical"
"http://dict.cc//?s=Fenster"
如果我一次只提交一个link,我可以提取结果,例如
head -n 1 list.txt | xargs links -dump | sed -n '/NOUN/p'
tail -n 1 list.txt | xargs links -dump | sed -n '/NOUN/p'
按预期工作,但不:
cat list.txt | xargs links -dump | sed -n '/NOUN/p'
或
for line in `cat list.txt`; do links -dump $line ; done
我做错了什么?下一步,应该将输出附加到正确行的列表中,这样 list.txt 在操作后将如下所示:
"http://dict.cc//?s=Chemical" edit NOUN a chemical | chemicals -
"http://dict.cc//?s=Fenster" NOUN das Fenster | die Fenster edit
应该可以通过与 paste 等其他工具组合或使用。这不像上面那样工作,什么是更好的解决方案?:
for line in `cat list.txt`; do echo -n $line && links -dump $line; done
该示例仅用于演示,我将使用 dict.cc 以外的其他站点。很遗憾,没有 API/REST 可用。
xargs
将一次向程序传递多个参数,除非您限制参数的数量:xargs -n1 links -dump
。也许 links 只接受一个参数。如果您只需要 URL 中的确切文件而不需要任何其他链接文档,您也可以使用 curl
.
for line in <code>cat list.txt
在任何空格处拆分。因此,如果 list.txt
中的任何行包含空格,它将不起作用。
试试这个遍历列表:
cat 'list.txt' | while IFS= read -r line; do
echo -n $line && links -dump $line
done
我一直在摆弄命令,直到找到错误。问题在于 list.txt 中给出的 URL 的双引号。删除后,这工作正常:
for line in `cat engl.txt`; do
echo -n $line && links -dump $line| sed -n '/NOUN/p'
done
如果(必须)保留双引号,使用上面文件中的条目作为 links 的命令,由 xargs 传递有效(但不是上面的命令):
for line in `cat list.txt`; do
echo -n $line && echo $line | xargs links -dump | sed -n '/NOUN/p'
done
我想要像 lynx,w3m 或 links[=38= 这样的文本浏览器] 从可用 link 列表中执行批量查询。结果将针对关键字进行过滤,并应添加到原始列表中。
举个例子,让列表在 list.txt
:
"http://dict.cc//?s=Chemical"
"http://dict.cc//?s=Fenster"
如果我一次只提交一个link,我可以提取结果,例如
head -n 1 list.txt | xargs links -dump | sed -n '/NOUN/p'
tail -n 1 list.txt | xargs links -dump | sed -n '/NOUN/p'
按预期工作,但不:
cat list.txt | xargs links -dump | sed -n '/NOUN/p'
或
for line in `cat list.txt`; do links -dump $line ; done
我做错了什么?下一步,应该将输出附加到正确行的列表中,这样 list.txt 在操作后将如下所示:
"http://dict.cc//?s=Chemical" edit NOUN a chemical | chemicals -
"http://dict.cc//?s=Fenster" NOUN das Fenster | die Fenster edit
应该可以通过与 paste 等其他工具组合或使用。这不像上面那样工作,什么是更好的解决方案?:
for line in `cat list.txt`; do echo -n $line && links -dump $line; done
该示例仅用于演示,我将使用 dict.cc 以外的其他站点。很遗憾,没有 API/REST 可用。
xargs
将一次向程序传递多个参数,除非您限制参数的数量:xargs -n1 links -dump
。也许 links 只接受一个参数。如果您只需要 URL 中的确切文件而不需要任何其他链接文档,您也可以使用 curl
.
for line in <code>cat list.txt
在任何空格处拆分。因此,如果 list.txt
中的任何行包含空格,它将不起作用。
试试这个遍历列表:
cat 'list.txt' | while IFS= read -r line; do
echo -n $line && links -dump $line
done
我一直在摆弄命令,直到找到错误。问题在于 list.txt 中给出的 URL 的双引号。删除后,这工作正常:
for line in `cat engl.txt`; do
echo -n $line && links -dump $line| sed -n '/NOUN/p'
done
如果(必须)保留双引号,使用上面文件中的条目作为 links 的命令,由 xargs 传递有效(但不是上面的命令):
for line in `cat list.txt`; do
echo -n $line && echo $line | xargs links -dump | sed -n '/NOUN/p'
done