2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Unten finden Sie ein Beispiel für einen einfachen in Python geschriebenen Webcrawler, der eine bestimmte Webseite crawlt (z. Bhttps://example.com
, aber bitte beachten Sie, dass wir es bei der tatsächlichen Verwendung durch den Titel (Titel einer echten Website, die gecrawlt werden darf) ersetzen und ausdrucken müssen. Da der direkte Zugriff auf und das Scrapen realer Websites urheberrechtliche und rechtliche Probleme mit sich bringen kann, geben wir hier nur ein konzeptionelles Beispiel.
Um diese Aufgabe zu erfüllen, verwenden wir Pythonrequests
Bibliothek zum Senden und Verwenden von HTTP-AnfragenBeautifulSoup
Bibliothek zum Parsen von HTML-Inhalten. Wenn wir diese Bibliotheken noch nicht installiert haben, können wir sie über pip installieren:
- bash复制代码
-
- pip install requests beautifulsoup4
Hier ist das vollständige Codebeispiel:
- # 导入必要的库
- import requests
- from bs4 import BeautifulSoup
-
- def fetch_website_title(url):
- """
- 抓取指定网页的标题并返回。
-
- 参数:
- url (str): 需要抓取的网页的URL。
-
- 返回:
- str: 网页的标题,如果抓取失败则返回None。
- """
- try:
- # 发送HTTP GET请求
- response = requests.get(url)
-
- # 检查请求是否成功
- if response.status_code == 200:
- # 使用BeautifulSoup解析HTML内容
- soup = BeautifulSoup(response.text, 'html.parser')
-
- # 查找网页的<title>标签
- title_tag = soup.find('title')
-
- # 如果找到<title>标签,则返回其内容
- if title_tag:
- return title_tag.get_text(strip=True)
- else:
- return "No title found."
- else:
- return f"Failed to retrieve the webpage. Status code: {response.status_code}"
- except requests.RequestException as e:
- return f"Error fetching the webpage: {e}"
-
- # 示例URL(请替换为我们要抓取的网页的URL)
- url = 'https://example.com'
-
- # 调用函数并打印结果
- title = fetch_website_title(url)
- print(f"The title of the webpage is: {title}")
Beachten:
(1) Aufgrundhttps://example.com
ist beispielsweise ein Platzhalter, daher müssen wir ihn durch eine gültige Webseiten-URL ersetzen, die das Crawlen bei der Ausführung ermöglicht.
(2) Der Crawler sollte bei der Ausführung den Anforderungen der Zielwebsite entsprechenrobots.txt
Das Dokument schreibt die Einhaltung des Urheberrechts und der Zugriffsbeschränkungen der Website vor.
(3) Auf einigen Websites sind möglicherweise Anti-Crawler-Mechanismen wie User-Agent-Prüfung, Häufigkeitsbegrenzung usw. eingerichtet. Möglicherweise müssen wir unsere Anforderungsheader ändern (z. BUser-Agent
) oder verwenden Sie Methoden wie Proxys, um diese Einschränkungen zu umgehen.
(4) Für komplexere Webseitenstrukturen oder erweiterte Datenerfassungsanforderungen müssen wir möglicherweise mehr über HTML, CSS-Selektoren, XPath und Netzwerkanforderungen erfahren.
Unten finden Sie ein detaillierteres Python-Crawler-Codebeispiel, das ich dieses Mal verwenden werderequests
Bibliothek zum Senden und Verwenden von HTTP-AnfragenBeautifulSoup
Bibliothek zum Parsen von HTML-Inhalten zum Crawlen einer echten Website (z. B. verwenden wirhttps://www.wikipedia.org
Als Beispiel, aber bitte beachten Sie, dass der eigentliche Crawl mit dem der Website übereinstimmen sollterobots.txt
Bestimmungen und Urheberrechtsbestimmungen).
Stellen Sie zunächst sicher, dass wir es installiert habenrequests
Undbeautifulsoup4
Bibliothek. Wenn es nicht installiert ist, installieren Sie es mit pip:
- bash复制代码
-
- pip install requests beautifulsoup4
Anschließend können wir den folgenden Code verwenden, um den Titel der Wikipedia-Homepage abzurufen und auszudrucken:
- # 导入必要的库
- import requests
- from bs4 import BeautifulSoup
-
- def fetch_and_parse_title(url):
- """
- 发送HTTP GET请求到指定的URL,解析HTML内容,并返回网页的标题。
-
- 参数:
- url (str): 需要抓取的网页的URL。
-
- 返回:
- str: 网页的标题,如果抓取或解析失败则返回相应的错误消息。
- """
- try:
- # 发送HTTP GET请求
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
- } # 设置User-Agent来模拟浏览器访问
- response = requests.get(url, headers=headers)
-
- # 检查请求是否成功
- if response.status_code == 200:
- # 使用BeautifulSoup解析HTML内容
- soup = BeautifulSoup(response.text, 'html.parser')
-
- # 查找网页的<title>标签
- title_tag = soup.find('title')
-
- # 提取并返回标题内容
- if title_tag:
- return title_tag.get_text(strip=True)
- else:
- return "No title found in the webpage."
- else:
- return f"Failed to retrieve the webpage. Status code: {response.status_code}"
- except requests.RequestException as e:
- return f"Error fetching the webpage: {e}"
-
- # 示例URL(这里使用Wikipedia的主页作为示例)
- url = 'https://www.wikipedia.org'
-
- # 调用函数并打印结果
- title = fetch_and_parse_title(url)
- print(f"The title of the webpage is: {title}")
Dieser Code legt zunächst einen Anforderungsheader fest (headers
), das a enthältUser-Agent
Feld, dies dient dazu, einen echten Browserzugriff zu simulieren, da einige Websites den Anforderungsheader überprüfen, um den Crawler-Zugriff zu verhindern. Anschließend sendet es eine GET-Anfrage an die angegebene URL und verwendet BeautifulSoup, um den zurückgegebenen HTML-Inhalt zu analysieren.Als nächstes wird nach dem HTML gesucht<title>
Markieren Sie den Textinhalt und extrahieren Sie ihn als Titel der Webseite. Schließlich wird der Titel auf der Konsole ausgegeben.
Bitte beachten Sie, dass in diesem Beispiel zwar Wikipedia als Beispiel verwendet wird, wir uns jedoch in einem realen Projekt immer an die Zielwebsites halten solltenrobots.txt
Dokumentations- und Urheberrechtsrichtlinien, um sicherzustellen, dass unsere Crawling-Praktiken legal und ethisch sind.