Forum: PC-Programmierung Werte von Internetseite lesen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Dennis S. (supernova)


Lesenswert?

Nabend,

ich habe in einer Excel Tabelle in der Spalte A Herstellernamen und der 
Spalte B Herstellerteilenummern von 10000 Teilen und ich möchte in den 
Spalten C und D und E die Info haben ob es das Teil bei mouser / digikey 
/ farnell, gibt mit Mengenangabe:

A     B                    C
TDK   MLJ1005WGHR27PTD25   19990  etc...(oder - wenn  nicht vorhanden)

Browser ist EDGE. Ich kann mir vorstellen dass noch wesentlich mehr 
infos nötig sind um überhaupt etwas dazu sagen zu können. Ich meine das 
System ist Windows 10. ich bringe aber gern noch mehr Hintergründe in 
Erfahrung, wenn es hilft.

Hat jemand einen Tip wie man das einfach hinbekommen kann. Früher konnte 
man den Mousezeiger auf Positionen setzen und Buttons anklicken 
etc...und so eine Art Batch schreiben um sich mehrfach wiederholende 
Vorgänge einfach zu automatisieren....

Aber vielleicht gibt es heute ja noch einen subtileren Weg ...

Danke

: Bearbeitet durch User
von Jens G. (jensig)


Lesenswert?

Dennis S. schrieb:
> Ich meine das
> System ist Windows 10.

Ach, Du fragst also für jemanden?

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Dennis S. schrieb:
> Hat jemand einen Tip wie man das einfach hinbekommen kann.

Google mal nach WebDriver

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Und das Ergebnis davon sind dann regelmäßig 10.000 automatisierte 
Anfragen bzw. Webseiten-Aufrufe bei Mouser und Farnell, nur um deren 
Lagerbestand rauszufinden?

Das würde ich lassen wenn die Seiten dafür keine extra API anbieten, 
sowas wird nicht gerne gesehen. Wahrscheinlich müsste man dafür sowieso 
schon mit Proxies bzw. irgendwelchen Anonymisierungsdiensten rumspielen. 
Wenn man das einfach so mit seiner ausgehenden IP macht, wird man 
ziemlich sicher von Cloudflare oder ähnlichem vom DOS-Schutz gekickt.

> von Dennis S. (supernova)
Immerhin zeigt der Nickname, in welchen Dimensionen Du denkst... das 
macht die Idee für ein solches Vorgehen verständlicher und beschreibt, 
wie sich die Admins von Mouser und Farnell fühlen wenn sie diesen Thread 
hier mitlesen.

: Bearbeitet durch User
von Thomas (werists)


Lesenswert?

Dennis S. schrieb:
> Aber vielleicht gibt es heute ja noch einen subtileren Weg ...

Mit Web-Scraping. Hab ich mal gemacht, mit Python und der BeautifulSoup 
Library.
Anleitung gibt es hier: 
https://www.geeksforgeeks.org/python-web-scraping-tutorial/

Aber immer schön zwischen den Abfragen kurzes (wechselndes) Delay 
einbauen.

Funktioniert aber immmer nur eine Weile, sobald sich an der Seite etwas 
ändert kann es sein, dass Du erneut anpassen musst.

von Motopick (motopick)


Lesenswert?

Thomas schrieb:

> Aber immer schön zwischen den Abfragen kurzes (wechselndes) Delay
> einbauen.
>
> Funktioniert aber immmer nur eine Weile, sobald sich an der Seite etwas
> ändert kann es sein, dass Du erneut anpassen musst.

Schon eine Seite wie Aliexpress, wird einen dann nach einem Nachweis
dass man "Human" ist, fragen.
Und noch ein bisschen spaeter, wollen sie dann, dass man sich mit
seinem Account anmeldet.
Und noch ein bisschen spaeter, wird dieser Account dann gesperrt.

Und alles geht von vorn los.

von Ein T. (ein_typ)


Lesenswert?

Thomas schrieb:
> Dennis S. schrieb:
>> Aber vielleicht gibt es heute ja noch einen subtileren Weg ...
>
> Mit Web-Scraping. Hab ich mal gemacht, mit Python und der BeautifulSoup
> Library.

BeautifulSoup ist eine sehr leistungsfähige Library, allerdings vor 
allem auf die Manipulation des DOM spezialisiert. Für Web Scraping 
würde ich dagegen auf die darauf spezialisierte Library Scrapy 
empfehlen, die einem noch einen großen Haufen des "Drumherum" wie 
Connection Management, Authentifizierung, (Session-)Cookies, 
Parallelisierung und so weiter -- mit requests oder den Standard-urllibs 
muß man das ja alles manuell machen.

> Anleitung gibt es hier:
> https://www.geeksforgeeks.org/python-web-scraping-tutorial/

Bei "Geeks for Geeks" werde ich leider regelmäßig enttäuscht und würde 
anstelle dessen eher Real Python [2] empfehlen. Die haben auch etwas zu 
requests, BeautifulSoup und zu Scrapy.

> Aber immer schön zwischen den Abfragen kurzes (wechselndes) Delay
> einbauen.

Auch das kann Scrapy schon von Haus aus.

> Funktioniert aber immmer nur eine Weile, sobald sich an der Seite etwas
> ändert kann es sein, dass Du erneut anpassen musst.

Neben dieser Sache mit den Ressourcen auf beiden beteiligten Seiten -- 
der Server muß die Daten in ein HTML-Template einbauen, der Client muß 
sie dann wieder ausbauen, um wieder an die Rohdaten zu kommen, wie 
bescheuert -- ist diese Sache mit den Änderungen an einer Website einer 
der Hauptgründe dafür, warum erfahrene Entwickler sich als Erstes nach 
einer API umschauen. Denn die transportiert dann nur die Daten, das 
schont die Ressourcen des Servers und meine eigenen natürlich ebenfalls. 
:-)

Wir sind mittlerweile sogar dazu übergegangen, beim Anbieter 
nachzufragen und meine Unterstützung anzubieten, wenn es keine 
öffentliche API gibt -- es ist manchmal sehr interessant, was für 
Antworten wir dabei erhalten. :-)

[1] https://scrapy.org/
[2] https://realpython.com/

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Dennis S. schrieb:

> ich habe in einer Excel Tabelle in der Spalte A Herstellernamen und der
> Spalte B Herstellerteilenummern von 10000 Teilen und ich möchte in den
> Spalten C und D und E die Info haben ob es das Teil bei mouser / digikey
> / farnell, gibt mit Mengenangabe:
>
> A     B                    C
> TDK   MLJ1005WGHR27PTD25   19990  etc...(oder - wenn  nicht vorhanden)
>
> Browser ist EDGE. Ich kann mir vorstellen dass noch wesentlich mehr
> infos nötig sind

Naja, das Minimum wäre wohl gewesen, auch noch zu erklären, was in 
Spalte C und D genau stehen soll. Spalte D hast du in deinem 
Beispiel-Datensatz ja nicht mal aufgeführt...

Fakt ist jedenfalls: Es gibt (Web-)APIs der Distributoren, über die man 
diverse Informationen abrufen kann. Ganz sicher jedenfalls bei Mouser 
und Farnel, bei Digikey aber vermutlich ebenfalls.

Allerdings brauchst du zur Benutzung dieser APIs eine Art "Key". Den 
musst du von den Distributoren anfordern, um das API benutzen zu können. 
I.d.R. gibt es auch diverse Limitierungen bezüglich der möglichen 
Häufigkeit von Abrufen.
Und natürlich: die Antwort sieht je nach Anbieter immer anders aus. 
Sowohl bezüglich der Struktur als auch bezüglich der darin verfügbaren 
Inhalte.

Das sind die Nachteile. Der Vorteil ist: du brauchst keinen Browser, um 
diese APIs benutzen zu können und du musst nicht aufwendig Webseiten 
parsen, um die gewünschten Infos herauszufischen. Die Antwort kommt 
einfach als JSON. Das muss natürlich auch geparsed werden, das ist aber 
um vieles einfacher, als eine dynamische Webseite zu parsen.

von Dennis S. (supernova)


Lesenswert?

Hallo zusammen,

danke für Eure Antworten. Momentan wir das händisch gemacht, das bindet 
viel Abreitskraft.

Es geht nicht darum die Distris auszukundschaften, sondern um die 
Wahrscheinlichkeiten von Bauteilabkündigungen. Natürlich gibt es dazu 
Anbieter von Datenbanken und auch bereits existierende Daten - wir haben 
dazu auch teilweise Zugang, dennoch bleibt eine händische Ausarbeitung 
und Marktbeobachtung teilweise unumgänging... um sich einen Überblick zu 
verschaffen.

Die Idee ist es, eben diese etwas zu erleichtern. Das ganze läuft 
entspannt, wenn wir hundert Werte am Tag checken ist das alles gut. Die 
hohe Anzahl war nur genannt, da es fortwährend läuft und somit ein 
Vorgang ist, der Potenzial zur teilweisen Automatisierung bietet...

Ob S. schrieb:
> genau stehen soll.

C Warenbestand mouser
D Warenbestand digikey
E Warenbestand farnell

Ob S. schrieb:
> Es gibt (Web-)APIs der Distributoren,

Danke für den Tip, dann werden wir da mal anfragen!

Ob S. schrieb:
> du brauchst keinen Browser

Das sind bei uns Themen für die IT, da werden die eine Lösung finden.

VG

: Bearbeitet durch User
von Dennis S. (supernova)


Lesenswert?

https://www.mouser.de/api-hub


Die Mouser-Such-API ist eine leistungsstarke, aber dennoch einfache 
Möglichkeit, Zugriff auf Mouser-Produktdaten, Verfügbarkeit und Preise 
in Ihrer eigenen Anwendung zu erhalten und diese zu nutzen.

https://de.farnell.com/en-DE/terms-of-use-for-api

https://www.digikey.de/en/resources/api-solutions

interessant, tolle Tips, vielen Dank!

: Bearbeitet durch User
von Rbx (rcx)


Lesenswert?

Dennis S. schrieb:
> Aber vielleicht gibt es heute ja noch einen subtileren Weg ...

müffelt nach Lisp..

von Frank K. (fchk)


Lesenswert?

Dennis S. schrieb:
> https://www.mouser.de/api-hub
>
>
> Die Mouser-Such-API ist eine leistungsstarke, aber dennoch einfache
> Möglichkeit, Zugriff auf Mouser-Produktdaten, Verfügbarkeit und Preise
> in Ihrer eigenen Anwendung zu erhalten und diese zu nutzen.
>
> https://de.farnell.com/en-DE/terms-of-use-for-api
>
> https://www.digikey.de/en/resources/api-solutions
>
> interessant, tolle Tips, vielen Dank!

Octopart deckt viele Distributoren ab.
https://octopart.com/

Eine API haben die auch.
https://octopart.com/de/business/api/v4/api-transition

fchk

von Carypt C. (carypt)


Lesenswert?

im Notepad++ -Forum wird dir wahrscheinlich eine Suchen-Regex-Zeile für 
die gespeicherte internetseite empfohlen.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Das ändert aber nichts daran, daß die Methode einfach Müll ist. Wenn er 
da regelmäßig 10.000e HTTP(S)-Anfragen schickt, nur um den Lagerbestand 
rauszuparsen und in seiner Liste zu aktualisieren, wird ihn jeder Admin 
dafür mit dem Netzwerkkabel am Serverschrank aufknüpfen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.