Werte von Internetseite lesen

OP #7792940
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

(Firma: Funkenflug Industries) #7792984
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.

#7793034
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.

#7793099
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.

#7793322
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/

(Firma: 1984now) #7793629
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.

OP #7794093
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

#7794779
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

(Firma: Funkenflug Industries) #7798295
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren