如何从另一个网站“抓取”内容

Posted

技术标签:

【中文标题】如何从另一个网站“抓取”内容【英文标题】:How to 'Grab' content from another website 【发布时间】:2010-08-01 13:08:47 【问题描述】:

朋友问我这个问题,我无法回答。

他问:我正在制作这个网站,您可以在其中存档您的网站...

它的工作原理是这样的,您输入您的网站,例如 something.com,然后我们的网站会抓取该网站上的内容(如图像),以及所有这些内容并将其上传到我们的网站。然后人们可以在 oursite.com/something.com 上查看该站点的精确副本,即使阻止 something.com 的服务器已关闭。

他怎么能这样? (php?) 有什么要求?

【问题讨论】:

“您可以将网站存档的网站”web.archive.org 如果你熟悉 php,有 Symfony2 组件,称为 WebCrawler 和 CssDom。 Symfony 的创建者已经整理了一个演示,展示了如何使用这些组件进行网络抓取。 github.com/fabpot/Goutte 【参考方案1】:

听起来您需要创建一个网络爬虫。 Web 爬虫可以用任何语言编写,尽管我建议使用 C++(使用 cURL)、Java(使用 URLConnection)或 Python(w/urrlib2)。您可能还可以使用 curl 或 wget 命令和 BASH 快速破解某些东西,尽管这可能不是最好的长期解决方案。此外,请不要忘记,您应该下载、解析并尊重“robots.txt”文件(如果您在抓取某人的网站时存在)。

【讨论】:

【参考方案2】:

使用 wget。 gnuwin32 软件包中的 linux 版本或 windows 版本。 get it here.

【讨论】:

我认为使用 wget 只会让你得到 html 。如果该站点有其他来源(图片、文件..),您仍然会引用相同的(可能不可用的)资源。如果目的是提供一个临时的“故障转移”站点,他可能还需要下载资源。 这是错误的,wget 可以创建镜像,也会抓取其他资源。当然,您必须正确设置它。【参考方案3】:
    使用 curl 获取 html。 现在将所有图像、css、javascript 更改为绝对 url,如果它们是相对 url。 (这有点不道德)。您可以从您的网站获取所有这些资产并托管。 尊重所有网站的“robots.txt”。 read here。

【讨论】:

以上是关于如何从另一个网站“抓取”内容的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个网站通过 Id 获取元素 [关闭]

网站如何建设可以让搜索引擎喜欢?

js如何获取网页打开速度?

像 kayak.com 这样的网站如何聚合内容? [关闭]

网站SEO优化,爬虫如何抓取数据与搜索引擎的工作原理

如何用Python爬虫抓取网页内容?