php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


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! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 16-03-2010, 13:36
OnkelBenS
 Registrierter Benutzer
Links : Onlinestatus : OnkelBenS ist offline
Registriert seit: Mar 2010
Beiträge: 9
OnkelBenS befindet sich auf einem aufstrebenden Ast
Standard Daten aus Website auslesen - file_get_contents?

Hi,

ich hab eine Seite mit etlichen Links, die ich automatisiert auslesen und in einer mySQL Tabelle speichern will.

PHP-Code:
<?php

    $sql 
= @mysql_connect("localhost""root""");
    if(
$sql == false) {
    echo 
"Keine Verbindung zum SQL-Server";
    exit();
    }

    
$url "http://www.linkseite.de";
    
    
$html file_get_contents($url);

    
$startstring "<td><a href=\"";
    
$endstring "\"  title=\"zur Detailansicht";

    echo 
$html;

?>
Sind 20 Links aus der Seite, jeweils innerhalb von start und endstring. Leider komm ich nicht mehr drauf, wie ich mir genau den Inhalt dazwischen abgreifen kann. Regex wird mittlerweile ja für sowas genutzt, damit komm ich jedoch nicht klar. Daher wollt ich's anders machen.
Jetzt hab ich in $html den gesamten Code der Seite als String. Jetzt müßte eine for each Schleife folgen, aber wie greife ich in dieser auf die Links zwischen den beiden Filterstrings zu?
Mit Zitat antworten
  #2 (permalink)  
Alt 16-03-2010, 13:40
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.581
h3ll befindet sich auf einem aufstrebenden Ast
Standard

PHP: strpos - Manual
PHP: substr - Manual
Mit Zitat antworten
  #3 (permalink)  
Alt 16-03-2010, 14:35
OnkelBenS
 Registrierter Benutzer
Links : Onlinestatus : OnkelBenS ist offline
Registriert seit: Mar 2010
Beiträge: 9
OnkelBenS befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<?php
    $url 
"http://www.linkseite.de";
    
    
$html file_get_contents($url);

    
$startstring "gsid";
    
$endstring "de&amp;_bereich=A";

    
$posstart strpos($html$startstring);
    
$posend strpos($html$endstring);
    
$laenge $posend $posstart;

    
$link1 substr($html$posstart$laenge);      

    echo 
$link1;
               
?>
Ok, denk soweit ist mir das Alles klar - das gibt mir jetzt schonmal was aus.

Der Aufbau der Links der Seite:
Die Ausgabe:
gsid=bb2.c.525368. - wodraus ich mir die zu sammelnden Links wieder zusammen setzen kann. Jetzt gibt's allerdings pro Seite 20 Links und nicht nur einen - eine for each Schleife wird benötigt?!
Wie ungefähr muß ich da jetzt ran gehen?
Mit Zitat antworten
  #4 (permalink)  
Alt 16-03-2010, 14:56
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

dafür nimmst du eine while-Schleife und brichst sie erst ab, wenn $posstart oder $posend false ergeben.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 16-03-2010, 15:19
OnkelBenS
 Registrierter Benutzer
Links : Onlinestatus : OnkelBenS ist offline
Registriert seit: Mar 2010
Beiträge: 9
OnkelBenS befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
    $url "http://www.seite.de";
    
$html file_get_contents($url);
    
$startstring "gsid";
    
$endstring "de&amp;_bereich=A";

    
$posstart strpos($html$startstring);
    
$posend strpos($html$endstring);
    
$laenge $posend $posstart;
    
    
$link1 substr($html$posstart$laenge)."\n"
    
$dateiname "test.txt";
    
$handler fOpen($dateiname "a+");
    
fWrite($handler $link1);
    
fClose($handler);
  
?> 
so sieht mein Code jetzt aus, da cih jetzt erstmal nur alle Links
sammle, und dann später aus denen den Content hole, hab ich mir gedacht, ist es besser diese erstmal einfach Zeile für Zeile in eine .txt zu schreiben - ist das so gut gelöst oder funktionierender unsinn?

Jetzt zur Schleife:
PHP-Code:
while($posstart != false)
    {
$link1 substr($html$posstart$laenge);      
...
in Datei schreiben usw...

    } 
So stimmen kann das noch nicht, oder? Hier wird jedenfalls nicht weiter gespeichert dann.
Mit Zitat antworten
  #6 (permalink)  
Alt 16-03-2010, 15:32
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Du musst natürlich innerhalb der Schleife entweder den Suchstring kürzen (sonst findet er ja immer dasselbe) oder aber den dritten Parameter von strpos benutzen und damit festlegen, ab wo gesucht werden soll.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #7 (permalink)  
Alt 16-03-2010, 15:42
OnkelBenS
 Registrierter Benutzer
Links : Onlinestatus : OnkelBenS ist offline
Registriert seit: Mar 2010
Beiträge: 9
OnkelBenS befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Du musst natürlich innerhalb der Schleife entweder den Suchstring kürzen (sonst findet er ja immer dasselbe) oder aber den dritten Parameter von strpos benutzen und damit festlegen, ab wo gesucht werden soll.
Puh, kannst du mir da bitte ein klein wenig mehr zu sagen - so weiß ich nicht wirklich weiter. Nach dem ersten Durchlauf, hab ich start und end Position vom ersten Link, dann muß ab der Position weiter nach $startstring gesucht werden - von der Logik her richtig? Wenn ja wüßt ich aber dennoch nicht wie ich ansetzen sollte.
Mit Zitat antworten
  #8 (permalink)  
Alt 16-03-2010, 15:51
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Ich war sicher, dass die gegebenen Infos reichen würden. Wo liegt das Problem? Hast du mal im Handbuch nachgelesen, wofür der dritte Parameter gut ist?

PHP-Code:
    $posstart strpos($html$startstring$posend);
    
$posend strpos($html$endstring$posstart); 
Mehr Code gibt's von mir aber nicht.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (16-03-2010 um 15:55 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 16-03-2010, 16:34
OnkelBenS
 Registrierter Benutzer
Links : Onlinestatus : OnkelBenS ist offline
Registriert seit: Mar 2010
Beiträge: 9
OnkelBenS befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Ich war sicher, dass die gegebenen Infos reichen würden. Wo liegt das Problem? Hast du mal im Handbuch nachgelesen, wofür der dritte Parameter gut ist?

PHP-Code:
    $posstart strpos($html$startstring$posend);
    
$posend strpos($html$endstring$posstart); 
Mehr Code gibt's von mir aber nicht.
Merci
Klar hab ich's mir durch gelesen, will php lernen, nich ständig alles vorgekaut bekommen. Ich hatte's nur nicht ganz verstanden. Online in ein andres manual geguckt - passt.

An und für sich macht er jetzt ja was er soll, danke auf jeden Fall dafür.
Jetzt muß ich nur dafür sorgen, dass er das erste Ergebnis auch speichert, dass schaff ich alleine. Aber noch ein weiteres Problem:

<!DOCTYPE html PU

wird mir am Ende der Datei noch gespeichert.

PHP-Code:
    $url "http://www.seite.de/";
    
$html file_get_contents($url);
   
    
$startstring "gsid";
    
$endstring "de&amp;_bereich=A";

    
$posstart strpos($html$startstring);
    
$posend strpos($html$endstring);
    
$laenge $posend $posstart;

 while(
$posstart != false)
    {
    
    
$posstart strpos($html$startstring$posend);
    
$posend strpos($html$endstring$posstart);

    
$link1 substr($html$posstart$laenge)."\n";;  
    
$zwischenpos $posend 1;

    
$dateiname "test.txt";
    
$handler fOpen($dateiname "a+");
    
fWrite($handler $link1);
    
fClose($handler);
    }

?> 

EDIT:
Ok, erster Hit wird auch gespeichert, klar das da nichts passiert, wenn ich die Speicherfunktion erst in der Schleife
habe, aber der erste Hit vorher gefunden wird.

Wie bekomm ich jetzt das "<!DOCTYPE html PU" weg?

Geändert von OnkelBenS (16-03-2010 um 17:21 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 18-03-2010, 14:27
OnkelBenS
 Registrierter Benutzer
Links : Onlinestatus : OnkelBenS ist offline
Registriert seit: Mar 2010
Beiträge: 9
OnkelBenS befindet sich auf einem aufstrebenden Ast
Standard string zerlegen - Probleme - doch regex?

Hey,

Bin gerad dabei Infos aus einer Website auszulesen. Dafür nutze ich
Start und Endpunkte und .

PHP-Code:
$startstringTE "Telefon<";
$endstringTE ">Fax";

$posstartTE strpos($html$startstringTE);
$posendTE strpos($html$endstringTE);

$laengeTE $posendTE $posstartTE -69;
$telefon substr($html$posstartTE 16$laengeTE);

echo 
"Telefon:".$telefon."<br><br>"
Während der Quelltext wie folgt aussieht:
HTML-Code:
<tr>
        <th class="left">Telefon</th><td>(03210)1234567</td>
      </tr>
      <tr>
        <th class="left">Fax</th><td>(03210) 1234567</td>
      </tr>
Das klappt auch wunderbar, nur hab ich jetzt das Problem,
dass ich die Adresse in Anschrift, Postleitzahl und Ort zerlegen möchte.

HTML-Code:
<tr>
        <th class="left">Adresse</th><td>Am Stadion 1<br />12345 wasauchimmer</td>
      </tr>
Mit meiner bisherigen Lösung bekomm ich nur alles in einem. Wie zerlege ich
das am besten? Regex hab ich mir bereits angeguckt, kapier das aber leider nicht ganz.
Gibt's noch eine andere Möglichkeit bzw. kann mir wenn nicht jemand ein wneig unter die Arme
greifen was die regulären Ausdrücke angeht?
Mit Zitat antworten
  #11 (permalink)  
Alt 18-03-2010, 14:34
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

dachte mir schon, dass du mit strpos und substr nicht weiter kommst. Reguläre Ausdrücke sind anfangs etwas kompliziert, aber da muss man früher oder später sowieso durch und danach liebst du sie. Lies das Handbuch und ein paar Tutorials dazu. Das schaffst du schon.

Regenechsen ist vielleicht hilfreich für den Einstieg, aber das PHP Handbuch reicht auch und ist im Zweifelsfalle die zuverlässigere Referenz.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #12 (permalink)  
Alt 18-03-2010, 14:48
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

regex online tester - regular expressions
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #13 (permalink)  
Alt 18-03-2010, 15:13
OnkelBenS
 Registrierter Benutzer
Links : Onlinestatus : OnkelBenS ist offline
Registriert seit: Mar 2010
Beiträge: 9
OnkelBenS befindet sich auf einem aufstrebenden Ast
Standard

Danke schonmal für die Antworten, ich seh ein, dass ich mich mit regex
beschäftigen sollte, heute reicht die Zeit dafür aber leider nicht mehr.
Daher geh ich jetzt doch den Weg den ich bisher gegangen bin mit strpos.

Die gesamte Adresse kann ich ja mit strpos auslesen. Hab
dann $adresse="Am Staddel 1<br />16225 Eberswalde"

Jetzt kann ich in einem 2ten Schritt doch genau Alles ansprechen
Straße von Start bis "<"
Postleitzahl von ">" bis 5 Zeichen später (PLZ hat immer 5 Stellen)
Ort von ">"+6 Zeichen bis Ende.

Hab mir als ich gemerkt hab, dass es doch recht einfach geht ziemlich
kräftig gegen die Stirn geschlagen

EDIT:
Hab's jetzt fertig, läuft wunderbar!

Geändert von OnkelBenS (18-03-2010 um 15:59 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 18-03-2010, 16:38
OnkelBenS
 Registrierter Benutzer
Links : Onlinestatus : OnkelBenS ist offline
Registriert seit: Mar 2010
Beiträge: 9
OnkelBenS befindet sich auf einem aufstrebenden Ast
Standard Daten in MySQL DB speichern

So, mein PHP Script findet nun alle Daten auf der Seite die er durchsuchen soll, nun sollen diese allerdings noch gespeichert werden. Aber irgendwie hab ich das Bedenken, dass ich falsch an die Sache ran gehe.

Was mein Script macht:

$urlTeil="1";
$url="http://www.seite.de/detail.php?ID=" .$urlTeil. "de";
$html = file_get_contents($url);

und jetzt sucht er sich 14 Stellen via strpos und substr, speichert
diese in jeweils einer Variablen. Das Ganze kommt dann noch in eine Schleife,
da die 14 vars von insgesamt 880 Seiten gezogen werden müßen.

Bau ich jetzt nachdem Graben immer wieder eine Verbindung zum MySQL
Server auf (xampp hier local), und schick alles einzeln per Insert in die DB?
Mit Zitat antworten
  #15 (permalink)  
Alt 18-03-2010, 16:47
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo nochmal,

ich versteh deine Frage nicht.

Außerdem musst du nicht wegen jeder Anschlussfrage ein neues Thema aufmachen, wenn man ohne die Kenntnis der anderen Themen sowieso den Zusammenhang nicht versteht.

Daher *join*

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Links und Text aus Website auslesen Jayjay PHP Developer Forum 19 31-07-2008 09:32
mssql_query: wie file_get_contents Daten übertragen cbi PHP Developer Forum 1 24-03-2006 21:35
Inhalt einer Website auslesen eurohasi BRAINSTORMING PHP/SQL/HTML/JS/CSS 5 17-03-2006 14:15
Website auslesen und als Bildgeneriern martinxa PHP Developer Forum 18 16-11-2004 18:47
daten und bild aus email auslesen und website aktualisieren faustus PHP Developer Forum 12 15-04-2003 15:06

Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:49 Uhr.