我正在尝试使用wget:
下载此网页的内容https://bibliotheque-numerique.paris.fr/search.aspx?SC=DEFAULT#/Search/(query:(ForceSearch:!f,Page:0,PageRange:3,QueryString:'*:*',ResultSize:50,ScenarioCode:DEFAULT,ScenarioDisplayMode:display-standard,SearchLabel:'',SearchTerms:'',SortField:DateOfInsertion_sort,SortOrder:0,TemplateParams:(Scenario:'',Scope:VPCO,Size:!n,Source:'',Support:'')))
由于特殊字符,它无效。我试图用“\”来逃避它们,但它对我不起作用。
答案 0 :(得分:1)
由于搜索查询仅使用单引号,因此您可以使用双引号来保护它们不受shell影响。此外,在zsh(以及可能的其他交互式shell)中,您需要使用反斜杠转义!
字符,因为!
甚至在双引号内也有意义。结果如下:
# use double quotes and escape "!"
wget "https://bibliotheque-numerique.paris.fr/search.aspx?SC=DEFAULT#/Search/(query:(ForceSearch:\!f,Page:0,PageRange:3,QueryString:':',ResultSize:50,ScenarioCode:DEFAULT,ScenarioDisplayMode:display-standard,SearchLabel:'',SearchTerms:'',SortField:DateOfInsertion_sort,SortOrder:0,TemplateParams:(Scenario:'',Scope:VPCO,Size:\!n,Source:'',Support:'')))"
为了避免此类问题,您可以使用wget -i
指定一个输入文件,其中URL将逐行读取而不解释特殊字符(除了换行符分隔行)。与<<
运算符结合使用时,它允许指定URL而无需特殊引号:
# use -i - to read from stdin, and the <<\ operator to feed
# the URL to Wget without having to quote it
wget -i - <<\.
https://bibliotheque-numerique.paris.fr/search.aspx?SC=DEFAULT#/Search/(query:(ForceSearch:!f,Page:0,PageRange:3,QueryString:':',ResultSize:50,ScenarioCode:DEFAULT,ScenarioDisplayMode:display-standard,SearchLabel:'',SearchTerms:'',SortField:DateOfInsertion_sort,SortOrder:0,TemplateParams:(Scenario:'',Scope:VPCO,Size:!n,Source:'',Support:'')))
.
答案 1 :(得分:0)
您可以按如下所示在命令行变量中声明URL。
testUrl='http://www.example.com/1111?&nr=0.15859029847072859&edge=y&html5=y'
,然后按如下所示使用它:
wget $testUrl