Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 07:38

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



WebScrapping - HP Treiberwebsite

Discussion on WebScrapping - HP Treiberwebsite within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1
 
Mad0ck's Avatar
 
elite*gold: 313
Join Date: Oct 2014
Posts: 1,367
Received Thanks: 284
WebScrapping - HP Treiberwebsite

Guten Morgen Liebe Leser (:

Da HP keine Funktion anbietet darüber informiert zu werden, wenn für ein neues Gerät neue Treiber vorhanden sind, wollte ich mir so etwas selber machen.


Theoretisch dachte ich, dass es mit PHP und einem html DOM parser nicht so schwer sein/werden könnte, da ich ein bisschen vorAhnung habe von einem anderem Projekt, in welchem ich involviert bin.

Falsch Gedacht ...

Jetzt direkt zum Problem:
Website:


Ich will mir eigentlich nur folgendes Ausgeben lassen:
Treiber-Audio , Conexant HD Audio Driver 2017/2018 , 12.37.1.102 Rev.Q, 12. Febr. 2019


PHP Code:
include('simple_html_dom.php');

$html str_get_html('<span class="titleSpan title">Treiber-Audio</span>');
$html_ =  file_get_html('https://support.hp.com/at-de/drivers/selfservice/hp-elitebook-850-g5-notebook-pc/18491276');

# findet den Titel
echo $html_->find('title'0)->plaintext;

# findet die Ausgabe: Version____Dateigröße____Erscheinungsdatum
$list $html_->find('table[class="labels"]'0)->find('th[class="col-lg-3"]');
foreach (
$list as $test) {echo '____'; echo $test->plaintext;}


# funktioniert -> findet Audio - Treiber
$results $html->find('span[class="titleSpan title"]',)->plaintext;
echo 
'__' $results;

# funktioniert nicht - fehlermeldung
$results_ $html_->find('span[class="titleSpan title"]');
echo 
$results_->innterhtml
Ich kann über die URL, einfach nicht auf den Audio Treiber text zugreifen.
PHP Code:
NoticeTrying to get property 'plaintext' of non-object in B:\TravianBot\HpApi\HpApi\hpApi.php on line 22
 of non
-object in xxx\hpApi.php on line 22 

Ich weiß ehrlicherweise aktuell nicht, was das Problem ist.
Mit RegEx hab ich es noch nicht probiert, da ich es eigentlich so irgendwie gelöst haben will, da ich dachte, dass ich mit einem html dom parser besser zurecht kommen würde.


Ich hoffe einer kann mir da helfen.
Stehe aktuell an.

Lg
Mad0ck is offline  
Old 07/26/2019, 14:56   #2
dotCom
 
Devsome's Avatar
 
elite*gold: 9842
The Black Market: 107/0/0
Join Date: Mar 2009
Posts: 16,843
Received Thanks: 4,675
Das Problem was ich sehe, dass du erst die Comboxen ändern müsstest um überhaupt die Informationen zu bekommen. Wenn du die Seite in einem Igno Tab aufrufst, siehst du, dass anfangs keine Daten da stehen. So wie beim Parsen.

Kannst dir ja mal den XHR anschauen und copy curl machen, klappt wunderbar im Terminal um zusehen welche Informationen alle da sind.

Sonst könnte ich dir GuzzleHttp empfehlen. Wenn du im Chrome das Element untersuchst, kannst du dir den JSPath kopieren.

document.querySelector("#ob-226838-1 > table > tbody > tr.first-row > td.col-lg-7 > div:nth-child(2) > p")

So kannst du einigermaßen gut auf die Elemente zugreifen.
Devsome is offline  
Thanks
1 User
Old 07/26/2019, 15:01   #3


 
False's Avatar
 
elite*gold: 0
The Black Market: 243/0/0
Join Date: Apr 2011
Posts: 11,117
Received Thanks: 2,436
Quote:
Originally Posted by Mad0ck View Post
Guten Morgen Liebe Leser (:

Da HP keine Funktion anbietet darüber informiert zu werden, wenn für ein neues Gerät neue Treiber vorhanden sind, wollte ich mir so etwas selber machen.


Theoretisch dachte ich, dass es mit PHP und einem html DOM parser nicht so schwer sein/werden könnte, da ich ein bisschen vorAhnung habe von einem anderem Projekt, in welchem ich involviert bin.

Falsch Gedacht ...

Jetzt direkt zum Problem:
Website:


Ich will mir eigentlich nur folgendes Ausgeben lassen:
Treiber-Audio , Conexant HD Audio Driver 2017/2018 , 12.37.1.102 Rev.Q, 12. Febr. 2019


PHP Code:
include('simple_html_dom.php');

$html str_get_html('<span class="titleSpan title">Treiber-Audio</span>');
$html_ =  file_get_html('https://support.hp.com/at-de/drivers/selfservice/hp-elitebook-850-g5-notebook-pc/18491276');

# findet den Titel
echo $html_->find('title'0)->plaintext;

# findet die Ausgabe: Version____Dateigröße____Erscheinungsdatum
$list $html_->find('table[class="labels"]'0)->find('th[class="col-lg-3"]');
foreach (
$list as $test) {echo '____'; echo $test->plaintext;}


# funktioniert -> findet Audio - Treiber
$results $html->find('span[class="titleSpan title"]',)->plaintext;
echo 
'__' $results;

# funktioniert nicht - fehlermeldung
$results_ $html_->find('span[class="titleSpan title"]');
echo 
$results_->innterhtml
Ich kann über die URL, einfach nicht auf den Audio Treiber text zugreifen.
PHP Code:
NoticeTrying to get property 'plaintext' of non-object in B:\TravianBot\HpApi\HpApi\hpApi.php on line 22
 of non
-object in xxx\hpApi.php on line 22 

Ich weiß ehrlicherweise aktuell nicht, was das Problem ist.
Mit RegEx hab ich es noch nicht probiert, da ich es eigentlich so irgendwie gelöst haben will, da ich dachte, dass ich mit einem html dom parser besser zurecht kommen würde.


Ich hoffe einer kann mir da helfen.
Stehe aktuell an.

Lg
Ich bin gerade etwas verwirrt...
Du schreibst das alles bis auf folgendes geht
Code:
# funktioniert nicht - fehlermeldung
$results_ = $html_->find('span[class="titleSpan title"]');
echo $results_->innterhtml;
Deine Fehlermeldung
Code:
Notice: Trying to get property 'plaintext' of non-object in B:\TravianBotHpApi\HpApi\hpApi.php on line 22 of non-object in xxx\hpApi.php on line 22
sagt aber aus das du versuchst auf das Attribut "plaintext" zuzugreifen...
In dem Abschnitt wo du sagst das es nicht funktioniert wird aber nirgendwo "plaintext" benutzt...
Daher gehe ich stark davon aus das diese Fehlemermeldungen nicht dazu gehört

Ich verstehe auch nicht ganz was du hiermit
Code:
$results_ = $html_->find('span[class="titleSpan title"]');
echo $results_->innterhtml;
versuchst zu erreichen, da in dem span eh nur text "Treiber-Audio" steht (siehe dein Screenshot).
Um die Treibername, Version etc. zu bekommen musst du dir vom Parent a tag den href holen (in diesem Fall "#panel-1") und mit dem selector kannst du dann das richtige DIV ansprechen und die Informationen auslesen.

+das was Devsome sagt.
False is offline  
Thanks
1 User
Old 07/29/2019, 21:52   #4
 
Mad0ck's Avatar
 
elite*gold: 313
Join Date: Oct 2014
Posts: 1,367
Received Thanks: 284
Vielen Dank für eure Antwort Ihr 2 @Devsome, @False .
Mad0ck is offline  
Reply




All times are GMT +1. The time now is 07:38.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.