2016-07-17 24 views
0

这是我第一次尝试刮擦。有一个网站有我想要使用的搜索功能。网络刮取意见/建议

当我进行搜索时,搜索详细信息不会显示在网站的网址中。当我检查的元素,并期待在网络选项卡,请求URL保持不变(method:post),但是当我看着下方,在Form Data节,我点击查看源代码,并有我的搜索详细信息以url形式。

我的问题是:

如果请求URL = http://somewebsite.com/search表格数据源= startDate=09.07.2016&endDate=10.07.2016

我怎样才能连接两个拉数据刮?我是新来的人,所以如果我正在讨论这个错误,请告诉我。

谢谢!

+0

我相信,你会发现,各大搜索引擎都积极让你尝试做更多的具有挑战性的比它在过去的几年什么。但是,他们提供API来允许搜索。这些通常会要求您订阅并支付一定级别的API访问权限。如果你确实选择坚持试图刮擦,准备好很快被CAPTCHA挑战。 –

回答

1

刮是不好的做法,但在某些情况下,它是获得某些东西的唯一方法。
如果您正在刮一些网站,请考虑保持温和,并且不要在一天内发出1百万个请求。

基本上你将需要使用PHP卷曲温控功能,并通过后场

<?php 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,"http://example.com/search"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('postvar1'=>'value1'))); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$html = curl_exec ($ch); 

curl_close ($ch); 
+0

感谢AucT。我也在考虑用python来做这件事。看起来像cURL是一个更好的选择。你怎么看?不,我并不打算每天要做一次巨大的请求,只是一小撮。 :) – MangoPie

+1

你可以用任何语言来支持curl。只是谷歌卷曲后%language%。 – AucT

1

道德

使用机器人来获得在网站的内容可以是你和你的网站有利刮。您可以使用这些数据来引用网站的内容,例如搜索引擎。有时您可能想为原始网站不提供的服务提供给用户。

但是,有时刮被用于恶意目的。窃取内容,使用他人的计算机资源,或更糟。

目前尚不清楚你有什么打算。帮助你,可能是不道德的。我不是说它是,但它可能是。我不明白'AucT',说这是不好的做法,然后给出答案。那是什么?

有两点需要注意:

  1. 搜索结果需要更多的资源,以产生比大多数其他网页。他们特别容易受到拒绝服务攻击。

  2. 我运行了多个网站,并且我注意到大量的流量是由机器人造成的。这实际上花了我的钱。有些网站比机器人拥有更多的流量。它已经失控,我不得不花费相当多的时间来控制问题。不遵守带宽限制的机器人永久受到我的阻挡。我当然会允许友好的机器人。

+0

嘿KIKO。感谢您的回答。不,我不打算窃取信息。我实际上打算按照你在答案的开头提出的建议,“向用户提供原始网站不提供的服务。”我不想让任何人质疑他们的道德问题,因为我问了一个关于如何尝试抓取的问题。 – MangoPie

+0

如果您的意图是好的,我认为您已经联系了您要刮去的网站,并同意他们的说法。任何内容提供商都会赞赏。如果您为他们提供独特的“浏览器字符串”,他们还可以监控您的使用情况。这样做可以使您的服务更可靠。 –

1

您可以使用简单的HTML DOM http://simplehtmldom.sourceforge.net/

<?php 
include_once("simple_html_dom.php"); 
$request = array(
     'http' => array(
       'method' => 'POST', 
       'content' => http_build_query(array(
         'startDate' => '09.07.2016', 
         'endDate' => '10.07.2016' 
       )), 
     ) 
); 
$url = "http://somewebsite.com/search"; 
$context = stream_context_create($request); 
$html = file_get_html($url, false, $context); 
?>