Heim  >  Artikel  >  Backend-Entwicklung  >  Praktischer Crawler-Kampf in Python: Baidu kennt Crawler

Praktischer Crawler-Kampf in Python: Baidu kennt Crawler

王林
王林Original
2023-06-10 11:55:38631Durchsuche

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.

  1. Mit dem Crawlen beginnen

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)
  1. Mehrere Fragen und Antworten crawlen

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("----------------------")
  1. Speichern Sie die Crawling-Ergebnisse in einer Datei

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])
  1. Zusammenfassung

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!

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