[PYTHON] In 100 Tagen sind Sie Ingenieur. ――Tag 71 ――Programmieren ――Über das Schaben 2

Klicken Sie hier bis gestern

Sie werden Ingenieur in 100 Tagen - Tag 70 - Programmieren - Über Scraping

Sie werden in 100 Tagen Ingenieur - Tag 66 - Programmierung - Über die Verarbeitung natürlicher Sprache

Sie werden in 100 Tagen Ingenieur - Tag 63 - Programmierung - Über Wahrscheinlichkeit 1

Sie werden in 100 Tagen Ingenieur - Tag 59 - Programmierung - Über Algorithmen

Sie werden in 100 Tagen Ingenieur --- Tag 53 - Git - Über Git

Sie werden in 100 Tagen Ingenieur - Tag 42 - Cloud - Über Cloud-Dienste

Sie werden in 100 Tagen Ingenieur - Tag 36 - Datenbank - Über die Datenbank

Sie werden Ingenieur in 100-Tage-24-Python-Grundlagen der Python-Sprache 1

Sie werden in 100 Tagen Ingenieur - Tag 18 - JavaScript - Grundlagen von JavaScript 1

Sie werden in 100 Tagen Ingenieur - 14. Tag - CSS - CSS-Grundlagen 1

Sie werden in 100 Tagen Ingenieur - Tag 6 - HTML - HTML-Grundlagen 1

Diese Zeit ist eine Fortsetzung des Schabens.

Über Kommunikation

Wir werden in der Python-Sprache kratzen. Da Schaben Kommunikation beinhaltet Sie müssen wissen, wie Kommunikation funktioniert.

Websites befinden sich auf Servern auf der ganzen Welt. Im WEB erfolgt die Kommunikation mit dem Server im Wesentlichen über das Protokoll (Kommunikationskonvention), das als HTTP (HyperText Transfer Protocol) bezeichnet wird.

Request vom Browser an den Server Die Antwort vom Server an den Browser wird als "Antwort" bezeichnet.

Grundlegende Austausche im WEB werden durch Anfrage / Antwort (R / R) hergestellt. Dies wird im Wesentlichen durch den Austausch von Textnachrichten erreicht

** Beispiel für eine Site-Suche ** Führen Sie eine Suche mit dem Suchwerkzeug über den Browser Request durch Der Server antwortet auf die Anfrage mit dem Ergebnis "Antwort" Der Browser zeigt die Suchergebnisse basierend auf der Antwort an

Es gibt verschiedene Spezifikationen für die "HTTP-Kommunikation" und es gibt mehrere Möglichkeiten, Anforderungen zu senden.

** GET Kommunikation **

GET-Anforderungen durch Hinzufügen von Parametern zur URL

Beispiel: http://otupy.com?p=abc&u=u123 Nach? Ist es ein Parameter, und der Parameter ist eine Kombination aus key = value und &.

** POST-Kommunikation **

POST ist im Body enthalten und wird angefordert

http://otupy.com

Text anfordern param:p:ab,u:u123

** POST und GET richtig verwenden ** Die Kommunikation selbst erfolgt durch Auswahl einer geeigneten Kommunikationsmethode im Browser Das Programm muss die Kommunikationsmethode angeben.

Anfrage

Eine Anfrage von einem Browser an den Server einer Website wird als Anfrage bezeichnet.

Wenn Sie eine Webseite in Ihrem Browser öffnen, sendet der Browser eine Anforderungsnachricht an den Server, z.

Beispiel erhalten:

Header anfordern
GET http://www.otupy.com/ex/http.htm HTTP/1.1
Host: www.otupy.com
Proxy-Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
Referer: https://www.google.co.jp/
Accept-Encoding: gzip, deflate
Accept-Language: ja,en-US;q=0.9,en;q=0.8

POST-Beispiel:

Header anfordern:
POST /hoge/ HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 22
Cache-Control: max-age=0
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Referer: http://localhost:8080/hoge/
Accept-Encoding: gzip, deflate, br
Accept-Language: ja,en-US;q=0.8,en;q=0.6

Text anfordern:
name=hoge&comment=hoge

Die Anfrage hat einen "Header" - und einen "Body" -Teil, und welche Art von Informationen gepackt und gesendet werden, hängt von der Kommunikationsmethode ab.

Daher ist es erforderlich, die entsprechenden Informationen einzugeben und eine Anfrage zu stellen, wenn programmgesteuert darauf zugegriffen wird.

Programmatischer Zugriff

Lassen Sie uns sofort versuchen, zu kratzen.

In Python können Sie mit einer Bibliothek namens "Anfragen" kommunizieren.


import requests

Da die Zugriffsziel-Website erforderlich ist, geben Sie sie an und kommunizieren Sie mit "GET". requests.get(URL)

url = 'http://www.otupy.net/'
res = requests.get(url)
print(res)

<Response [200]>

Als Ergebnis der Kommunikation wird eine "Antwort" zurückgegeben. Wenn die Kommunikation erfolgreich ist, können Sie die Informationen des Zugriffsziels abrufen.

Natürlich ist es Kommunikation, also kann es fehlschlagen.

Kommunikationsergebnis (Antwort)

Infolge der Kommunikation wird die "Antwort" in mehrere Statuscodes unterteilt. Die Kommunikation ist in den 200er Jahren erfolgreich, aber in den 400er und 500er Jahren Da die Kommunikation fehlgeschlagen ist, muss überprüft werden, ob die URL falsch eingegeben wurde oder ob auf den Remote-Server zugegriffen werden kann.

Einstufung Nummer Botschaft Erläuterung
Information 100 Continue Die Verarbeitung wird fortgesetzt. Bitte senden Sie eine weitere Anfrage.
Information 101 Sitching Protocols Wechseln Sie zu dem im Upgrade-Header angegebenen Protokoll und fordern Sie es erneut an.
Erfolg 200 OK Erfolgreich.
Erfolg 201 Created Der neue Inhalt wurde an dem im Header "Standort" angegebenen Speicherort erstellt.
Erfolg 202 Accepted Die Anfrage wurde angenommen. Der Vorgang ist jedoch noch nicht abgeschlossen.
Erfolg 203 Non-Authoritative Information Der Antwortheader unterscheidet sich von dem, was der ursprüngliche Server zurückgegeben hat, aber der Prozess ist erfolgreich.
Erfolg 204 No Content Es gibt keinen Inhalt, aber der Prozess war erfolgreich.
Erfolg 205 Reset Content Nachdem die Anfrage angenommen wurde, verwerfen Sie bitte den aktuellen Inhalt (Bildschirm). ..
Erfolg 206 Partial Content Nur ein Teil des Inhalts wird zurückgegeben.
Transfer 300 Multiple Choices Es gibt mehrere Möglichkeiten, wie Sie den Inhalt erhalten.
Transfer 301 Moved Permanently Sie sind an einen anderen Speicherort umgezogen, der in der Kopfzeile Standort angegeben ist.
Transfer 302 Found Gefunden an einem anderen Ort, der im Header "Ort" angegeben ist. Bitte schauen Sie dort.
Transfer 303 See Other Suchen Sie an anderer Stelle im Standort-Header.
Transfer 304 Not Modified Nicht aktualisiert. Wenn-Modified-Es wird zurückgegeben, wenn der Header Since verwendet wird.
Transfer 305 Use Proxy Verwenden Sie den im Location-Header angegebenen Proxy.
Transfer 306 (Unused) ungebraucht.
Transfer 307 Temporary Redirect Ich ziehe vorübergehend an einen anderen Ort.
Client-Fehler 400 Bad Request Die Anfrage ist ungültig.
Client-Fehler 401 Unauthorized Nicht berechtigt.
Client-Fehler 402 Payment Required Zahlung ist erforderlich.
Client-Fehler 403 Forbidden Zugriff ist nicht erlaubt.
Client-Fehler 404 Not Found Nicht gefunden.
Client-Fehler 405 Method Not Allowed Die angegebene Methode wird nicht unterstützt.
Client-Fehler 406 Not Acceptable Nicht erlaubt.
Client-Fehler 407 Proxy Authentication Required Eine Proxy-Authentifizierung ist erforderlich.
Client-Fehler 408 Request Timeout Die Anfrage ist abgelaufen.
Client-Fehler 409 Conflict Die Anfrage ist in Konflikt geraten.
Client-Fehler 410 Gone Der angeforderte Inhalt ist weg.
Client-Fehler 411 Length Required Content-Bitte fügen Sie einen Längenheader hinzu, um ihn anzufordern.
Client-Fehler 412 Precondition Failed If-...Erfüllte nicht die im Header angegebenen Bedingungen.
Client-Fehler 413 Request Entity Too Large Die angeforderte Entität ist zu groß.
Client-Fehler 414 Request-URI Too Long Die angeforderte URI ist zu lang.
Client-Fehler 415 Unsupported Media Type Nicht unterstützter Medientyp.
Client-Fehler 416 Requested Range Not Satisfiable Der angeforderte Bereich ist ungültig.
Client-Fehler 417 Expectation Failed Die im Expect-Header angegebene Erweiterungsanforderung ist fehlgeschlagen.
Serverfehler 500 Internal Server Error Auf dem Server ist ein unerwarteter Fehler aufgetreten.
Serverfehler 501 Not Implemented Nicht implementiert.
Serverfehler 502 Bad Gateway Das Gateway ist ungültig.
Serverfehler 503 Service Unavailable Service ist nicht verfügbar.
Serverfehler 504 Gateway Timeout Das Gateway hat eine Zeitüberschreitung.
Serverfehler 505 HTTP Version Not Supported Diese HTTP-Version wird nicht unterstützt.

Bestätigung des Kommunikationsergebnisses durch das Programm

Lassen Sie uns nun das Kommunikationsergebnis programmgesteuert überprüfen.

Antwortvariable .status_code Sie können den Statuscode unter überprüfen.


url = 'http://www.otupy.net/'
res = requests.get(url)
print(res.status_code)

200

Wenn es nicht 200 ist, ist die Kommunikation fehlgeschlagen und Informationen auf der Website können nicht abgerufen werden.

Wenn die Nummer 200 ist, ist die Kommunikation erfolgreich und Sie können die auf der Website erhaltenen Informationen sehen.

Da das Kommunikationsergebnis in einer Variablen gespeichert ist, können Sie verschiedene Inhalte sehen.

URL anfordern Antwortvariable .url

Statuscode Antwortvariable .status_code

Antworttext im Textformat abrufen Antwortvariable .text

Antworttext im Binärformat abrufen Antwortvariable .content

Plätzchen Antwortvariable .cookies

Codierungsinformationen abrufen Antwortvariable .encoding

Von hier an werden wir die erfassten Textinformationen verwenden, um sie in die erforderlichen Informationen zu trennen.

#Erhalten Sie die Antwort im Binärformat, konvertieren Sie sie in Zeichen und zeigen Sie sie an(1000 Zeichen)
print(res.content[0:1000].decode('utf-8'))

....

Benutzerdefinierter Header

Wenn Sie eine Anfrage stellen, können Sie den Anforderungsheader und -text mit Informationen füllen.

Gehen Sie wie folgt vor, um durch Angabe des Headers in der GET-Kommunikation eine Anfrage zu stellen.

request.get (url, headers = Headerdaten vom Wörterbuchtyp)

Geben Sie dies an, um den "Benutzeragenten" als Header-Informationen zu ändern und darauf zuzugreifen.

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36 '}
res = requests.get(url, headers=headers)

Geben Sie Folgendes an, wenn Sie die Parameter in der GET-Kommunikation und -Kommunikation ändern.

request.get (url, params = Parameterdaten des Wörterbuchtyps)

params = {'key1': 'value1', 'key2': 'value2'}
res = requests.get(url, params=params)

Gehen Sie wie folgt vor, um eine Anfrage zu stellen, indem Sie Informationen per POST-Kommunikation in den Anforderungskörperteil packen.

request.get (url, data = Körperdaten des Wörterbuchtyps)

payload = {'send': 'data'}
res = requests.post(url, data=payload)

Zusammenfassung

Lassen Sie uns Informationen erhalten, indem Sie den für das Scraping erforderlichen Kommunikationsmechanismus unterdrücken. Morgen werden wir beginnen, die notwendigen Informationen aus den in dieser Fortsetzung erhaltenen Informationen zu extrahieren.

29 Tage bis Sie Ingenieur werden

Informationen zum Autor

HP von Otsu py: http://www.otupy.net/

Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter: https://twitter.com/otupython

Recommended Posts

In 100 Tagen sind Sie Ingenieur. ――Tag 71 ――Programmieren ――Über das Schaben 2
In 100 Tagen sind Sie Ingenieur. ――Tag 74 ――Programmieren ――Über das Schaben 5
In 100 Tagen sind Sie Ingenieur. ――Tag 73 ――Programmieren ――Über das Schaben 4
In 100 Tagen sind Sie Ingenieur. ――Tag 75 ――Programmieren ――Über das Schaben 6
In 100 Tagen sind Sie Ingenieur. ――Tag 70 ――Programmieren ――Über das Schaben
In 100 Tagen sind Sie Ingenieur. ――Tag 61 ――Programmieren ――Über Erkundung
In 100 Tagen sind Sie Ingenieur. ――Tag 68 ――Programmieren ――Über TF-IDF
In 100 Tagen sind Sie Ingenieur. ――Tag 81 ――Programmieren ――Über maschinelles Lernen 6
In 100 Tagen sind Sie Ingenieur. ――Tag 82 ――Programmieren ――Über maschinelles Lernen 7
In 100 Tagen sind Sie Ingenieur. ――Tag 79 ――Programmieren ――Über maschinelles Lernen 4
In 100 Tagen sind Sie Ingenieur. ――Tag 76 ――Programmieren ――Über maschinelles Lernen
In 100 Tagen sind Sie Ingenieur. ――Tag 80 ――Programmieren ――Über maschinelles Lernen 5
In 100 Tagen sind Sie Ingenieur. ――Tag 78 ――Programmieren ――Über maschinelles Lernen 3
Sie werden in 100 Tagen Ingenieur. ――Tag 84 ――Programmieren ――Über maschinelles Lernen 9
In 100 Tagen sind Sie Ingenieur. ――Tag 83 ――Programmieren ――Über maschinelles Lernen 8
In 100 Tagen sind Sie Ingenieur. ――Tag 77 ――Programmieren ――Über maschinelles Lernen 2
In 100 Tagen sind Sie Ingenieur. ――Tag 85 ――Programmieren ――Über maschinelles Lernen 10
Sie werden in 100 Tagen Ingenieur - Tag 63 - Programmierung - Wahrscheinlichkeit 1
Sie werden in 100 Tagen Ingenieur. ――Tag 65 ――Programmieren ――Über Wahrscheinlichkeit 3
Sie werden in 100 Tagen Ingenieur. ――Tag 64 ――Programmieren ――Über Wahrscheinlichkeit 2
Sie werden in 100 Tagen Ingenieur - Tag 86 - Datenbank - Über Hadoop
In 100 Tagen sind Sie Ingenieur. ――Tag 60 ――Programmieren ――Über Datenstruktur und Sortieralgorithmus
Sie werden in 100 Tagen Ingenieur - 27. Tag - Python - Python-Übung 1
Sie werden in 100 Tagen Ingenieur - Tag 34 - Python - Python-Übung 3
Sie werden in 100 Tagen Ingenieur - 31. Tag - Python - Python-Übung 2
Sie werden in 100 Tagen Ingenieur. ――Tag 67 ――Programmieren ――Über morphologische Analyse
Sie werden in 100 Tagen Ingenieur. ――Tag 66 ――Programmieren ――Über die Verarbeitung natürlicher Sprache
Sie werden in 100 Tagen Ingenieur. ――Tag 24 ―― Python ―― Grundlagen der Python-Sprache 1
Sie werden in 100 Tagen Ingenieur. ――Tag 30 ―― Python ―― Grundlagen der Python-Sprache 6
Sie werden in 100 Tagen Ingenieur. ――Tag 25 ―― Python ―― Grundlagen der Python-Sprache 2
Sie werden in 100 Tagen Ingenieur - 29. Tag - Python - Grundlagen der Python-Sprache 5
Sie werden in 100 Tagen Ingenieur - Tag 33 - Python - Grundlagen der Python-Sprache 8
Sie werden in 100 Tagen Ingenieur - 26. Tag - Python - Grundlagen der Python-Sprache 3
Sie werden in 100 Tagen Ingenieur - Tag 35 - Python - Was Sie mit Python tun können
Sie werden in 100 Tagen Ingenieur - Tag 32 - Python - Grundlagen der Python-Sprache 7
Sie werden in 100 Tagen Ingenieur - 28. Tag - Python - Grundlagen der Python-Sprache 4
Wenn beim Python-Scraping ein Fehler auftritt (Anforderungen)
Sie müssen vorsichtig mit den Befehlen sein, die Sie jeden Tag in der Produktionsumgebung verwenden.
Was Anfänger über das Programmieren im Jahr 2016 denken