In diesem Artikel geht es darum, wie man Quora-Daten extrahiert und warum dies nützlich sein könnte. Außerdem wird erläutert, wie Python zur Automatisierung dieser Aufgabe verwendet werden kann. Außerdem werden wir uns die wichtigsten Tools und Bibliotheken ansehen, die für das Scrapen von dieser Website benötigt werden.
Quora ist eine der beliebtesten Websites zur Beantwortung von Fragen, die von Menschen auf der ganzen Welt genutzt wird. Besonders bekannt ist sie in den USA, dem Vereinigten Königreich, Kanada, Australien und anderen englischsprachigen Ländern. Die Analyse der Quora-Daten bietet zahlreiche Vorteile, z. B.:
Die Plattform kann für die Forschung, die Entwicklung von Inhalten oder den Aufbau von KI-Lösungen genutzt werden.
Unter Web Scraping versteht man das Extrahieren von Informationen und Daten aus einer Website oder einer Web-Seite. Es ist eine moderne Methode, um viele Informationen zu sammeln und sie in eine organisierte Struktur wie eine CSV-Datei zu konvertieren.
Was ist Web Scraping Quora Plattform geben uns:
Das Scraping von Quora-Daten gibt also Aufschluss über die Beteiligung der Nutzer, die Bedeutung und die Beliebtheit der verschiedenen Fragen sowie die Antworten, die sie erhalten.
Um Quora-Daten zu scrapen, werden Python-Bibliotheken verwendet. Im Folgenden finden Sie die wichtigsten Ressourcen, mit denen Sie dieses Ziel erreichen können:
Mit diesen Bibliotheken ist es möglich, mit Webseiten zu interagieren und mühelos Informationen von Quora zu sammeln.
In diesem Unterkapitel geht es um den Aufbau eines Scrapers, der schrittweise erfolgen soll. Bereiten Sie den Arbeitsbereich vor, installieren Sie die erforderlichen Bibliotheken, erstellen Sie Prozeduren für das Senden von Anfragen, für das Parsen des HTML-Codes und für die Arbeit mit den abgerufenen Informationen.
Vor dem Schaben muss man die Arbeitsumgebung vorbereiten:
python -m venv quora_scraper
source quora_scraper/bin/activate # Für MacOS und Linux
quora_scraper\Scripts\activate # Für Windows
Installieren Sie in diesem Schritt die notwendigen Bibliotheken, die Sie für das Web Scraping benötigen:
pip install requests beautifulsoup4
Diese Schnittstellen sind für die Übermittlung von HTTP-Anfragen und die anschließende Analyse der empfangenen HTML-Daten unerlässlich.
Um eine bestimmte API aufzurufen und die HTML-Seite zurückzubekommen, werden wir die Requests-Bibliothek verwenden. Sie ist intuitiv und erledigt die Aufgabe sehr schnell.
url = "https://www.quora.com/How-do-you-open-your-own-company"
response = requests.get(url)
Um Python zum Scrapen von Quora-Antworten verwenden zu können, benötigen wir eine weitere Bibliothek namens BeautifulSoup. So installieren Sie sie:
soup = BeautifulSoup(response.text, "lxml")
question = soup.find(class_='q-box qu-userSelect--text')
Um die Fragen und Antworten zu extrahieren, müssen Sie nur den gewünschten HTML-Tag finden, der diese Angaben enthält. Nehmen wir einen Fall:
text_of_answers = []
for answer_id in range(6):
answers = soup.find_all(
class_=f'q-box dom_annotate_question_answer_item_{answer_id} qu-borderAll qu-borderColor--raised qu-boxShadow--small qu-mb--small qu-bg--raised')
for answer in answers:
text = answer.find('p', class_='q-text qu-display--block qu-wordBreak--break-word qu-textAlign--start')
text_of_answers.append(text)
Quora neigt dazu, sehr viele Antworten zu haben, und oft muss man die Seite sehr weit scrollen, um alles zu sehen. Hierfür werden wir Selenium verwenden, um die Website zu automatisieren.
Im Folgenden erfahren Sie, wie Sie Selenium einrichten und Proxys verwenden, um Ihre Identität besser zu verbergen:
from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy_address}')
chrome_options.add_argument(f'--proxy-auth={proxy_username}:{proxy_password}')
chrome_options.add_argument("--headless")
driver = wiredriver.Chrome(options=chrome_options)
Nachdem Sie alles in Selenium eingerichtet haben, müssen Sie nur noch eine HTTP-Anfrage stellen und dann weiter nach unten scrollen, um diese Daten zu erfassen:
url = "https://www.quora.com/How-do-you-open-your-own-company"
driver.execute_script('window.scrollBy(0, 1000)')
driver.get(url)
Wenn Sie mit dem Sammeln der Daten fertig sind, möchten Sie diese so aufbewahren, dass sie später leicht analysiert werden können. Am besten ist es, die Daten im JSON-Format aufzubewahren, da dies das am häufigsten verwendete Format ist.
with open(f'quora_data.json', 'w', encoding='utf-8') as json_file:
json.dump(text_of_answers, json_file, ensure_ascii=False, indent=4)
Wir haben die Daten in JSON gespeichert, aber in manchen Fällen könnte es gewünscht sein, sie in mehr als einem Format auf einmal zu speichern. Hier haben Sie also eine Funktion, die genau das tut:
def export_data(data, csv_filename="quora_data.csv", json_filename="quora_data.json"):
save_to_csv(data, csv_filename)
save_to_json(data, json_filename)
export_data(text_of_answers)
Quora hat einige Schutzmechanismen gegen automatisiertes Daten-Scraping. Wenn Sie also versuchen, viele Anfragen an Quora zu senden, wird Ihre IP-Adresse abgeschnitten. Es gibt jedoch Möglichkeiten, dies zu umgehen.
Dies ist eine einfache Nachahmung des menschlichen Verhaltens, die eine gewisse Verzögerung beim Senden einer Anfrage bewirkt.
import time
import random
def random_delay():
time.sleep(random.uniform(2, 5))
Fügen Sie diese Funktion nach jeder Abfrage hinzu, um die Chancen zu erhöhen, nicht blockiert zu werden.
Durch die Verwendung von Proxy-Servern lässt sich die Sperrung der IP-Adresse leicht umgehen. Schauen wir uns an, wie dies mit Requests und Selenium verwendet werden kann.
url = "https://www.quora.com/How-do-you-open-your-own-company" #
proxy = 'LOGIN:PASSWORD@ADDRESS:PORT'
proxies = {
"http": f"http://{proxy}",
"https": f"https://{proxy}",
}
response = requests.get(url, proxies=proxies)
proxy_address = ""
proxy_username = ""
proxy_password = ""
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy_address}')
chrome_options.add_argument(f'--proxy-auth={proxy_username}:{proxy_password}')
chrome_options.add_argument("--headless")
driver = wiredriver.Chrome(options=chrome_options)
Nachdem Sie also alle Schritte abgedeckt haben, ist es an der Zeit, sie zu kombinieren und in ein Skript zu packen.
import json
from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver
from bs4 import BeautifulSoup
proxy_address = ""
proxy_username = ""
proxy_password = ""
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy_address}')
chrome_options.add_argument(f'--proxy-auth={proxy_username}:{proxy_password}')
chrome_options.add_argument("--headless")
driver = wiredriver.Chrome(options=chrome_options)
url = "https://www.quora.com/How-do-you-open-your-own-company"
driver.execute_script('window.scrollBy(0, 1000)')
driver.get(url)
html = driver.page_source
soup = BeautifulSoup(html, "lxml")
question = soup.find(class_='q-box qu-userSelect--text')
# Antworten
text_of_answers = [{'question': question}]
for answer_id in range(6):
answers = soup.find_all(
class_=f'q-box dom_annotate_question_answer_item_{answer_id} qu-borderAll qu-borderColor--raised qu-boxShadow--small qu-mb--small qu-bg--raised')
for answer in answers:
text = answer.find('p', class_='q-text qu-display--block qu-wordBreak--break-word qu-textAlign--start').text
text_of_answers.append({
'answers': text,
})
with open(f'Quora_data.json', 'w', encoding='utf-8') as json_file:
json.dump(text_of_answers, json_file, ensure_ascii=False, indent=4)
print(f"Quora_data.json")
In diesem Artikel haben wir die Methoden des Quora Scraping mit Python diskutiert. Solche Skripte ermöglicht es Benutzern, einige Einschränkungen zusammen mit Paginierung und Datenspeicherung in verschiedenen Formaten wie JSON und CSV außer Kraft zu setzen.
Für eine groß angelegte Datenerfassung wäre die effektivste Methode die Verwendung der API von Quora. Wenn Sie sich hingegen strategisch für BeautifulSoup oder Selenium entscheiden, ist die Verwendung von Proxy-Servern ein Muss für eine nachhaltige Leistung.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bemerkungen: 0