【问题标题】:Python to Save Web PagesPython 保存网页
【发布时间】:2013-09-01 08:46:55
【问题描述】:

这可能是一个非常简单的任务,但我找不到任何帮助。我有一个格式为 www.xyz.com/somestuff/ID 的网站。我有一个我需要从中获取信息的 ID 列表。我希望有一个简单的脚本去一个站点并以简单的形式为每个 ID 下载(完整的)网页 ID_whatever_the_default_save_name_is 在特定文件夹中。

我可以运行一个简单的 python 脚本来为我执行此操作吗?我可以手工完成,它只有 75 个不同的页面,但我希望将来能用它来学习如何做这样的事情。

【问题讨论】:

  • 以下解决方案对您有用吗?

标签: python web web-scraping


【解决方案1】:

Mechanize 是一个用 python 爬网的很棒的包。您的问题的一个简单示例是:

import mechanize

br = mechanize.Browser()
response = br.open("www.xyz.com/somestuff/ID")
print response

这只是抓取您的网址并打印来自服务器的响应。

【讨论】:

  • 感谢您的开始,但我的语法无效,如何将 ID 列表加载到其中以将它们以“ID_webpage”格式保存在同一文件夹中?
  • 我假设您在 import 语句中遇到了该语法错误,因为 python 没有默认使用 mechanize。至于其余的,一般来说,在不提供一些代码来展示你到目前为止所做的事情的情况下寻求帮助是不赞成的,所以我只提供一个大致的大纲。将您的 ID 存储为列表,遍历该列表并将上述代码放入循环中,同时将打开行中的“ID”更改为循环中正在迭代的当前 ID,然后将该响应写入文件。跨度>
  • 谢谢,我会研究机械化的。我的问题的很大一部分是将网页保存为完整的网页。这似乎没有这样做。那会是对代码的编辑吗?
  • ICanHasFay:我在 Python 3.3.1 上使用“pip install ...”安装了 mechanize,我还收到了语法错误: Invalid Syntax 。我不认为这是导入语句错误。
  • Mechanize 网站 (wwwsearch.sourceforge.net/mechanize/faq.html) 常见问题页面下的第 1 位表示“Python 2.4、2.5、2.6 或 2.7。尚不支持 Python 3。”
【解决方案2】:

这可以在 python 中使用 urllib 模块简单地完成。这是 Python 3 中的一个简单示例:

import urllib.request

url = 'www.xyz.com/somestuff/ID'
req = urllib.request.Request(url)
page = urllib.request.urlopen(req)
src = page.readall()
print(src)

有关 urllib 模块的更多信息 -> http://docs.python.org/3.3/library/urllib.html

【讨论】:

  • 谢谢,我正在寻找将最终产品保存为可以离线查看的完整网页 html 文件。另外,我想提供一个 ID 列表并将它们保存在同一个位置,文件名为 ID_default_save_name
【解决方案3】:

您只需要网站的 html 代码吗?如果是这样,只需使用主机站点创建一个 url 变量并随时添加页码。我将以http://www.notalwaysright.com 为例进行此操作

import urllib.request

url = "http://www.notalwaysright.com/page/"

for x in range(1, 71):
    newurl = url + x
    response = urllib.request.urlopen(newurl)
    with open("Page/" + x, "a") as p:
        p.writelines(reponse.read())

【讨论】:

    猜你喜欢
    • 2012-06-13
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多