


Erste Schritte mit Python-Crawlern (3) – Verwenden von Anfragen zum Erstellen der Zhihu-API
Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zu Python ein, wie Sie mit Crawlern beginnen und Anfragen zum Erstellen der Zhihu-API verwenden. Der Artikel stellt es detailliert anhand von Beispielcode vor Eine große Hilfe für alle. Freunde, die es brauchen, können einen Blick darauf werfen.
Vorwort
Im Crawler-Reihenartikel „Elegante HTTP-Bibliotheksanfragen“ wird die Verwendung von Anfragen vorgestellt Wissen Zu den Funktionen der Hu-API gehören: Senden privater Nachrichten, Liken von Artikeln, Verfolgen von Benutzern usw. Da für jede Funktion, die Benutzeroperationen beinhaltet, eine Anmeldung erforderlich ist, wird empfohlen, Python zu verstehen, um die Zhihu-Anmeldung zu simulieren, bevor Sie diesen Artikel lesen. Nun wird davon ausgegangen, dass Sie bereits wissen, wie Sie Anfragen verwenden, um die Zhihu-Anmeldung zu simulieren.
Ideenanalyse
Der Vorgang des Sendens einer privaten Nachricht besteht darin, dass der Browser eine HTTP-Anfrage an den Server sendet Anfrage-URL und Anfrage-HeaderKopfer und der Anfragetext Solange diese Informationen klar sind, ist es einfach, Anfragen zu verwenden, um das Senden privater Nachrichten durch den Browser zu simulieren.
Öffnen Sie den Chrome-Browser, suchen Sie einen Benutzer, klicken Sie, um eine private Nachricht zu senden, und verfolgen Sie den Netzwerkanforderungsprozess der privaten Nachricht.
Schauen Sie sich zunächst die Informationen im Anforderungsheader an
Der Anforderungsheader enthält CookieAnmeldeinformationen. Darüber hinaus gibt es auch ein Autorisierungsfeld, das zur Benutzerauthentifizierung verwendet wird. Gleichzeitig wird dieses Feld auch in Cookies gespeichert (um zu verhindern, dass Cookie-Informationen durchsickern, habe ich ein Mosaik erstellt). wenn Anfragen gestellt werden.
Werfen wir einen Blick auf die Anfrage-URL und den Anfragetext
Die Anfrage-URL lautet www.zhihu.com/api/ v4/messages, die Anforderungsmethode ist POST, der Anforderungstext
{"type":"common","content":"你好,我是pythoner","receiver_hash":"1da75b85900e00adb072e91c56fd9149"}
Der Anforderungstext ist eine JSON-Zeichenfolge, der Typ und der Inhalt sind leicht zu verstehen, aber ich weiß nicht, was Receiver_Hash ist und was ich brauche muss noch näher bestimmt werden, aber Sie sollten es erraten können. Dies ist ein Feld, das der Benutzer-ID ähnelt.
Nun stellt sich also die Frage: Wie finde ich die Benutzer-ID über die URL der Homepage des Benutzers? Um den gesamten Prozess des privaten Versendens vollständig zu simulieren, habe ich speziell ein Zhihu-Konto registriert.
Wenn Sie keine zusätzliche Mobiltelefonnummer haben, können Sie mit Google nach „SMS online empfangen“ suchen. Es gibt viele Mobiltelefonnummern im Internet, die den kostenlosen Online-Empfang von SMS ermöglichen Homepage meines registrierten Kontos: https://www.zhihu.com/people/xiaoxiaodouzi
Versuchen Sie zunächst, dem Trompetenkonto zu folgen, und finden Sie dann das Trompetenkonto in der Liste, der ich folge, wenn ich die Maus bewege Beim Avatar des Trumpet-Kontos stelle ich fest, dass es eine HTTP-Netzwerkanfrage gibt.
Die Anforderungs-URL lautet www.zhihu.com/api/v4/members/xiaoxiaodouzi. Der hintere Teil dieser URL „xiaoxiaodouzi“ entspricht dem hinteren Teil der Trompete Homepage-URL. Diesen Teil nennen wir url_token. Die von der
-Schnittstelle zurückgegebenen Daten sind die persönlichen öffentlichen Informationen des Benutzers.
{ ... "id":"1da75b85900e00adb072e91c56fd9149", "favorite_count":0, "voteup_count":0, "commercial_question_count":0, "url_token":"xiaoxiaodouzi", "type":"people", "avatar_url":"https://pic1.zhimg.com/v2-ca13758626bd7367febde704c66249ec_is.jpg", "is_active":1492224390, "name":"\u6211\u662f\u5c0f\u53f7", "url":"http://www.zhihu.com/api/v4/people/1da75b85900e00adb072e91c56fd9149", "gender":-1 ... }
Wir können deutlich sehen, dass es ein ID-Feld gibt. Wie wir bereits vermutet haben, ist das Receiver_Hash-Feld in der privaten Nachricht die ID des Benutzers.
Code-Implementierung
An dieser Stelle haben wir die Idee der Privatnachrichtenfunktion geklärt, und die Code-Implementierung ist eine Selbstverständlichkeit .
Benutzerinformationen
Um das für die private Nachrichtenschnittstelle erforderliche Receiver_Hash-Wörterbuch zu erhalten, müssen wir zunächst die Benutzerinformationen abrufen enthält die ID für den Wert.
@need_login def user(self, url_token): """ 获取用户信息, :param url_token: url_token 是用户主页url中后面部分 例如: https://www.zhihu.com/people/xiaoxiaodouzi url_token 是 xiaoxiaodouzi :return:dict """ response = self._session.get(URL.profile(url_token)) return response.json()
Senden Sie eine private Nachricht
@need_login def send_message(self, user_id, content): """ 给指定的用户发私信 :param user_id: 用户ID :param content: 私信内容 """ data = {"type": "common", "content": content, "receiver_hash": user_id} response = self._session.post(URL.message(), json=data) data = response.json() if data.get("error"): self.logger.info("私信发送失败, %s" % data.get("error").get("message")) else: self.logger.info("发送成功") return data
Die beiden oben genannten Methoden werden eingefügt einer namens Zhihu In der Klasse habe ich nur die Schlüsselcodes aufgelistet. Der beteiligte @need_login ist ein Benutzerauthentifizierungsdekorator, der darauf hinweist, dass diese Methode eine Anmeldung erfordert, bevor sie ausgeführt werden kann. Wenn Sie vorsichtig sind, stellen Sie möglicherweise fest, dass ich das Header-Feld nicht in jeder Anfrage explizit angegeben habe, da ich es in der Methode init.py initialisiert habe.
def init(self): self._session = requests.session() self._session.verify = False self._session.headers = {"Host": "www.zhihu.com", "Referer": "https://www.zhihu.com/", 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36' ' (KHTML, like Gecko) Chrome/56.0.2924.87', } self._session.cookies = cookiejar.LWPCookieJar(filename=cookie_filename) try: self._session.cookies.load(ignore_discard=True) except: pass
Aufrufen und ausführen
from zhihu import Zhihu if name == 'main': zhihu = Zhihu() profile = zhihu.user("xiaoxiaodouzi") _id = profile.get("id") zhihu.send_message(_id, "你好,这是来自Python之禅的问候")
Nach Abschluss der Ausführung hat die Trompete die von mir gesendete private Nachricht erfolgreich empfangen.
Schließlich können wir einer ähnlichen Idee folgen, um Funktionen wie das Folgen und Liken von Benutzern zu implementieren.
[Verwandte Empfehlungen]
1. Erste Schritte mit Python-Crawlern (5) – Beispiel-Tutorial für reguläre Ausdrücke
3. Erste Schritte mit Python-Crawlern (2) – HTTP-Bibliotheksanfragen
4. Einführung in den Python-Crawler (1) – Schnelles Verständnis des HTTP-Protokolls
5. Teilen Sie ein Beispiel für die Verwendung von Python Crawler zur Simulation der Zhihu-Anmeldung
Das obige ist der detaillierte Inhalt vonErste Schritte mit Python-Crawlern (3) – Verwenden von Anfragen zum Erstellen der Zhihu-API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Die Gründe, warum Python -Skripte auf UNIX -Systemen nicht ausgeführt werden können, sind: 1) unzureichende Berechtigungen unter Verwendung von chmod xyour_script.py zur Erteilung von Ausführungsberechtigungen; 2) Falsche oder fehlende Shebang -Linie, Sie sollten #!/Usr/bin/envpython verwenden; 3) In falsche Einstellungen für die Umgebungsvariablen können Sie os.Environ -Debugging drucken. 4) Mit der falschen Python -Version können Sie die Version in der Shebang -Zeile oder der Befehlszeile angeben. 5) Abhängigkeitsprobleme unter Verwendung der virtuellen Umgebung, um Abhängigkeiten zu isolieren; 6) Syntaxfehler, verwenden Sie Python-Mpy_CompileYour_Script.py, um zu erkennen.

Die Verwendung von Python -Arrays eignet sich besser für die Verarbeitung großer Mengen von numerischen Daten als für Listen. 1) Arrays speichern mehr Speicher, 2) Arrays sind schneller nach numerischen Werten, 3) Konsistenz vom Arrays Kraftstyp, 4) Arrays sind mit C -Arrays kompatibel, sind jedoch nicht so flexibel und bequem wie Listen.

Listen besser voreflexibilität undmixdatatatypen, während Datensätze der überlegenen sumerischen Berechnungen sandlastete

NumpymanageMemoryforlargearrayseffictionlyusingViews, Kopien und Memory-Made.1) ViewsAllowsLicing Mit Outcopying, direktModifizierende Theoriginalarray.2) CopieScanbecreated withthecopy () methodeChoperingdata.3) Memory-Maddscanbeed-medellessive-made-mapedFileshandleshandLessive-massessive-massessiva

ListsinpythondonotRequireMportingamodule, whilearRays aus der FROMTHEARRAYMODULEDONEDANIMIMPORT.1) listet zur Verfügung gestellt.

PythonlistscanstoreanyDatatype, ArrayModulearraysStoreOnetype und NumpyarraysarefornumericalComputations.1) listet dieArversatile-memory-effizient.2) Arraymodulenarraysalememory-effizientforhomogeneData.3) Numpharraysareoptional-EffictionhomogenInData.3) nummodulenarraysoptionalinformanceIntata.3) nummodulearraysoptionalinformanceIntata.3) NumpharraysareoPresopplowancalinScesDataa.3) NumpharraysoePerformance

Wenn SietostoreavalueOfThewrongdatatypeinapythonarray, touencounteratypeerror.Thissisdustuetothearraymodules -SstrictTypeNeen -Forcortion, welche

PythonlistsarePartThestandardlibrary, whilearraysarenot.listarebuilt-in, vielseitig und UNDUSEDFORSPORINGECollections, während dieArrayRay-thearrayModulei und loses und loses und losesaluseduetolimitedFunctionality.


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

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

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