Wie man Quora-Fragen und -Antworten mit Python ausliest

Bemerkungen: 0

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.

Warum Quora-Daten auslesen?

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.:

  • Bereitstellung aktueller Informationen zu relevanten Themen, Expertenanalysen und aktuellen Fragen zu verschiedenen Themen.
  • Erfolgreiche Interaktion mit dem Zielpublikum durch Beantwortung von Anfragen und Nutzung des Vertrauens für den Ruf eines Unternehmens oder eines persönlichen Experten.
  • Qualitativ hochwertige Antworten, Austausch von Erfahrungen und Informationen, ohne dass eine umfassende Suche erforderlich ist.

Die Plattform kann für die Forschung, die Entwicklung von Inhalten oder den Aufbau von KI-Lösungen genutzt werden.

Verstehen von Quora Web Scraping

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:

  • die Frage selbst;
  • links, die zu einigen Quora-Seiten führen;
  • die Anzahl der bisherigen Antworten und Fragen;
  • die Personen, die die Antworten verfasst haben;
  • das Datum, an dem sie veröffentlicht wurden.

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.

Unverzichtbare Tools für das Scraping von Quora

Um Quora-Daten zu scrapen, werden Python-Bibliotheken verwendet. Im Folgenden finden Sie die wichtigsten Ressourcen, mit denen Sie dieses Ziel erreichen können:

  • BeautifulSoup - zum Parsen der HTML-Seiten und Sammeln der gesuchten Informationen.
  • Requests - für die Formulierung von Hypertext Transfer Protocol-Anfragen und das Abrufen der Webseiten.
  • Selenium - für die Browser-Automatisierung, sowie für die Erfassung von dynamisch erzeugten Inhalten.

Mit diesen Bibliotheken ist es möglich, mit Webseiten zu interagieren und mühelos Informationen von Quora zu sammeln.

Aufbau eines Quora Scraping Python Skripts

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.

Schritt 1: Einrichten Ihrer Python-Projektumgebung

Vor dem Schaben muss man die Arbeitsumgebung vorbereiten:

  1. Laden Sie Python von der offiziellen Seite herunter und installieren Sie es.
  2. Richten Sie eine virtuelle Umgebung ein, um Ihre genutzten Bibliotheken zu unterteilen.
    
    python -m venv quora_scraper
    source quora_scraper/bin/activate  # Für MacOS und Linux
    quora_scraper\Scripts\activate     # Für Windows
    
    

Schritt 2: Installation der erforderlichen Python-Bibliotheken

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.

Schritt 3: Senden von Anfragen an Quora

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)

Schritt 4: Parsen der HTML-Antwort

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')

Schritt 5: Extrahieren von Quora-Fragen und -Antworten

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)

Schritt 6: Handhabung der Paginierung für mehrere Seiten

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)

Schritt 7: Effiziente Speicherung der gescrapten Daten

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)

Schritt 8: Exportieren von Daten in das CSV- oder JSON-Format

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)

Schritt 9: Umgang mit Ratenbegrenzungen und Blockierungsproblemen

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.

  1. Ein wenig Zeit einplanen, bevor die nächste Anfrage gesendet wird.

    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.

  2. Verwenden Sie Proxy-Server.

    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.

    • requests:
      
      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)
      
      
    • Selenium:
      
      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)
      
      

Schritt 10: Alles zusammenfügen

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")

Schlussfolgerung

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.

Bemerkungen:

0 Bemerkungen