2016-10-08 9 views
0

Webクローラーを開発して、wikiリンク内のすべてのソースコードを抽出しました。プログラムは、いくつかのファイルを書き込んだ後に終了します。Pythonを使用しているときに特殊文字を含むファイルを印刷できません

def fetch_code(link_list): 
    for href in link_list: 
     response = urllib2.urlopen("https://www.wikipedia.org/"+href) 
     content = response.read() 
     page = open("%s.html" % href, 'w') 
     page.write(content.replace("[\/:?*<>|]", " ")) 
     page.close() 

link_listシードページから抽出されたリンクを有する配列です。

私が実行した後に取得するエラーは、その名前に「/」を使用してファイルを作成することはできません

IOError: [Errno 2] No such file or directory: u'M/s.html' 
+1

問題は本当に特殊文字ですか、それとも完全なパスを前もって指定せずにファイル名を読み取ろうとしているだけですか? –

+2

名前にスラッシュを含むファイルを開こうとしています。つまり、ディレクトリ 'M'に' s.html'という名前のファイルを開こうとしています。 'open'はファイルが存在しなければ作成しますが、ディレクトリは作成しません。ディレクトリを作成するか、スラッシュを他の記号で置き換える必要があります。アンダースコア、ダッシュなど – nullop

答えて

1

です。あなたは2Fs.html

は/ python2の%2F

あるM%とファイル名を逃れることができ

、あなたは単に例、ファイル名をエスケープするためにurllibはを使用することができます。上の

import urllib 

filePath = urllib.quote_plus('M/s.html') 

print(filePath) 

を一方、階層へのhttpレスポンスを保存することもできます。たとえば、M/s.htmlはディレクトリ 'M'の下にあるs.htmlファイルを意味します。

関連する問題