如果我的问题不合适,我真的很抱歉,但我找不到任何其他简单的方法来从外部网站收集数据,除了使用 API。我觉得我错过了一些东西,但我不确定是什么,我确实搜索了可以检索数据的可能方法,但我无法理解。我目前正在使用 php 和 javascript,我正在寻找更简单的方法来从外部站点获取数据到我的站点。如果您能向我解释如何从外部来源检索数据,我将非常感激。
3 回答
在我看来,这是一个非常大的领域。我一直在做许多涉及“刮”到一定程度的爱好项目。有很多技巧,每次你处理一个新网站时,你都必须发挥你的创造力。
我认为不存在适用于所有人的单一指南。
有两个主要的事情是网站使用 AJAX 异步加载内容或网站在 HTML 的开头提供内容。
如果是第二种情况,很容易获取 HTML 并使用curl
和解析regular expressions
如果这是第一种情况,您可以选择,但我认为您可以检查 chrome 中的网络调用以查看实际数据的下载位置。例如,它可能是非常幸运的 JSON 格式,或者您必须进行逆向工程的自定义格式。
我可以理解为什么很难习惯这种“编程”,因为你无法控制实际的标记,而且你必须依赖很多东西。您应该以最大化脚本容错性的方式选择您的假设。
抱歉,如果您正在寻找有关如何从静态内容中抓取数据的真正基础教程,但这是对您可能遇到的问题的一般解释。
我建议你找一个不通过 AJAX 加载内容并且有一个相对不错的 HTML 标记的网站。然后使用 curl 和正则表达式刮掉它,然后从那里爬上去收集技巧。
注意:您可以选择某种 DOM 分析器或任何它们被称为的东西,并使用它来代替正则表达式,但我不认为它们对于初学者来说是额外的必要条件。
当然有办法,但风险更大,因为它高度依赖于页面的 HTML 格式(即,如果站点的布局发生变化,它将不再工作)。借助 CURL 加载您想要从中检索信息的页面并解析 HTML 结果(在 PHP 中搜索 HTML 解析器)。
你必须告诉你的脚本它应该在哪个 HTML 标记中找到信息。
首先,您可以使用 curl 从其他网站获取 html。在这里查看http://php.net/manual/en/book.curl.php
另请查看http://sourceforge.net/projects/snoopy/或http://cuab.de
您还希望查看此示例http://www.bitrepository.com/how-to-create-a-simple-web-data-extractor.html
那里有很多图书馆。基本上,您将网页作为一个大字符串获取,然后通过使用字符串操作技术进行解析,开始寻找图像或 url 等线索
这是从网站http://www.geekality.net/2011/05/12/php-how-to-get-all-images-from-an-html-page/获取图像的示例。
还要考虑到某些网站出于安全原因不允许 curl fopen。他们不想让你偷那里的工作。您从网站获取内容的时间也有限制,并且网络服务器可能会阻止您的 ip,因为您希望从一个 URL 到另一个 URL 像疯了一样。
这是谷歌的话题,一个黑客的话题,一般来说是一个非常大规模的关于如何爬取被称为互联网的巨大图表的科学话题。
玩得开心,小心点。