web-dev-qa-db-ja.com

Webページのソースを保存する固有の方法

私はBeautifulSoup、Scrapye.t.cについて話しているウェブスクレイピングに関する多くの回答を読みました。ウェブスクレイピングを実行します。

Webブラウザからページのソースを保存するのと同等の方法はありますか?

つまり、PythonでWebサイトをポイントし、ページのソースを標準のPython)だけでテキストファイルに保存する方法はありますか?モジュール?

これが私が到達した場所です:

import urllib

f = open('webpage.txt', 'w')
html = urllib.urlopen("http://www.somewebpage.com")

#somehow save the web page source

f.close()

私はあまり知りませんが、実際にページのソースをプルして記述できるようにするコードを探しています。 urlopenが接続するだけだということを私は集めました。

おそらく、Webページの行を読み取るのと同等のreadlines()がありますか?

16
Fusilli Jerry

urllib2を試すことができます:

import urllib2

page = urllib2.urlopen('http://stackoverflow.com')

page_content = page.read()

with open('page_content.html', 'w') as fid:
    fid.write(page_content)
30
btel

Python 3(urllib2は非推奨)のコードを更新しました:

from urllib.request import urlopen
html = urlopen("http://www.google.com/")
with open('page_content.html', 'w') as fid:
    fid.write(html)
3
SoHei

SoHeiからの回答はhtml.read()がないため機能せず、ファイルは「w」ではなく「wb」パラメーターで開く必要があります。 'b'は、データがバイナリモードで書き込まれることを示します(.read()はバイトのシーケンスを返すため)。完全に機能するコードは次のとおりです。

from urllib.request import urlopen
html = urlopen("http://www.google.com/")
page_content = html.read()
with open('page_content.html', 'wb') as fid:
     fid.write(page_content)
1
DrManhattan