


Erste Schritte mit Python-Crawlern (1) – Verstehen Sie schnell das HTTP-Protokoll
Das http-Protokoll ist eines der wichtigsten und grundlegendsten Protokolle im Internet. Unsere Crawler müssen sich häufig mit dem http-Protokoll befassen. Der folgende Artikel stellt Ihnen hauptsächlich die relevanten Informationen zu Python Erste Schritte mit Crawler vor, um das HTTP-Protokoll schnell zu verstehen. Freunde, die es benötigen, können sich darauf beziehen Lasst uns gemeinsam einen Blick darauf werfen.
Vorwort
Das Grundprinzip des Crawlers besteht darin, den Browser zu simulieren, um HTTP-Anfragen zu stellen Grundlage für das Schreiben von Crawlern: In der Crawler-Position auf der Rekrutierungswebsite heißt es auch eindeutig, dass Sie die HTTP-Protokollspezifikationen beherrschen. Beim Schreiben eines Crawlers müssen Sie mit dem HTTP-Protokoll beginnen >Was ist das HTTP-Protokoll?
Jede Webseite, die Sie durchsuchen, wird auf Basis des HTTP-Protokolls dargestellt. Das HTTP-Protokoll ist ein Protokoll für die Datenkommunikation zwischen dem Client (Browser) und dem Server in Internetanwendungen. Das Protokoll legt das Format fest, in dem der Client Anfragen an den Server senden soll, und legt außerdem das Format der vom Server zurückgegebenen Antwort fest. Solange jeder gemäß dem Protokoll Anforderungen initiiert und Antwortergebnisse zurückgibt, kann jeder seinen eigenen Web-Client (Browser, Crawler) und Webserver (Nginx, Apache usw.) basierend auf dem HTTP-Protokoll implementieren .
Das HTTP-Protokoll selbst ist sehr einfach. Es legt fest, dass der Client nur aktiv Anfragen initiieren kann und der Server das Antwortergebnis zurückgibt, nachdem er die Anfrage empfangen und verarbeitet hat. Gleichzeitig ist HTTP ein Protokoll ohne
Statusund das Protokoll selbst nicht Zeichnen Sie die historischen Anfragedatensätze des Kunden auf.
Wie legt das HTTP-Protokoll das Anforderungsformat und das Antwortformat fest? Mit anderen Worten: In welchem Format kann der Client eine HTTP-Anfrage korrekt initiieren? In welchem Format gibt der Server das Antwortergebnis zurück, damit der Client es korrekt analysieren kann?HTTP-Anfrage
HTTP-Anfrage besteht aus 3 gruppierten Teilen, nämlich Anfragezeile, Anfrageheader und Anfrage body , der Header und der Anfragetext sind optional und nicht für jede Anfrage erforderlich.
Anfragezeile
Die Anfragezeile ist ein wesentlicher Bestandteil jeder Anfrage, sie besteht aus 3 Es besteht aus Teilen, nämlich Anfragemethode (Methode), Anfrage-URL (URI) und HTTP-Protokollversion, getrennt durch Leerzeichen.
Die am häufigsten verwendeten Anforderungsmethoden im HTTP-Protokoll sind: GET, POST, PUT, DELETE. Die GET-Methode wird verwendet, um Ressourcen vom Server abzurufen, und 90 % der Crawler crawlen Daten basierend auf GET-Anfragen.
Die Anforderungs-URL bezieht sich auf die Pfadadresse des Servers, auf dem sich die Ressource befindet. Das obige Beispiel zeigt beispielsweise an, dass der Client die Ressource index.html abrufen möchte und sich ihr Pfad im Stammverzeichnis befindet (/) des Servers foofish.net.
Anfrage-Header
Da die Menge der in der Anfragezeile enthaltenen Informationen sehr begrenzt ist, hat der Kunde dem noch viel zu sagen Server-Dinge müssen im Anforderungsheader (Header) platziert werden. Der Anforderungsheader wird verwendet, um dem Server einige zusätzliche Informationen bereitzustellen. Beispielsweise wird User-Agent verwendet, um die Identität des Clients anzugeben und dem Server mitzuteilen, ob der Die Anfrage kommt von einem Browser oder einem Crawler oder von Chrome. Der Browser ist immer noch Firefox. HTTP/1.1 spezifiziert 47 Header-Feldtypen. Das Format des HTTP-Header-Felds ist dem Wörterbuchtyp in Python sehr ähnlich und besteht aus durch Doppelpunkte getrennten Schlüssel-Wert-Paaren. Zum Beispiel:
Denn wenn der Client eine Anfrage sendet, bestehen die gesendeten Daten (Nachricht) aus einer Zeichenfolge, um das Ende des Anfrageheaders und den Anfang des Anfragetextes zu unterscheiden. Zur Darstellung wird eine Leerzeile verwendet. Wenn eine Leerzeile angetroffen wird, bedeutet dies, dass dies das Ende des Headers und der Anfang des Anforderungstexts ist.User-Agent: Mozilla/5.0
Anforderungstext
Der Anforderungstext ist der tatsächliche Inhalt, der vom Client an den Server übermittelt wird, z. B. der Benutzername und das Passwort, die erforderlich sind, wenn der Benutzer meldet sich an. Zum Beispiel Daten zum Hochladen von Dateien, z. B. Formularinformationen, die bei der Registrierung von Benutzerinformationen übermittelt werden. Jetzt verwenden wir das von Python bereitgestellte Original-API-Socket-Modul, um eine HTTP-Anfrage an den Server zu simulieren
HTTP-Antwortwith socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: # 1. 与服务器建立连接 s.connect(("www.seriot.ch", 80)) # 2. 构建请求行,请求资源是 index.php request_line = b"GET /index.php HTTP/1.1" # 3. 构建请求首部,指定主机名 headers = b"Host: seriot.ch" # 4. 用空行标记请求首部的结束位置 blank_line = b"\r\n" # 请求行、首部、空行这3部分内容用换行符分隔,组成一个请求报文字符串 # 发送给服务器 message = b"\r\n".join([request_line, headers, blank_line]) s.send(message) # 服务器返回的响应内容稍后进行分析 response = s.recv(1024) print(response)
Nachdem der Server die Anfrage empfangen und verarbeitet hat, gibt er den Antwortinhalt an den Client zurück. Ebenso muss der Antwortinhalt einem festen Format folgen, damit der Browser ihn korrekt analysieren kann. Die HTTP-Antwort besteht ebenfalls aus drei Teilen: Antwortzeile, Antwortheader und Antworttext, die dem HTTP-Anforderungsformat entsprechen.
响应行
响应行同样也是3部分组成,由服务端支持的 HTTP 协议版本号、状态码、以及对状态码的简短原因描述组成。
状态码是响应行中很重要的一个字段。通过状态码,客户端可以知道服务器是否正常处理的请求。如果状态码是200,说明客户端的请求处理成功,如果是500,说明服务器处理请求的时候出现了异常。404 表示请求的资源在服务器找不到。除此之外,HTTP 协议还很定义了很多其他的状态码,不过它不是本文的讨论范围。
响应首部
响应首部和请求首部类似,用于对响应内容的补充,在首部里面可以告知客户端响应体的数据类型是什么?响应内容返回的时间是什么时候,响应体是否压缩了,响应体最后一次修改的时间。
响应体
响应体(body)是服务器返回的真正内容,它可以是一个HTML页面,或者是一张图片、一段视频等等。
我们继续沿用前面那个例子来看看服务器返回的响应结果是什么?因为我只接收了前1024个字节,所以有一部分响应内容是看不到的。
b'HTTP/1.1 200 OK\r\n Date: Tue, 04 Apr 2017 16:22:35 GMT\r\n Server: Apache\r\n Expires: Thu, 19 Nov 1981 08:52:00 GMT\r\n Set-Cookie: PHPSESSID=66bea0a1f7cb572584745f9ce6984b7e; path=/\r\n Transfer-Encoding: chunked\r\n Content-Type: text/html; charset=UTF-8\r\n\r\n118d\r\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n\n <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n <head>\n\t <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" /> \n\t <meta http-equiv="content-language" content="en" />\n\t ... </html>
从结果来看,它与协议中规范的格式是一样的,第一行是响应行,状态码是200,表明请求成功。第二部分是响应首部信息,由多个首部组成,有服务器返回响应的时间,Cookie信息等等。第三部分就是真正的响应体 HTML 文本。
至此,你应该对 HTTP 协议有一个总体的认识了,爬虫的行为本质上就是模拟浏览器发送HTTP请求,所以要想在爬虫领域深耕细作,理解 HTTP 协议是必须的。
【相关推荐】
1. python爬虫入门(4)--详解HTML文本的解析库BeautifulSoup
2. python爬虫入门(3)--利用requests构建知乎API
3. python爬虫入门(2)--HTTP库requests
Das obige ist der detaillierte Inhalt vonErste Schritte mit Python-Crawlern (1) – Verstehen Sie schnell das HTTP-Protokoll. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

Um den Python-Code im Sublime-Text auszuführen, müssen Sie zuerst das Python-Plug-In installieren, dann eine .py-Datei erstellen und den Code schreiben, und drücken Sie schließlich Strg B, um den Code auszuführen, und die Ausgabe wird in der Konsole angezeigt.

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

Golang ist in Bezug auf Leistung und Skalierbarkeit besser als Python. 1) Golangs Kompilierungseigenschaften und effizientes Parallelitätsmodell machen es in hohen Parallelitätsszenarien gut ab. 2) Python wird als interpretierte Sprache langsam ausgeführt, kann aber die Leistung durch Tools wie Cython optimieren.

Das Schreiben von Code in Visual Studio Code (VSCODE) ist einfach und einfach zu bedienen. Installieren Sie einfach VSCODE, erstellen Sie ein Projekt, wählen Sie eine Sprache aus, erstellen Sie eine Datei, schreiben Sie Code, speichern und führen Sie es aus. Die Vorteile von VSCODE umfassen plattformübergreifende, freie und open Source, leistungsstarke Funktionen, reichhaltige Erweiterungen sowie leichte und schnelle.

Das Ausführen von Python-Code in Notepad erfordert, dass das ausführbare Python-ausführbare Datum und das NPPEXEC-Plug-In installiert werden. Konfigurieren Sie nach dem Installieren von Python und dem Hinzufügen des Pfades den Befehl "Python" und den Parameter "{current_directory} {file_name}" im NPPExec-Plug-In, um Python-Code über den Shortcut-Taste "F6" in Notoza auszuführen.
