Aktuelle Probleme und Fehler beim Web Scraping in Python und Tricks zu deren Lösung!

王林
Freigeben: 2024-08-23 06:04:31
Original
1058 Leute haben es durchsucht

Einführung

Grüße! Ich bin Max, ein Python-Entwickler aus der Ukraine, ein Entwickler mit Fachkenntnissen in Web Scraping, Datenanalyse und -verarbeitung.

Meine Reise im Web Scraping begann im Jahr 2016, als ich Herausforderungen bei der Lead-Generierung für ein kleines Unternehmen löste. Anfangs habe ich Standardlösungen wie Import.io und Kimono Labs verwendet. Allerdings stieß ich schnell auf Einschränkungen wie Blockierung, ungenaue Datenextraktion und Leistungsprobleme. Dies brachte mich dazu, Python zu lernen. Das waren die glorreichen Zeiten, als Anfragen und lxml/beautifulsoup ausreichten, um Daten von den meisten Websites zu extrahieren. Und wenn Sie wussten, wie man mit Threads arbeitet, waren Sie bereits ein angesehener Experte :)

Eines unserer Community-Mitglieder hat diesen Blog als Beitrag zum Crawlee Blog geschrieben. Wenn Sie solche Blogs zum Crawlee-Blog beitragen möchten, wenden Sie sich bitte über unseren Discord-Kanal an uns.

Crawlee & Apify

Dies ist die offizielle Entwickler-Community von Apify und Crawlee. | 8318 Mitglieder

Current problems and mistakes of web scraping in Python and tricks to solve them! discord.com

Als Freiberufler habe ich im Laufe der Jahre kleine Lösungen und große, komplexe Data-Mining-Systeme für Produkte aufgebaut.

Heute möchte ich die Realität des Web Scraping mit Python im Jahr 2024 besprechen. Wir werden uns die Fehler ansehen, die ich manchmal sehe, und die Probleme, auf die Sie stoßen werden, und Lösungen für einige davon anbieten.

Lass uns anfangen.

Nehmen Sie einfach Anfragen und eine schöne Suppe entgegen und fangen Sie an, viel Geld zu verdienen...

Nein, das ist nicht so ein Artikel.

1. „Ich habe eine 200-Antwort vom Server erhalten, aber es handelt sich um einen unlesbaren Zeichensatz.“

Ja, es kann überraschend sein. Aber ich habe diese Nachricht von Kunden und Entwicklern vor sechs Jahren, vor vier Jahren und im Jahr 2024 gesehen. Ich habe erst vor ein paar Monaten einen Beitrag auf Reddit zu diesem Problem gelesen.

Schauen wir uns ein einfaches Codebeispiel an. Dies funktioniert für Anfragen, httpx und aiohttp mit einer Neuinstallation und ohne Erweiterungen.

import httpx

url = 'https://www.wayfair.com/'

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
    "Accept-Encoding": "gzip, deflate, br, zstd",
    "Connection": "keep-alive",
}

response = httpx.get(url, headers=headers)

print(response.content[:10])
Nach dem Login kopieren

Das Druckergebnis sieht ähnlich aus wie:

b'\x83\x0c\x00\x00\xc4\r\x8e4\x82\x8a'
Nach dem Login kopieren

Es ist kein Fehler – es ist eine vollkommen gültige Serverantwort. Es ist irgendwie verschlüsselt.

Die Antwort liegt im Accept-Encoding-Header. Im obigen Beispiel habe ich es einfach aus meinem Browser kopiert, sodass alle von meinem Browser unterstützten Komprimierungsmethoden aufgelistet sind: „gzip, deflate, br, zstd“. Das Wayfair-Backend unterstützt die Komprimierung mit „br“, also Brotli, und verwendet diese als effizienteste Methode.

Dies kann passieren, wenn keine der oben aufgeführten Bibliotheken eine Brotli-Abhängigkeit unter ihren Standardabhängigkeiten hat. Allerdings unterstützen sie alle die Dekomprimierung aus diesem Format, wenn Sie Brotli bereits installiert haben.

Daher reicht es aus, die entsprechende Bibliothek zu installieren:

pip install Brotli
Nach dem Login kopieren

Dadurch erhalten Sie das Ergebnis des Drucks:

b'<!DOCTYPE '
Nach dem Login kopieren

Sie können das gleiche Ergebnis für aiohttp und httpx erzielen, indem Sie die Installation mit den Erweiterungen durchführen:

pip install aiohttp[speedups]
pip install httpx[brotli]
Nach dem Login kopieren

Das Hinzufügen der Brotli-Abhängigkeit war übrigens mein erster Beitrag zu Crawlee-Python. Sie verwenden httpx als Basis-HTTP-Client.

Möglicherweise ist Ihnen auch aufgefallen, dass vor einiger Zeit ein neues unterstütztes Datenkomprimierungsformat zstd erschienen ist. Ich habe noch keine Backends gesehen, die es verwenden, aber httpx unterstützt die Dekomprimierung in Versionen über 0.28.0. Ich verwende es bereits, um Server-Antwort-Dumps in meinen Projekten zu komprimieren; Es zeigt eine unglaubliche Effizienz bei asynchronen Lösungen mit Aiofiles.

Die häufigste Lösung für diese Situation, die ich gesehen habe, besteht darin, dass Entwickler einfach aufhören, den Accept-Encoding-Header zu verwenden, und so eine unkomprimierte Antwort vom Server erhalten. Warum ist das schlimm? Die Hauptseite von Wayfair benötigt unkomprimiert etwa 1 Megabyte und komprimiert etwa 0,165 Megabyte.

Deshalb, wenn dieser Header fehlt:

  • Sie erhöhen die Belastung Ihrer Internetbandbreite.
  • Wenn Sie einen Proxy mit Datenverkehr verwenden, erhöhen Sie die Kosten für jede Ihrer Anfragen.
  • Sie erhöhen die Belastung der Internetbandbreite des Servers.
  • Sie geben sich als Scraper zu erkennen, da jeder Browser Komprimierung verwendet.

Aber ich denke, das Problem liegt etwas tiefer. Viele Web-Scraping-Entwickler verstehen einfach nicht, was die von ihnen verwendeten Header bewirken. Wenn dies auf Sie zutrifft, informieren Sie sich bei der Arbeit an Ihrem nächsten Projekt über diese Dinge. Sie werden Sie vielleicht überraschen.

2. „Ich verwende Header wie in einem Inkognito-Browser, erhalte aber eine 403-Antwort.“ Hier ist Johnn... ich meine, Cloudflare

Ja, das stimmt. 2023 brachte uns nicht nur große Sprachmodelle wie ChatGPT, sondern auch verbesserten Cloudflare-Schutz.

Diejenigen, die schon lange im Internet surfen, könnten sagen: „Nun, wir haben uns bereits mit DataDome, PerimeterX, InCapsula und dergleichen befasst.“

Aber Cloudflare hat die Spielregeln geändert. Es ist einer der größten CDN-Anbieter der Welt und bedient eine große Anzahl von Websites. Daher stehen seine Dienste vielen Standorten mit relativ niedrigen Eintrittsbarrieren zur Verfügung. Dies unterscheidet es grundlegend von den zuvor erwähnten Technologien, die gezielt eingesetzt wurden, um die Website vor Scraping zu schützen.

Cloudflare ist der Grund, warum Sie, wenn Sie mit dem Lesen eines anderen Kurses zum Thema „Wie man Web Scraping mit Requests und Beautifulsoup durchführt“ beginnen, ihn sofort schließen können. Denn die Wahrscheinlichkeit ist groß, dass das, was Sie lernen, auf keiner „anständigen“ Website funktioniert.

Sehen wir uns ein weiteres einfaches Codebeispiel an:

from httpx import Client

client = Client(http2=True)

url = 'https://www.g2.com/'

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
    "Accept-Encoding": "gzip, deflate, br, zstd",
    "Connection": "keep-alive",
}

response = client.get(url, headers=headers)

print(response)
Nach dem Login kopieren

Natürlich wäre die Antwort 403.

Was wäre, wenn wir Locken verwenden?

curl -XGET -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' -H 'Connection: keep-alive' 'https://www.g2.com/' -s -o /dev/null -w "%{http_code}\n"
Nach dem Login kopieren

Auch 403.

Warum passiert das?

Da Cloudflare TLS-Fingerabdrücke vieler bei Entwicklern beliebter HTTP-Clients verwendet, können Site-Administratoren auch anpassen, wie aggressiv Cloudflare Clients basierend auf diesen Fingerabdrücken blockiert.

Für Curl können wir es so lösen:

curl -XGET -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' -H 'Connection: keep-alive' 'https://www.g2.com/' --tlsv1.3 -s -o /dev/null -w "%{http_code}\n"
Nach dem Login kopieren

You might expect me to write here an equally elegant solution for httpx, but no. About six months ago, you could do the "dirty trick" and change the basic httpcore parameters that it passes to h2, which are responsible for the HTTP2 handshake. But now, as I'm writing this article, that doesn't work anymore.

There are different approaches to getting around this. But let's solve it by manipulating TLS.

The bad news is that all the Python clients I know of use the ssl library to handle TLS. And it doesn't give you the ability to manipulate TLS subtly.

The good news is that the Python community is great and implements solutions that exist in other programming languages.

The first way to solve this problem is to use tls-client

This Python wrapper around the Golang library provides an API similar to requests.

pip install tls-client
Nach dem Login kopieren
from tls_client import Session

client = Session(client_identifier="firefox_120")

url = 'https://www.g2.com/'

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
    "Accept-Encoding": "gzip, deflate, br, zstd",
    "Connection": "keep-alive",
}

response = client.get(url, headers=headers)

print(response)
Nach dem Login kopieren

The tls_client supports TLS presets for popular browsers, the relevance of which is maintained by developers. To use this, you must pass the necessary client_identifier. However, the library also allows for subtle manual manipulation of TLS.

The second way to solve this problem is to use curl_cffi

This wrapper around the C library patches curl and provides an API similar to requests.

pip install curl_cffi
Nach dem Login kopieren
from curl_cffi import requests

url = 'https://www.g2.com/'

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
    "Accept-Encoding": "gzip, deflate, br, zstd",
    "Connection": "keep-alive",
}

response = requests.get(url, headers=headers, impersonate="chrome124")

print(response)
Nach dem Login kopieren

curl_cffi also provides TLS presets for some browsers, which are specified via the impersonate parameter. It also provides options for subtle manual manipulation of TLS.

I think someone just said, "They're literally doing the same thing." That's right, and they're both still very raw.

Let's do some simple comparisons:

Feature tls_client curl_cffi
TLS preset + +
TLS manual + +
async support - +
big company support - +
number of contributors - +

Curl_cffi gewinnt diesen Vergleich offensichtlich. Aber als aktiver Benutzer muss ich sagen, dass es manchmal ziemlich seltsame Fehler gibt, bei denen ich einfach nicht sicher bin, wie ich damit umgehen soll. Und seien wir ehrlich, bisher sind beide ziemlich roh.

Ich denke, wir werden bald andere Bibliotheken sehen, die dieses Problem lösen.

Man könnte fragen, was ist mit Scrapy? Ich bin ehrlich: Ich halte mich nicht wirklich über ihre Updates auf dem Laufenden. Aber ich habe noch nichts davon gehört, dass Zyte irgendetwas unternimmt, um TLS-Fingerprinting zu umgehen. Daher wird Scrapy standardmäßig ebenfalls blockiert, aber nichts hindert Sie daran, curl_cffi in Ihrem Scrapy Spider zu verwenden.

3. Was ist mit Headless-Browsern und Cloudflare Turnstile?

Ja, manchmal müssen wir Headless-Browser verwenden. Obwohl ich ehrlich bin, werden sie aus meiner Sicht zu oft verwendet, auch wenn es eindeutig nicht notwendig ist.

Selbst in einer kopflosen Situation ist es den Leuten von Cloudflare gelungen, dem durchschnittlichen Web-Scraper das Leben schwer zu machen, indem sie ein Monster namens Cloudflare Turnstile geschaffen haben.

Um verschiedene Tools zu testen, können Sie diese Demoseite verwenden.

Um schnell zu testen, ob eine Bibliothek mit dem Browser funktioniert, sollten Sie zunächst den üblichen Non-Headless-Modus überprüfen. Sie müssen nicht einmal Automatisierung nutzen; Öffnen Sie einfach die Site mit der gewünschten Bibliothek und handeln Sie manuell.

Welche Bibliotheken sind dafür einen Besuch wert?

Kandidat Nr. 1: Dramatiker + heimlicher Dramatiker

Es wird blockiert und Sie können das Captcha nicht lösen.

Playwright ist eine großartige Bibliothek für die Browser-Automatisierung. Allerdings geben die Entwickler ausdrücklich an, dass sie nicht vorhaben, es als Web-Scraping-Tool zu entwickeln.

Und ich habe von keinem Python-Projekt gehört, das dieses Problem effektiv löst.

Kandidat Nr. 2 undetected_chromedriver

Es wird blockiert und Sie können das Captcha nicht lösen.

Dies ist eine ziemlich verbreitete Bibliothek für die Arbeit mit Headless-Browsern in Python und ermöglicht in einigen Fällen die Umgehung von Cloudflare Turnstile. Aber auf der Zielwebsite ist es blockiert. Außerdem bin ich in meinen Projekten auf mindestens zwei weitere Fälle gestoßen, in denen Cloudflare den undetected_chromedriver blockiert hat.

Im Allgemeinen ist undetected_chromedriver eine gute Bibliothek für Ihre Projekte, insbesondere da unter der Haube das gute alte Selenium verwendet wird.

Kandidat Nr. 3 Botasaurus-Fahrer

Es ermöglicht Ihnen, nach dem Klicken über das Captcha hinauszugehen.

Ich weiß nicht, wie die Entwickler das hinbekommen haben, aber es funktioniert. Sein Hauptmerkmal ist, dass es speziell für Web Scraping entwickelt wurde. Es verfügt auch über eine übergeordnete Bibliothek, mit der Sie arbeiten können – Botasaurus.

Der Nachteil ist, dass es bisher noch ziemlich roh ist und der Botasaurus-Treiber keine Dokumentation hat und eine ziemlich anspruchsvolle API zum Arbeiten hat.

Um es zusammenzufassen: Ihre Hauptbibliothek für Headless Browsing wird höchstwahrscheinlich undetected_chromedriver sein. Aber in einigen besonders schwierigen Fällen müssen Sie möglicherweise Botasaurus verwenden.

4. Was ist mit Frameworks?

High-Level-Frameworks sollen die Entwicklung beschleunigen und vereinfachen, indem sie es uns ermöglichen, uns auf die Geschäftslogik zu konzentrieren, obwohl wir oft den Preis für Flexibilität und Kontrolle zahlen.

Was sind also die Rahmenbedingungen für Web Scraping im Jahr 2024?

Scrapy

Es ist unmöglich, über Python-Web-Scraping-Frameworks zu sprechen, ohne Scrapy zu erwähnen. Scrapinghub (jetzt Zyte) veröffentlichte es erstmals im Jahr 2008. Seit 16 Jahren wird es als Open-Source-Bibliothek entwickelt, auf der Entwicklungsunternehmen ihre Geschäftslösungen aufbauen.

Wenn Sie über die Vorteile von Scrapy sprechen, könnten Sie einen separaten Artikel schreiben. Aber ich werde die beiden hervorheben:

  • Die riesige Menge an Tutorials, die im Laufe der Jahre veröffentlicht wurden
  • Middleware-Bibliotheken werden von der Community geschrieben und erweitern ihre Funktionalität. Zum Beispiel Scrapy-Dramatiker.

Aber was sind die Nachteile?

In den letzten Jahren hat sich Zyte stärker auf die Entwicklung einer eigenen Plattform konzentriert. Scrapy bekommt meistens nur Korrekturen.

  • Fehlende Entwicklung hin zur Umgehung von Anti-Scraping-Systemen. Sie müssen sie selbst umsetzen, aber warum brauchen Sie dann ein Framework?
  • Scrapy wurde ursprünglich mit dem asynchronen Framework Twisted entwickelt. Teilweise Unterstützung für Asyncio wurde erst in Version 2.0 hinzugefügt. Beim Durchsehen des Quellcodes fallen Ihnen möglicherweise einige Problemumgehungen auf, die zu diesem Zweck hinzugefügt wurden.

Daher ist Scrapy eine gute und bewährte Lösung für Websites, die nicht gegen Web Scraping geschützt sind. Sie müssen die notwendigen Lösungen entwickeln und zum Rahmen hinzufügen, um Anti-Scraping-Maßnahmen zu umgehen.

Botasaurus

Ein neues Framework für Web Scraping mit Browser-Automatisierung, basierend auf dem Botasaurus-Treiber. Der erste Commit erfolgte am 9. Mai 2023.

Beginnen wir mit den Vorteilen:

  • Ermöglicht Ihnen, jeden Claudflare-Schutz sowie viele andere mithilfe des Botasaurus-Treibers zu umgehen.
  • Gute Dokumentation für einen schnellen Einstieg

Zu den Nachteilen gehören:

  • Nur ​​Browser-Automatisierung, nicht für HTTP-Clients gedacht.
  • Enge Kopplung mit Botasaurus-Treiber; Sie können es nicht einfach durch etwas Besseres ersetzen, wenn es in Zukunft herauskommt.
  • Keine Asynchronität, nur Multithreading.
  • Im Moment ist es noch ziemlich unreif und erfordert noch Korrekturen für einen stabilen Betrieb.
  • Im Moment sind nur sehr wenige Schulungsmaterialien verfügbar.

Dies ist ein gutes Framework für die schnelle Erstellung eines Web-Scrapers auf Basis der Browser-Automatisierung. Es mangelt an Flexibilität und Unterstützung für HTTP-Clients, was für Benutzer wie mich von entscheidender Bedeutung ist.

Crawlee für Python

Ein neues Framework für Web Scraping im Python-Ökosystem. Der erste Commit erfolgte am 10. Januar 2024, mit einer Veröffentlichung im Medienbereich am 5. Juli 2024.

Current problems and mistakes of web scraping in Python and tricks to solve them! apifizieren / Crawlee-Python

Crawlee – Eine Web-Scraping- und Browser-Automatisierungsbibliothek für Python zum Erstellen zuverlässiger Crawler. Extrahieren Sie Daten für AI, LLMs, RAG oder GPTs. Laden Sie HTML, PDF, JPG, PNG und andere Dateien von Websites herunter. Funktioniert mit BeautifulSoup, Playwright und rohem HTTP. Sowohl Headful- als auch Headless-Modus. Mit Proxy-Rotation.

Current problems and mistakes of web scraping in Python and tricks to solve them!
Eine Web-Scraping- und Browser-Automatisierungsbibliothek

Current problems and mistakes of web scraping in Python and tricks to solve them! Current problems and mistakes of web scraping in Python and tricks to solve them! Current problems and mistakes of web scraping in Python and tricks to solve them! Current problems and mistakes of web scraping in Python and tricks to solve them!

Crawlee deckt Ihr Krabbeln und Schaben von Anfang bis Ende ab und hilft Ihnen beim Bau zuverlässiger Schaber. Schnell.

? Crawlee für Python steht Early Adopters offen!

Ihre Crawler sehen fast menschenähnlich aus und fliegen selbst mit der Standardkonfiguration unter dem Radar moderner Bot-Schutzmaßnahmen. Crawlee bietet Ihnen die Tools, mit denen Sie das Web nach Links durchsuchen, Daten durchsuchen und dauerhaft in maschinenlesbaren Formaten speichern können, ohne sich um die technischen Details kümmern zu müssen. Und dank umfangreicher Konfigurationsoptionen können Sie fast jeden Aspekt von Crawlee an die Anforderungen Ihres Projekts anpassen, wenn die Standardeinstellungen nicht ausreichen.

? Vollständige Dokumentation, Anleitungen und Beispiele finden Sie auf der Website des Crawlee-Projekts ?

Wir haben auch eine TypeScript-Implementierung von Crawlee, die Sie erkunden und für Ihre Projekte nutzen können. Besuchen Sie unser GitHub-Repository für weitere Informationen zu Crawlee für JS/TS auf GitHub.

Installation

Wir…


Auf GitHub ansehen


Es wurde von Apify entwickelt und ist eine Python-Adaption ihres berühmten JS-Frameworks crawlee, das erstmals am 9. Juli 2019 veröffentlicht wurde.

Da es sich um eine völlig neue Lösung auf dem Markt handelt, befindet sie sich derzeit in einer aktiven Design- und Entwicklungsphase. Auch die Community beteiligt sich aktiv an der Entwicklung. Wir sehen also, dass die Verwendung von curl_cffi bereits diskutiert wird. Die Möglichkeit, einen eigenen Rust-basierten Client zu erstellen, wurde bereits diskutiert. Ich hoffe, dass das Unternehmen die Idee nicht aufgibt.

Vom Crawlee-Team:
„Ja, sicher werden wir Crawlee für Python in den kommenden Jahren weiter verbessern.“

Da ich persönlich gerne einen HTTP-Client für Python sehen würde, der von einem großen Unternehmen entwickelt und gepflegt wird. Und Rust zeigt sich sehr gut als Bibliothekssprache für Python. Erinnern wir uns zumindest an Ruff und Pydantic v2.

Vorteile:

Das Framework wurde von einem etablierten Unternehmen im Web-Scraping-Markt entwickelt, das über weitreichende Fachkenntnisse in diesem Bereich verfügt.

  • Unterstützung sowohl für Browser-Automatisierung als auch für HTTP-Clients.
  • Vollständig asynchron, basierend auf Asyncio.
  • Aktive Entwicklungsphase und Medienaktivität. Da Entwickler der Community zuhören, ist dies in dieser Phase sehr wichtig.

Zu erwähnen ist noch, dass es eine ziemlich gute modulare Architektur hat. Wenn Entwickler die Möglichkeit einführen, zwischen mehreren HTTP-Clients zu wechseln, erhalten wir ein recht flexibles Framework, das es uns ermöglicht, die verwendeten Technologien mit einer einfachen Implementierung durch das Entwicklungsteam einfach zu ändern.

Mängel:

  • Das Framework ist neu. Im Moment sind nur sehr wenige Schulungsmaterialien verfügbar.
  • Im Moment ist es noch recht unreif und erfordert noch Korrekturen für einen stabilen Betrieb sowie praktische Schnittstellen zur Konfiguration. -Es gibt derzeit keine Implementierung anderer Mittel zur Umgehung von Anti-Scraping-Systemen als der Änderung von Sitzungen und Proxys. Aber sie werden diskutiert.

Ich glaube, dass der Erfolg von Crawlee-Python in erster Linie von der Community abhängt. Aufgrund der geringen Anzahl an Tutorials ist es nicht für Anfänger geeignet. Erfahrene Entwickler entscheiden sich jedoch möglicherweise dafür, es anstelle von Scrapy auszuprobieren.

Langfristig könnte es sich als bessere Lösung als Scrapy und Botasaurus erweisen. Es bietet bereits flexible Tools für die Arbeit mit HTTP-Clients, die sofortige Automatisierung von Browsern und den schnellen Wechsel zwischen ihnen. Es fehlen jedoch Tools zur Umgehung des Scraping-Schutzes, und deren Implementierung in der Zukunft könnte der entscheidende Faktor bei der Auswahl eines Frameworks für Sie sein.

Abschluss

Wenn Sie bis hierher gelesen haben, gehe ich davon aus, dass Sie es interessant und vielleicht sogar hilfreich fanden :)

Die Branche verändert sich und bietet neue Herausforderungen, und wenn Sie beruflich im Web Scraping tätig sind, müssen Sie die Situation genau im Auge behalten. In einem anderen Bereich würden Sie weiterhin ein Entwickler bleiben, der Produkte mit veralteten Technologien herstellt. Aber beim modernen Web Scraping werden Sie zu einem Entwickler, der Web Scraper erstellt, die einfach nicht funktionieren.

Vergessen Sie außerdem nicht, dass Sie Teil der größeren Python-Community sind und Ihr Wissen bei der Entwicklung von Tools nützlich sein kann, die Dinge für uns alle möglich machen. Wie Sie sehen, werden viele der Tools, die Sie benötigen, gerade gerade entwickelt.

Ich freue mich, Ihre Kommentare zu lesen. Wenn Sie außerdem einen Web-Scraping-Experten benötigen oder einfach nur über den Artikel diskutieren möchten, können Sie mich auf den folgenden Plattformen finden: Github, Linkedin, Apify, Upwork, Contra.

Vielen Dank für Ihre Aufmerksamkeit :)

Das obige ist der detaillierte Inhalt vonAktuelle Probleme und Fehler beim Web Scraping in Python und Tricks zu deren Lösung!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!