2016-01-13 28 views
0

我正在編寫一個網頁抓取python腳本,我希望它能夠做的一件事是讓它拍攝某些頁面的快照(所有的HTML,樣式表和圖片都需要離線正確查看特定頁面)。好像的HTTrack是做一個好辦法,我想我將能夠調用它使用在Windows中使用子進程從python運行HTTrack

subprocess.call(["httrack", "http://www.example.com", "-O", "\tmp\example"]) 

但試圖在python腳本中這樣做會導致「FileNotFoundError:[WinError 2]系統找不到指定的文件「。我也試着給它完整的文件路徑,

subprocess.call(["C:\Program Files\WinHTTrack\httrack.exe", "http://www.example.com", "-O", "\tmp\Example"]) 

,但我得到的錯誤「語法錯誤:(Unicode的錯誤)‘unicodeescape’編解碼器不能解碼位置2-3字節:截斷\ UXXXXXXXX逃生「

我認爲這是一個問題,我不能正確理解subprocess,因爲我可以通過Windows命令提示符獲得HTTrack的工作。任何人都可以幫助我理解使用子進程的正確方法嗎?

+1

'「\ tmp \ example」'中的''\ t「'根本不會跳出來嗎?至於'\ U',看起來你正在使用Python 3,並沒有向我們展示在2-3位置包含'「\ U」'的字符串,例如「C:\ Users」。無論如何,只要使用[r] aw字符串來避免這個問題 - 除非路徑以反斜槓結尾,在這種情況下,請使用常規字符串,並用另一個反斜槓(例如「C:\\」)轉義每個反斜槓。 – eryksun

回答

0

解決了感謝eryksun的評論。這完全不是一個subprocess語法的問題,而是我沒有注意逃避我所有的反斜槓。在這些字符串前拉r,使它們原始字符串修正了我的代碼。

+1

使用原始字符串文字,以避免逃避反斜槓:'r'c:\ U'' – jfs

+0

@ J.F.Sebastian Yup,這就是我做的:) – Empiromancer

相關問題