2012-04-01 14 views
4

ウェブサイトのソースコードをPython 3のテキストファイルにコピーするにはどうすればよいですか?HTMLソースコードをファイルに保存

EDIT: 私の問題を明確にするためには、ここで私が持っているものです。

import urllib.request 

def extractHTML(url): 
    f = open('temphtml.txt', 'w') 
    page = urllib.request.urlopen(url) 
    pagetext = page.read() 
    f.write(pagetext) 
    f.close() 

extractHTML('http:www.google.com') 

私はf.write()関数の次のエラーを取得する:

builtins.TypeError: must be str, not bytes 
+0

ここをクリックしてみましたか?:http://stackoverflow.com/questions/5512811/builtins-typeerror-must-be-str-not-bytes – Jack

+0

驚くべきことに、実際に問題を解決した回答はありません.. pagetext'は文字列ではありません。実際にはバイトです。したがって、文字列に変換するには、ファイルにUTF-8でエンコードされた文字列を出力する 'f.write(pagetext.decode( 'utf-8'))'を使用する必要があります。 – Brandon

+0

@Brandon私はあなたが言ったことを試してみたところ、UnicodeDecodeError: 'utf-8'コーデックは、位置8482のバイト0xa0をデコードできません:無効な開始バイト。私はちょうど文字通り 'str()'なしで答えをコピーし、 'f.write(pagetext)'の代わりに 'f.write(pagetext.decode( 'utf-8'))'を入れました。なぜこれが私のために働いているのかわかりません。もしあなたがPython 2を使っているのであれば、なぜでしょうか。 – Simon

答えて

2
import urllib.request 
site = urllib.request.urlopen('http://somesite.com') 
data = site.read() 
file = open("file.txt","wb") #open file in binary mode 
file.writelines(data) 
file.close() 

未テストが、うまくいくはずです。

EDIT:のpython3

+0

*は動作しません。 OPはpython 3を使用しています。 – DSM

+0

おっと、申し訳ありません。 Python 3の問題は何ですか? – Jack

+0

urllib2は存在しません。私は通常あなたがurllib.requestモジュールを使用すると思います(これは現在のurlopenが住んでいるところです)。 – DSM

0

probably you wanted to create something like that:

import urllib.request 

class ExtractHtml(): 

    def Page(self): 

     print("enter the web page name starting with 'http://': ") 
     url=input() 
     site=urllib.request.urlopen(url) 
     data=site.read() 
     file =open("D://python_projects/output.txt", "wb") 
     file.write(data) 
     file.close() 






w=ExtractHtml() 
w.Page() 
0

用に更新はこれを試してみてください。

import urllib.request 
def extractHTML(url): 
    urllib.request.urlretrieve(url, 'temphtml.txt') 

それは簡単ですが、あなたはまだそのように行いたい場合。これが解決策です。

import urllib.request 

def extractHTML(url): 
    f = open('temphtml.txt', 'w') 
    page = urllib.request.urlopen(url) 
    pagetext = str(page.read()) 
    f.write(pagetext) 
    f.close() 

extractHTML('https://www.google.com') 

スクリプトでエラーが発生しました。文字列である必要があります。 str()でバイトを文字列に変換するだけです。

次は、ホストが指定されていないというエラーが表示されました。 Google is a secured site so https: not http:、最も重要なのはの末尾に//を含めるのを忘れたことです。