Heim > Artikel > Backend-Entwicklung > Praktischer Crawler-Kampf in Python: Baidu kennt Crawler
Python kann uns als leistungsstarke Programmiersprache dabei helfen, große Datenmengen bequemer im Internet abzurufen. Unter ihnen ist die Crawler-Technologie ein sehr repräsentativer Teil. Crawler können verschiedene Daten im Internet abrufen und analysieren und uns so eine große Menge wertvoller Informationen liefern. Auch in Python ist die Crawler-Technologie weit verbreitet. Baidu Zhizhi ist eine Website, die eine große Anzahl von Wissensfragen und Antworten bereitstellt. In diesem Artikel wird die Methode zur Implementierung des Baidu Zhizhi-Crawlers in Python vorgestellt.
Zunächst müssen wir verstehen, wie die Baidu-Website gecrawlt wird. In Python können Sie die Requests-Bibliothek oder die Urlopen-Funktion in der Urllib-Bibliothek verwenden, um den Quellcode der Website abzurufen. Nachdem wir den Quellcode erhalten haben, können wir die BeautifulSoup-Bibliothek verwenden, um das Webseitendokument zu analysieren und die erforderlichen Informationen einfach herauszufiltern. Hier müssen wir jede Frage und die entsprechende beste Antwort crawlen. Wenn wir uns den Quellcode ansehen, den Baidu kennt, können wir feststellen, dass jede beste Antwort eine eigene unabhängige Klassen-ID hat, und auf dieser Grundlage können wir den entsprechenden Inhalt auswählen.
Das Folgende ist der Implementierungsprozess des Codes:
import requests from bs4 import BeautifulSoup # 网页地址 url = "https://zhidao.baidu.com/question/2031956566959407839.html" # 发送请求 r = requests.get(url) # 解析网页 soup = BeautifulSoup(r.text, "html.parser") # 获取问题 question = soup.find("span", class_="ask-title").text print("问题: ", question) # 获取最佳答案 answer = soup.find("pre", class_="best-text mb-10").text print("最佳答案: ", answer)
Als nächstes müssen wir mehrere Fragen und ihre Antworten crawlen. Wir können eine Liste mit Fragen erstellen, jede Frage und Antwort durch eine for-Schleife herauskriechen und sie dann ausdrucken. Da das Suffix jeder Frage-URL auf Baidu unterschiedlich ist, müssen wir die zu crawlende Webseitenadresse automatisch durch Zeichenfolgenformatierung generieren.
Das Folgende ist der Implementierungscode:
import requests from bs4 import BeautifulSoup # 创建问题列表 questions = [ "2031956566959407839", "785436012916117832", "1265757662946113922", "455270192556513192", "842556478655981450" ] # 循环爬取问题和最佳答案 for q in questions: # 根据问题ID拼接URL url = f"https://zhidao.baidu.com/question/{q}.html" # 发送请求 r = requests.get(url) # 解析网页 soup = BeautifulSoup(r.text, "html.parser") # 获取问题 try: question = soup.find("span", class_="ask-title").text except: question = "" # 获取最佳答案 try: answer = soup.find("pre", class_="best-text mb-10").text except: answer = "" # 打印问题和答案 print("问题: ", question) print("最佳答案: ", answer) print("----------------------")
Abschließend speichern wir die Crawling-Ergebnisse in einer Datei. Sie können das in Python integrierte Modul csv verwenden, um jede Frage und Antwort in einer CSV-Datei zu speichern. Um das Problem verstümmelter chinesischer Zeichen zu vermeiden, können wir außerdem BOM (Byte Order Mark) zum Header der CSV-Datei hinzufügen.
Das Folgende ist der Implementierungscode:
import requests from bs4 import BeautifulSoup import csv import codecs # 创建问题列表 questions = [ "2031956566959407839", "785436012916117832", "1265757662946113922", "455270192556513192", "842556478655981450" ] # 创建文件 with open("questions.csv", "w", newline='', encoding='utf-8-sig') as file: writer = csv.writer(file) writer.writerow(['问题', '最佳答案']) # 循环爬取问题和最佳答案 for q in questions: # 根据问题ID拼接URL url = f"https://zhidao.baidu.com/question/{q}.html" # 发送请求 r = requests.get(url) # 解析网页 soup = BeautifulSoup(r.text, "html.parser") # 获取问题 try: question = soup.find("span", class_="ask-title").text except: question = "" # 获取最佳答案 try: answer = soup.find("pre", class_="best-text mb-10").text except: answer = "" # 保存到csv文件 writer.writerow([question, answer])
In diesem Artikel haben wir vorgestellt, wie man Python zum Crawlen der Baidu-Website verwendet. Wir haben gelernt, wie man die Bibliotheken „requests“ und „urllib“ zum Senden von Anfragen verwendet, wie man die Bibliothek „BeautifulSoup“ zum Parsen von Webseiten verwendet und wie man die gecrawlten Ergebnisse in einer CSV-Datei speichert. Mit diesen Methoden können wir problemlos Daten im Internet abrufen und analysieren. Die Crawler-Technologie spielt im Internetzeitalter eine sehr wichtige Rolle bei der Big-Data-Analyse. Als Python-Programmierer ist es wichtig, relevante Kenntnisse zu erlernen und zu beherrschen.
Das obige ist der detaillierte Inhalt vonPraktischer Crawler-Kampf in Python: Baidu kennt Crawler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!