suchen
HeimBackend-EntwicklungPython-TutorialErste 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

2. Erste Schritte mit Python-Crawlern (4) – Detaillierte Erklärung der HTML-Textparsing-Bibliothek BeautifulSoup

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!

Stellungnahme
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
Was sind einige häufige Gründe, warum ein Python -Skript möglicherweise nicht auf Unix ausgeführt wird?Was sind einige häufige Gründe, warum ein Python -Skript möglicherweise nicht auf Unix ausgeführt wird?Apr 28, 2025 am 12:18 AM

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.

Geben Sie ein Beispiel für ein Szenario an, in dem die Verwendung eines Python -Arrays angemessener wäre als die Verwendung einer Liste.Geben Sie ein Beispiel für ein Szenario an, in dem die Verwendung eines Python -Arrays angemessener wäre als die Verwendung einer Liste.Apr 28, 2025 am 12:15 AM

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.

Was sind die Auswirkungen der Leistung bei der Verwendung von Listen im Vergleich zu Arrays in Python?Was sind die Auswirkungen der Leistung bei der Verwendung von Listen im Vergleich zu Arrays in Python?Apr 28, 2025 am 12:10 AM

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

Wie handelt es sich bei Numpy um die Speicherverwaltung für große Arrays?Wie handelt es sich bei Numpy um die Speicherverwaltung für große Arrays?Apr 28, 2025 am 12:07 AM

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

Was erfordert das Importieren eines Moduls: Listen oder Arrays?Was erfordert das Importieren eines Moduls: Listen oder Arrays?Apr 28, 2025 am 12:06 AM

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

Welche Datentypen können in einem Python -Array gespeichert werden?Welche Datentypen können in einem Python -Array gespeichert werden?Apr 27, 2025 am 12:11 AM

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

Was passiert, wenn Sie versuchen, einen Wert des falschen Datentyps in einem Python -Array zu speichern?Was passiert, wenn Sie versuchen, einen Wert des falschen Datentyps in einem Python -Array zu speichern?Apr 27, 2025 am 12:10 AM

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

Welches ist Teil der Python Standard Library: Listen oder Arrays?Welches ist Teil der Python Standard Library: Listen oder Arrays?Apr 27, 2025 am 12:03 AM

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

See all articles

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ße Werkzeuge

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

DVWA

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

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor