| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

28-12-2010, 17:20
|
|
CoolCopper
Registrierter Benutzer
|
|
Registriert seit: Jan 2005
Beiträge: 13
|
|
SQL Datenbank durch PHP mit Suchmaschine abgleichen?
Ich bin zu Zeit dran ein Script zu schreiben wo ich meine fast 5.000 Kundesetzte in einer Suchmaschine durchsuchen möchte. Ziel ist es die TOP 10 Domain Resultate in die SQL Datenbank zurückzugeben.
Meine Tabelle besteht aus Mehrere Spalten Name, Straße PLZ und Ort
Diese Werte sollen per Link an die Suchmaschine übergeben werden um die resoluteste nach links auf Domains zu durchsuchen und diese hinter den Kunden einzufügen, danach ist die nächste Zeile mit dem nächsten Kunden rank.
Die Datenbank konnte ich importieren und auch eine Verbindung ist erfolgreich. Leider werden die Zeilen nicht an die Url weitergeben. Hat jemand Tipps für mich wie ich diese Script bewerkstellige?
PHP-Code:
$mysqlhost = "XXXXXX"; // MySQL-Host angeben
$mysqluser = "XXXXXX"; // MySQL-User angeben
$mysqlpwd = "XXXXXX"; // Passwort angeben
// Login an SQL Datenbank
$conn = mysql_connect("$mysqlhost", "$mysqluser", "$mysqlpwd") or die ("Keine Verbindung moeglich");
$mydb = mysql_select_db("XXXXXX") or die ("Die Datenbank existiert nicht.");
if (!$conn) {
echo "Keine Verbindung zur DB: " . mysql_error();
exit;
}
if (!$mydb) {
echo "Kann mydb nicht auswählen: " . mysql_error();
exit;
}
$sql = 'SELECT B, C, D FROM Tabelle1';
$result = mysql_query($sql);
if (!$result) {
echo "Anfrage ($sql) konnte nicht ausgeführt werden : " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "Keine Zeilen gefunden, nichts auszugeben, daher Abbruch";
exit;
}
$url = "http://www.google.de/#q=$sql";
$file = fopen($url, "r");
while(!feof($file))
echo fgets($file, 4096);
fclose($file);
Liebe Grüße
|

28-12-2010, 18:15
|
|
CoolCopper
Registrierter Benutzer
|
|
Registriert seit: Jan 2005
Beiträge: 13
|
|
So hab jetzt noch ein bisschen recherchiert. Denke dass die einfachste Lösung über die Google API zu bewerkstelligen ist, oder?
Google Web API Tutorial
PHP-Code:
<?
require_once("nusoap.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Strict//EN" "DTD/xhtml1-strict.dtd"><html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<title>Test</title>
</head>
<body>
<h1>Hello World</h1>
<?
$Query = "Hello World"; // [3]
$key = "[Put your developer's key here]";
$start = 0;
$parameters = array(
"key" => $key,
"q" => $Query,
"start" => $start,
"maxResults" => 10,
"filter" => true,
"restrict" => "",
"safeSearch" => false,
"lr" => "lang_en",
"ie" => "",
"oe" => ""
);
$soapclient = new soapclient("http://api.google.com/search/beta2"); // [1]
$result = $soapclient->call("doGoogleSearch", $parameters, "urn:GoogleSearch");
$searchtime = $result["searchTime"];
$begin = $start + 1;
$end = $start + $parameters["maxResults"];
$total = $result["estimatedTotalResultsCount"];
if ($total > 0)
{
$result = $result["resultElements"];
for ($i = 0; $i < $parameters["maxResults"]; $i++)
{
$element = $result[$i];
$url = $element["URL"];
$title = $element["title"];
$snippet = $element["snippet"]; // [2]
?><p><?= $snippet ?></p><?
}
}
?>
Wenn jemand von Euch einen anderen Ansatz wie man es eleganter machen kann haben sollte... würde ich mich über ein Posting freuen.
Gruß
|

28-12-2010, 19:56
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
Dafür ist die API ja da.
Aber ich verstehe dein Vorhaben ehrlich gesagt nicht.
|

28-12-2010, 20:27
|
|
CoolCopper
Registrierter Benutzer
|
|
Registriert seit: Jan 2005
Beiträge: 13
|
|
Hey 
Ich hab hier einige tausend Kunden Daten wo ich Zeile für Zeile Namen PLZ und Ort per Copy and Paste in Google kopiere und dann selber auswerte, ob es noch diesen Kunden gibt und ob dieser Kunde eine eigene HP hat oder nicht. Hat der Kunde eine HP, so wird Er von mir in unsere Datenbank als noch aktiv eingepflegt.
Genau diese Prozedur will ich mir zukünftig Sparren, da ich von meinen Kollegen noch ca. 35.000 Kundendaten bekomme die ich nicht Manuel auswerten kann.
Mit Google API kann ich leider nur 100 Suchen Täglich durchführen 
Zur Bessern Verständnis
Hab eine Datenbank (SQL) mit ca.
35.000 Datensetzten also Kundennummer, Name, Straße, Plz und Ort
Dieses Script soll also Name, Staße, Plz und Ort in google Suchen und mir von der ersten Seite (Suchergebnis) die 10 gefunden URLs in die Datenbank zurückspielen (hinter Ort)
Geändert von CoolCopper (29-12-2010 um 11:47 Uhr)
|

29-12-2010, 13:29
|
|
CoolCopper
Registrierter Benutzer
|
|
Registriert seit: Jan 2005
Beiträge: 13
|
|
Sooo hab jetzt noch ein wenig herumexperimentiert, leider komm ich zu Zeit aber an den Punkt nicht weiter wo per fopen die Seite geladen wird. Hier lädt mein Browser alle Daten Sätze die in der Datenbank sind und diese führt zum Absturz des Browsers.
Wie erreiche ich mit fopen, dass ein Seite nach der anderen Seite abgearbeitet wird? Danach kann ich mich dem Beriech widmen der mein Resultat nach http: / URL durchsucht und diese in die Datenbank schreibt.
PHP-Code:
<?php $mysqlhost = "XXXXXX"; // MySQL-Host angeben $mysqluser = "XXXXXX"; // MySQL-User angeben $mysqlpwd = "XXXXXX"; // Passwort angeben // Login an SQL Datenbank $conn = mysql_connect("$mysqlhost", "$mysqluser", "$mysqlpwd") or die ("Keine Verbindung moeglich"); $mydb = mysql_select_db("XXXXXX") or die ("Die Datenbank existiert nicht.");
if (!$conn) { echo "Keine Verbindung zur DB: " . mysql_error(); exit; }
if (!$mydb) { echo "Kann mydb nicht auswählen: " . mysql_error(); exit; } $sql = "SELECT * FROM `Tabelle1`"; $result = mysql_query($sql);
while($row = mysql_fetch_array($result)) { //gibt die Anfrage an Google (Name+Ort) $url = 'http://www.google.de/#q='.$row['Name']."+".$row['Strasse']."+".$row['Ort']; //Seite Durchsuchen $fp = @fopen($url);
while(!feof($fp)) { $zeile = fgets($fp, 200); //200 Anzahl Zeichen einer Zeile }
fclose($fp); }
if (!$result) { echo "Anfrage ($sql) konnte nicht ausgeführt werden : " . mysql_error(); exit; }
if (mysql_num_rows($result) == 0) { echo "Keine Zeilen gefunden, nichts auszugeben, daher Abbruch"; exit; }
mysql_free_result($result); ?>
Abgleich und suche nach URL:
PHP-Code:
// URL holen preg_match('@^(?:http://)?([^/]+)@i', "$fp", $treffer); $host = $treffer[1];
// die letzten beiden Segmente aus Hostnamen holen preg_match('/[^.]+\.[^.]+$/', $host, $treffer);
Geändert von CoolCopper (29-12-2010 um 14:50 Uhr)
|

29-12-2010, 16:44
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Entferne das @ vor fopen und drehe das error_reporting auf!
|

04-01-2011, 09:59
|
|
rei
Registrierter Benutzer
|
|
Registriert seit: Dec 2010
Beiträge: 15
|
|
Alternative zu Google
Also wenn es nicht unbedingt Google sein muss:
Yahoo! Search BOSS - YDN
Hier bekommst Du Deine SuchErgebnisse sauber aufbereitet als XML.
Example: http://boss.yahooapis.com/ysearch/web/v1/"Apple Pie"?appid=xyz&format=xml
Geändert von rei (04-01-2011 um 10:03 Uhr)
Grund: Beispiel eingefügt
|

04-01-2011, 15:08
|
|
CoolCopper
Registrierter Benutzer
|
|
Registriert seit: Jan 2005
Beiträge: 13
|
|
Geändert von CoolCopper (04-01-2011 um 15:45 Uhr)
|

04-01-2011, 17:17
|
|
Apfelmus
Registrierter Benutzer
|
|
Registriert seit: Aug 2009
Beiträge: 34
|
|
Darf ich Fragen für was man so was braucht ?
z.B.
Google 45+bremen
für was braucht man 10 Ergebnisse?
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|