Seite 1 von 1

Request.get()

Verfasst: Mittwoch 15. August 2018, 13:55
von LastSinner
Hallo zusammen,

ich habe eine Frage über die Request.get Methode.

Ich probiere mit einem Programm zu scrapen. Dort sende ich eine Anfrage, dass mir die letzten 50 Beiträge geholt werden. Dies funktioniert auch, allerdings werden teilweise wieder die gleichen Beiträge im nächsten Schleifengang geholt. Meine Frage daher, ist es möglich in der Request.get (url, ....ggf.hier in den Parameters...) nach dem letzten Timestamp (den ich von dem vorherigen Schleifengang bekommen habe) zu suchen bzw die Einträge zu bekommen?
ps: und auch nur die Einträge die neu (nach dem Timestamp) hochgeladen wurden??

Ich hoffe man versteht einigermaßen was ich meine ^^

Viele Grüße

Re: Request.get()

Verfasst: Mittwoch 15. August 2018, 13:58
von __deets__
Ob das geht, haengt nicht an requests, sondern an deiner Webseite. Entweder erlaubt die Suchanfrage das schon. Wenn nicht, dann geht es vielleicht, dass die resultierenden URLs stabil sind, das heisst, du musst dir die zwar alle abholen, aber schmeisst die Eintraege weg, die du schon kennst. Oder sie liefern immer alles irgendwie zufaellig benannt aus (unwahrscheinlich, aber nicht unmoeglich), dann kannst du da nur mit Text/Inhaltsvergleichen arbeiten.

Re: Request.get()

Verfasst: Mittwoch 15. August 2018, 14:12
von LastSinner
Hi,

danke für die schnelle Antwort.

Also ich bezieh mich auf die Seite "Pastebin". ( last_posts = requests.get('https://scrape.pastebin.com/api_scraping.php?limit=' + post_limit))
Dort bekomme ich dann 10 Pastes (von mir eingestellt, jeder paste hat ein "Date" was ich als Zeitstempel nutzen wollte) gebe sie dann in Json (dort sind dann die Paste als Liste (jedoch auch nicht sortiert)) , usw.

ich bin jetzt nicht der Profi :D wie könnte das z.B in deiner Erklärung aussehen?
die request ist doch die Suchanfrage oder??

Re: Request.get()

Verfasst: Mittwoch 15. August 2018, 14:42
von __deets__
Ich kann diese URL nicht benutzen, weil ich da nicht angemeldet bin. Und das nun auch nicht extra tun will. Wenn du URLs bekommst, dann zeig wie die aussehen, in zwei aufeinanderfolgenden Requests. Bzw. du hast ja schon festgestellt, dass die sich ueberlappen. Woran machst du das denn fest? Wenn du da ein Kriterium hast, dann musst du das doch einfach nur in Code giessen, und gut ist. Zb eine ID 'https://scrape.pastebin.com/paste=ID" oder wie auch immer die Dinger aussehen. Oder gar die ganze URL.

Re: Request.get()

Verfasst: Mittwoch 15. August 2018, 14:54
von __blackjack__
@LastSinner: In jedem Datensatz ist ein 'key' enthalten an dem man die Datensätze identifizieren kann. Genau der wird bei den beiden anderen API-Endpunkten ja auch als Argument verwendet. Du musst Dir halt merken welche Schlüssel Du schon gesehen/verarbeitet hast.

Re: Request.get()

Verfasst: Mittwoch 15. August 2018, 15:18
von LastSinner
Ok danke nochmal für die Antworten.

Das mit dem Key/ Identifier verstehe ich. Aber ich möchte alle neuen Pastes die zb. nach 12:30:00Uhr kommen durchsuchen, dann dort schauen, welcher Zeitstempel ist der höchste (z.b. 12:30:51Uhr )und in der nächsten Schleife den Zeitpunkt auf den höchsten Zeitstempel setzen (wie bsp. 12:30:51Uhr)..danach wieder von den letzten 10 Pastes den höchsten Zeitstempel (zb. 12:31:14Uhr) usw.

Wenn ich jetzt ein Request mache, kommen 10 Paste mit unterschiedlichen Zeitstempeln:
so sieht es dann aus:
({'date': '1534341344', 'expire': '0', 'full_url': 'https://pastebin.co.../xZsdsW3r', 'key': 'xZsdsW3r', 'scrape_url': 'https://scrape.past...=xZsdsW3r', 'size': '45083', 'syntax': 'text', 'title': 'Something', 'user': ''})

ich würde aber gerne schon vorher nur die Pastes abholen, die nach meinem gesetzten Zeitstemple kommen.

Re: Request.get()

Verfasst: Mittwoch 15. August 2018, 15:23
von __blackjack__
@LastSinner: Das gibt die API halt nicht her. Die liefert immer die letzten n Pastes, anscheinend ohne bestimmte Ordnung. Und das identifizierende Merkmal ist der 'key'.

Re: Request.get()

Verfasst: Mittwoch 15. August 2018, 15:24
von __deets__
Das ist eine Frage der API. KANN die das? Hat die ein Argument, mit dem du ein solches Mindestdatum angeben kannst? Das muss in deren API-Dokumentation stehen.

Re: Request.get()

Verfasst: Mittwoch 15. August 2018, 15:26
von LastSinner
Ok,
danke euch beide für eure Antworten und Zeit!