【发布时间】:2016-01-13 21:19:35
【问题描述】:
我正在编写一个网络抓取 python 脚本,我希望它能够做的一件事是让它拍摄某些页面的快照(所有 html、样式表、以及正确离线查看该特定页面所需的图像)。似乎 HTTrack 是一个很好的方法,我想我可以使用
从 python 脚本中调用它subprocess.call(["httrack", "http://www.example.com", "-O", "\tmp\example"])
但尝试这样做会导致“FileNotFoundError: [WinError 2] 系统找不到指定的文件”。我也试过给它完整的文件路径,
subprocess.call(["C:\Program Files\WinHTTrack\httrack.exe", "http://www.example.com", "-O", "\tmp\Example"])
但我收到错误“SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape”
我认为这是我无法正确理解 subprocess 的问题,因为我可以通过 Windows 命令提示符让 HTTrack 工作。谁能帮我理解使用子流程的正确方法?
【问题讨论】:
-
"\tmp\example"中的"\t"根本不会跳出来吗?至于\U,您似乎正在使用Python 3,并且没有向我们显示位置2-3 中包含"\U"的字符串的行,例如"C:\Users"。无论如何,只需使用 [r]aw 字符串即可避免此问题 - 除非路径以反斜杠结尾,在这种情况下,请使用常规字符串并用另一个反斜杠转义每个反斜杠,例如"C:\\"。
标签: python windows subprocess httrack