Heim Backend-Entwicklung Python-Tutorial Erste Schritte mit Python-Crawlern (1) – Verstehen Sie schnell das HTTP-Protokoll

Erste Schritte mit Python-Crawlern (1) – Verstehen Sie schnell das HTTP-Protokoll

May 27, 2017 am 11:36 AM
python

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

Status

und 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
Nach dem Login kopieren

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-Antwort
with 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)
Nach dem Login kopieren

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>
Nach dem Login kopieren

从结果来看,它与协议中规范的格式是一样的,第一行是响应行,状态码是200,表明请求成功。第二部分是响应首部信息,由多个首部组成,有服务器返回响应的时间,Cookie信息等等。第三部分就是真正的响应体 HTML 文本。

至此,你应该对 HTTP 协议有一个总体的认识了,爬虫的行为本质上就是模拟浏览器发送HTTP请求,所以要想在爬虫领域深耕细作,理解 HTTP 协议是必须的。

【相关推荐】

1. python爬虫入门(4)--详解HTML文本的解析库BeautifulSoup

2. python爬虫入门(3)--利用requests构建知乎API

3. python爬虫入门(2)--HTTP库requests

4.  总结Python的逻辑运算符and

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!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1668
14
PHP-Tutorial
1273
29
C#-Tutorial
1256
24
PHP und Python: Verschiedene Paradigmen erklärt PHP und Python: Verschiedene Paradigmen erklärt Apr 18, 2025 am 12:26 AM

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.

Wählen Sie zwischen PHP und Python: Ein Leitfaden Wählen Sie zwischen PHP und Python: Ein Leitfaden Apr 18, 2025 am 12:24 AM

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.

Wie man Sublime Code Python ausführt Wie man Sublime Code Python ausführt Apr 16, 2025 am 08:48 AM

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 und Python: Ein tiefes Eintauchen in ihre Geschichte PHP und Python: Ein tiefes Eintauchen in ihre Geschichte Apr 18, 2025 am 12:25 AM

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 vs. JavaScript: Die Lernkurve und Benutzerfreundlichkeit Python vs. JavaScript: Die Lernkurve und Benutzerfreundlichkeit Apr 16, 2025 am 12:12 AM

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 gegen Python: Leistung und Skalierbarkeit Golang gegen Python: Leistung und Skalierbarkeit Apr 19, 2025 am 12:18 AM

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.

Wo kann Code in VSCODE schreiben Wo kann Code in VSCODE schreiben Apr 15, 2025 pm 09:54 PM

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.

Wie man Python mit Notepad leitet Wie man Python mit Notepad leitet Apr 16, 2025 pm 07:33 PM

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.

See all articles