2016-07-17 5 views
0

Dies ist mein erster Versuch zu kratzen. Es gibt eine Website mit einer Suchfunktion, die ich gerne nutzen würde.Web-Scraping Beratung/Vorschläge

Wenn ich eine Suche mache, werden die Suchdetails nicht in der Website-URL angezeigt. Als ich das Element und Blick auf dem Registerkarte Netzwerk überprüfe, bleibt die Anforderungs-URL das gleiche (method:post), aber wenn ich am Boden sah, in dem Form Data Abschnitt, klickte ich Quelltext anzeigen und es war meine Suche Details in URL-Form.

Meine Frage ist:

Wenn die Anfrage url = http://somewebsite.com/search und die Form data source = startDate=09.07.2016&endDate=10.07.2016

Wie kann ich die beiden ziehen Daten zum Schaben verbinden? Ich bin neu im Kratzen, also wenn ich falsch herumgehe, sag es mir bitte.

Danke!

+0

verwenden Ich glaube, dass Sie, dass die großen Suchmaschinen haben sich aktiv gemacht finden, was Sie eine größere Herausforderung zu tun versuchen, als es in den vergangenen Jahren war. Sie bieten jedoch APIs, um Suchen zu ermöglichen. Diese erfordern in der Regel, dass Sie eine bestimmte Zugriffsebene für die API abonnieren und bezahlen. Wenn Sie sich dafür entscheiden, weiterhin zu kratzen, seien Sie bereit, von CAPTCHAs sehr schnell herausgefordert zu werden. –

Antwort

1

Scraping ist schlechte Praxis, aber in einigen Fällen ist es die einzige Möglichkeit, etwas zu bekommen.
Wenn Sie einige Website scraping betrachten, seien Sie sanft und machen Sie nicht 1m Anfragen an einem Tag.

Grundsätzlich müssen Sie php curl fucntion verwenden und Post Felder

<?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

Danke AukT. Ich habe darüber nachgedacht, es in Python zu machen. Sieht aus wie cURL ist eine bessere Option. Was denken Sie? Und nein, ich habe nicht vor, jeden Tag eine Menge Anfragen zu stellen, nur eine Handvoll. :) – MangoPie

+1

kannst du es in jeder Sprache machen, die Curl unterstützt. Einfach Google Locken nach% Sprache%. – AucT

1

Ethik

Mit einem Bot auf dem Inhalt der Seiten übergeben bekommen Sie von Vorteil sein und die Website, die Sie kratzen. Sie können die Daten verwenden, um auf den Inhalt der Site zu verweisen, wie es Suchmaschinen tun. Manchmal möchten Sie Benutzern möglicherweise einen Dienst anbieten, den die ursprüngliche Website nicht bietet.

Manchmal wird das Kratzen jedoch für ruchlose Zwecke verwendet. Stehlen von Inhalten, Nutzung der Computerressourcen anderer oder Schlimmeres.

Es ist nicht klar, welche Absicht Sie haben. Ihnen zu helfen, könnte unethisch sein. Ich sage es nicht, aber es könnte sein. Ich verstehe 'AucT' nicht und sage, dass es eine schlechte Übung ist, und gebe dann eine Antwort. Worum geht es?

Zwei Anmerkungen:

  1. Suchergebnisse nehmen mehr Ressourcen als die meisten anderen Web-Seiten zu erzeugen. Sie sind besonders anfällig für Denial-of-Service-Angriffe.

  2. Ich habe mehrere Websites, und ich habe bemerkt, dass eine große Menge an Datenverkehr von Bots verursacht wird. Es kostet mich buchstäblich Geld. Einige Websites haben mehr Zugriffe von Bots als von Personen. Es gerät außer Kontrolle und ich musste ziemlich viel Zeit investieren, um das Problem in den Griff zu bekommen. Bots, die Bandbreitenbeschränkungen nicht einhalten, werden von mir permanent blockiert. Ich erlaube natürlich freundliche Bots.

+0

Hallo KIKO. Danke für deine Antwort. Nein, ich beabsichtige nicht, Informationen zu stehlen. Ich beabsichtige tatsächlich, das zu tun, was Sie zu Beginn Ihrer Antwort vorgeschlagen haben, "um Benutzern einen Service zu bieten, den die ursprüngliche Website nicht bietet." Ich möchte nicht, dass irgendjemand ihre Ethik hinterfragt, weil ich eine Frage gestellt habe, wie man kratzen könnte. – MangoPie

+0

Wenn Ihre Absichten gut sind, nehme ich an, dass Sie die Website, die Sie abkratzen werden, kontaktiert haben und damit einverstanden sind, dass es in Ordnung ist? Jeder Content-Provider würde das zu schätzen wissen. Wenn Sie ihnen Ihre eindeutige "Browser-Zeichenfolge" zur Verfügung stellen, können sie auch Ihre Verwendung überwachen. Dies kann Ihren Service zuverlässiger machen. –

1

können Sie einfach 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); 
?>