WinFuture-Forum.de: Download Day Firefox 3 - Total Pledges Auslesen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Download Day Firefox 3 - Total Pledges Auslesen


#1 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 14. Juni 2008 - 23:56

Hallo gibt es eine möglichkeit die Zahl unten auf Spreadfirefox.com auszulesen?

Sie steht im Quelltext in diesem Zusammenhang:
<dd id="pledge_count">
1,236,057
</dd>


Ich möchte diese zahl gerne auslesen und auf meiner Seite per echo ausgeben.
Kann ich nicht irgendwie den Quelltext nach dem Inhalt dieses komischen dd Tags "scannen"?

Was ist eigentlich ein dd-tag? DownloadDay-Tag? :-D

Gruß
Toasterfraktion

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 15. Juni 2008 - 00:00

0

Anzeige



#2 Mitglied ist offline   bardelot 

  • Gruppe: aktive Mitglieder
  • Beiträge: 517
  • Beigetreten: 20. März 04
  • Reputation: 0

geschrieben 15. Juni 2008 - 01:14

dd tag: http://de.selfhtml.o....htm#definition

<?php

require_once 'HTTP/Request.php';

$subject = '';
$req =& new HTTP_Request('http://www.spreadfirefox.com/de/worldrecord');
	
if (!PEAR::isError($req->sendRequest())) 
{
  $subject = $req->getResponseBody();
}

if (preg_match('/<dd id="pledge_count">(.*)<\/dd>/sm', $subject, $matches))
{
	echo trim($matches[1]);
}
	
?>

Dieser Beitrag wurde von bardelot bearbeitet: 15. Juni 2008 - 01:15

0

#3 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 15. Juni 2008 - 09:44

Vielen Dank bardelot, es funktioniert super. Das einzig unschöne is nur dass er Ziehmlich lange braucht um die Seite zu laden. Liegt das daran dass er den ganzen quellcode scannt oder dass er noch eine neue Verbindung aufstellen muss?

Könntest du nochmal ein paar Kommentare in das Script schreiben? Das wäre nett! :-)

Gruß,
Toasterfraktion
0

#4 Mitglied ist offline   bardelot 

  • Gruppe: aktive Mitglieder
  • Beiträge: 517
  • Beigetreten: 20. März 04
  • Reputation: 0

geschrieben 15. Juni 2008 - 13:31

Es macht keinen Sinn bei jedem Webseitenaufruf die Zahl auszulesen da dies, wie du schon selber bemerkt hast, i.A. zu lange dauert. Statdessen könntest du z.B. per Cron alle 30 Minuten die Zahl neu auslesen und in einer Datenbank oder Datei abspeichern und diese Zahl auf der Webseite anzeigen.

Kommentare zum Skript, mm... da gibt es eigentlich nicht viel zu sagen. Es wird per PEAR HTTP Request die Webseite geladen und anschliessend der <dd> tag ausgelesen. Der s Modifier (im preg_match) wird gebraucht da der Punkt auch für eine neue Zeile stehen soll. Mit 'trim' werden schlieslich die Leerschläge, Zeilenumbrüche, etc. die um die gesuchte Zahl stehen entfernt.

Dieser Beitrag wurde von bardelot bearbeitet: 02. Juli 2008 - 21:42

0

#5 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 15. Juni 2008 - 14:37

Okay vielen Dank. Die idee mit dem Cronjob ist gut.

=)
0

#6 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 02. Juli 2008 - 14:51

Ähm wofür ist
require_once 'HTTP/Request.php';


Bei einem Script findet er die datei nicht. Ich habe diese auch gar nicht, da ich davon ausgehen dass sie immer auf einem Server mit PHP ist?! Wo kann ich die runterladen.
Gruß,
Toasterfraktion
0

#7 Mitglied ist offline   bardelot 

  • Gruppe: aktive Mitglieder
  • Beiträge: 517
  • Beigetreten: 20. März 04
  • Reputation: 0

geschrieben 02. Juli 2008 - 18:07

HTTP/Request.php gehört zu PEAR. Falls PEAR auf dem Server installiert ist, muss der include_path eventuell noch angepasst werden - es kann aber auch sein, dass das entsprechende Paket (HTTP_Request) nicht vorhanden ist.

Falls PEAR auf dem Server nicht installiert ist kannst du versuchen PEAR mit dem Webinstaller (go-pear) zu installieren. Dazu einen neuen Ordner im web root erstellen und den webinstaller mit der Endung .php darin abspeichern. Anschliessend kannst du den Installer übers Web aufrufen und den Anweisungen folgen. Vergiss nicht das Verzeichnis (per .htaccess) zu schützen. Nach der Installation muss du dir die gewünschten Pakete installieren und möglicherweise den include_path anpassen.
0

#8 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 02. Juli 2008 - 20:03

Ich kann leider nicht selber an meinem Server herumschrauben, habe aber in Confixx und per phpinfo(); nachgeschaut und nichts von PEAR gefunden.
Kann ich das Script auch ohne PEAR benutzen?

Danke,
Toasterfraktion
0

#9 Mitglied ist offline   bardelot 

  • Gruppe: aktive Mitglieder
  • Beiträge: 517
  • Beigetreten: 20. März 04
  • Reputation: 0

geschrieben 02. Juli 2008 - 20:54

 Zitat (Toasterfraktion: 02.07.2008, 21:03)

Ich kann leider nicht selber an meinem Server herumschrauben, habe aber in Confixx und per phpinfo(); nachgeschaut und nichts von PEAR gefunden.
Kann ich das Script auch ohne PEAR benutzen?

Danke,
Toasterfraktion


phpinfo() zeigt dir PEAR nicht an. Wie gesagt PEAR kann man eigentlich fast immer ohne grossen Aufwand selber in das eigene Webverzeichnis installieren. Falls du das nicht möchtest habe ich folgende Alternative, die cURL verwendet.

<?php

$url = 'http://www.spreadfirefox.com/de/worldrecord';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$subject = curl_exec($ch);
curl_close($ch);

if (preg_match('/<dd id="pledge_count">(.*)<\/dd>/s', $subject, $matches))
{
	echo trim($matches[1]);
}

?>

Dieser Beitrag wurde von bardelot bearbeitet: 02. Juli 2008 - 21:41

0

#10 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 02. Juli 2008 - 21:17

Okay vielen Dank.
Aber eine Frage habe ich noch zu der Funktion preg_match.

Und zwar finde ich nichts bei google php.net etc über die modis also (.*) oder /sm, diese ganzen Sachen die du auch benutzt hast.

Habe den Teil:

Zitat

('/<dd id="pledge_count">(.*)<\/dd>/sm', $subject, $matches)
noch nicht verstanden, könntest du nochmal erklären was genau welches Zeichen bewirkt? Das wäre supernett!

Und einen Link wo alle Zeichen nochmal stehen wäre cool, würde mir das gern mal verinnerlichen!

Danke
0

#11 Mitglied ist offline   bardelot 

  • Gruppe: aktive Mitglieder
  • Beiträge: 517
  • Beigetreten: 20. März 04
  • Reputation: 0

geschrieben 02. Juli 2008 - 21:37

Wikipedia - Regulärer Ausdruck
Wikipedia - Perl Compatible Regular Expressions
PHP: Regular Expression Details
PHP: Pattern Modifiers

Also: Die Variable $subject wird nach dem Vorkommen des Strings "<dd id="pledge_count">(.*)<\/dd>" durchsucht. Dabei steht () für ein Subpattern. Das brauchen wir, weil wir schlussendlich nur an diesem Auschnitt interessiert sind. preg_match speichert die Ergebnisse der Suche in $matches. $matches[0] ist alles (z.B.: <dd id="pledge_count"> 28,369,627 </dd>), $matches[1] das erste Subpattern ( 28,369,627 ), etc..

Wenn man den Quelltext der worldrecord Webseite betrachtet, sieht man, folgendes:

<dd id="pledge_count">
				 28,370,605											
</dd>


d.h. Das Subpattern beinhaltet auch Zeilenumbrüche, weil wir die später mit trim entfernen definieren wir den . mithilfe des /s modifiers so, dass er auch als Zeilenumbruch gilt. Der Stern bedeutet, dass das Zeichen (dank dem . also ein beliebiges) mindestens 0 mal vorkommt (man könnte hier auch ein + d.h. mindestens 1 mal vorkommen, anstelle des * verwenden).

Edit: Der m modifier ist mir fälschlicherweise hineingerutscht, er wird nicht gebraucht. Habe die Beispiele entsprechend angepasst. mea culpa

Dieser Beitrag wurde von bardelot bearbeitet: 02. Juli 2008 - 22:06

0

#12 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 02. Juli 2008 - 22:18

Okay =) Vielen Dank!
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0