16

我已经阅读了很多关于 Web 抓取的答案,其中谈到了 BeautifulSoup、Scrapy 等来执行 Web 抓取。

有没有办法相当于从网络浏览器中保存页面的源?

也就是说,在 Python 中有没有办法将它指向一个网站并让它将页面的源代码保存到一个仅包含标准 Python 模块的文本文件中?

这是我要去的地方:

import urllib

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

#somehow save the web page source

f.close()

我知道的不多——但正在寻找代码来实际提取页面的源代码,以便我可以编写它。我收集到 urlopen 只是建立了一个连接。

也许有一个 readlines() 等效于阅读网页的行?

4

3 回答 3

31

您可以尝试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)
于 2012-11-11T14:52:25.883 回答
2

更新了 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)
于 2018-02-11T18:22:07.210 回答
1

SoHei 的回答将不起作用,因为它缺少 html.read() 并且文件必须使用“wb”参数而不是“w”打开。'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)
于 2018-12-24T07:19:04.043 回答