1

我的任务是创建一个网络抓取软件,我什至不知道从哪里开始。任何帮助都将不胜感激,即使只是告诉我这些数据是如何组织的,或者网站正在使用什么“类型”的数据布局都会有所帮助,因为我将能够谷歌搜索该术语。

http://utilsub.lbs.ubc.ca/ion/default.aspx?dgm=x-pml:/diagrams/ud/Default/7330_FAC-delta_V2.4.1/7330_FAC-delta_V2.4.1-pq.dgm&node=Buildings.Angus_addition&logServerName =QUERYSERVER.UTIL2SUB&logServerHandle=327952

http://utilsub.lbs.ubc.ca/ion/default.aspx?dgm=x-pml:/diagrams/ud/network.dgm&node=Buildings.AERL&unique_id=75660a13-5145-42d5-b661-a50f328306c7&logServerName=QUERYSERVER.UTIL2SUB&logServerHandle =327952

基本上,我需要从这个网站中提取“谐波值”。具体来说,我需要第二个链接上显示的 9 个数字。这些数字不会传递给 HTML,它们似乎每隔几秒钟就会自动更新一次。我需要能够在它们更新时实时提取这些值。即使这是不可能的,我仍然需要证明进行这种网络抓取是不可能的。我没有为任何后端提供任何 API,也不知道他们的站点如何接收数据。

总的来说,任何帮助都将不胜感激,即使它只是一些简单的搜索词来让我朝着正确的方向前进。我目前在网络抓取/数据挖掘/

4

3 回答 3

3

网页抓取

从网站解析 HTML 也称为屏幕抓取。这是一个访问外部网站信息(信息必须是公开的——公共数据)并根据需要进行处理的过程。例如,如果我们想从不同网站获取诺基亚 Lumia 1020 的平均评分,我们可以从所有网站中提取评分并在我们的代码中计算平均值。所以我们可以说,作为一个普通的“用户”,你可以拥有什么作为“公共数据”,你可以使用 HTML Agility Pack 轻松地废弃它。

试试这些:

ASP.NET:HTMLAgilityPack开源库)

在 ASP.NET 中使用 HtmlAgilityPack (HAP) 抓取 HTML DOM 元素

PHP & CURL :使用 PHP & CURL 进行网页抓取

Node.js使用 Node.js 进行屏幕抓取

YQL & Ajax :使用 YQL 和 AJAX 进行屏幕抓取

于 2013-10-25T23:49:37.127 回答
2

试试http://code.google.com/p/crawler4j/ 它很容易使用,你必须重写一个类,即 Controller.java。

您只需要指定种子,它就会为每个抓取的网站返回两个变量中的文本和 HTML 数据。

于 2014-04-04T09:06:47.563 回答
0

第二个链接是每隔几秒钟从 API 中提取信息。使用谷歌浏览器,您可以使用开发人员工具检查类似的内容,然后单击“网络”。然后,您可以查看发送了哪些请求,并且可以通过右键单击请求 -> 复制为 CURL 轻松复制它们。然后你会得到类似这样的东西,其中包括由 CURL 命令中的请求发送的所有标头和发布数据。这是第二个链接所调用的:

curl 'http://utilsub.lbs.ubc.ca/ion/default.aspx/GetRTxmlData' -H 'Cookie: ASP.NET_SessionId=oq0qiwuqbb3g3453jvyysvjx' -H 'Origin: http://utilsub.lbs.ubc.ca' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Host: utilsub.lbs.ubc.ca' -H 'Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36' -H 'Content-Type: application/json; charset=UTF-8' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Referer: http://utilsub.lbs.ubc.ca/ion/default.aspx?dgm=x-pml:/diagrams/ud/network.dgm&node=Buildings.AERL&unique_id=75660a13-5145-42d5-b661-a50f328306c7&logServerName=QUERYSERVER.UTIL2SUB&logServerHandle=327952' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --data-binary $'{\'dgm\':\'x-pml:/diagrams/ud/network.dgm\',\'id\':\'75660a13-5145-42d5-b661-a50f328306c7\',\'node\':\'\'}' --compressed

API 返回包装在 JSON 中的 XML。

正如 codeSpy 所说,您可能想将 CURL 与 PHP 一起使用,您只需设置所有标头并发布数据并正确复制请求,否则 API 不会响应您的请求。

于 2013-10-25T23:59:45.353 回答