Cet article se concentre sur la manière d'extraire les données de Quora et sur les raisons pour lesquelles elles peuvent être utiles, ainsi que sur la manière dont Python peut être utilisé pour automatiser cette tâche. Nous examinerons également les principaux outils et bibliothèques nécessaires pour extraire des données de ce site.
Quora est l'un des sites web de réponses aux questions les plus populaires au monde. Il est particulièrement populaire aux États-Unis, au Royaume-Uni, au Canada, en Australie et dans d'autres pays anglophones. L'analyse des données de Quora présente de nombreux avantages:
La plateforme peut être utilisée pour la recherche, le développement de contenu ou l'élaboration de solutions d'IA.
Le web scraping désigne l'action d'extraire des informations et des données d'un site ou d'une page web. Il s'agit d'un moyen moderne de rassembler un grand nombre d'informations et de les convertir en une structure organisée telle qu'un fichier CSV.
Qu'est-ce que la plateforme de web scraping Quora nous donne:
Ainsi, le scraping de données Quora donne un aperçu de la participation des utilisateurs, de l'importance et de la popularité des différentes questions ainsi que des réponses qu'elles reçoivent.
Afin de récupérer les données de Quora, des bibliothèques Python sont utilisées. Vous trouverez ci-dessous les ressources les plus pertinentes qui vous permettront d'atteindre cet objectif:
Ces bibliothèques permettent d'interagir avec des pages web et de collecter des informations sur Quora sans effort.
Cette sous-section traite de la construction d'un scraper, qui se fera par étapes. Préparez l'espace de travail, installez les bibliothèques nécessaires, créez des procédures pour envoyer des requêtes, pour analyser le code html et pour travailler avec les informations récupérées.
Avant de procéder au grattage, il faut préparer l'environnement de travail:
python -m venv quora_scraper
source quora_scraper/bin/activate # Pour MacOS et Linux
quora_scraper\Scripts\activate # Pour Windows
Installez les bibliothèques dont vous aurez besoin pour le web scraping dans cette étape:
pip install requests beautifulsoup4
Ces interfaces sont essentielles pour transmettre les requêtes HTTP et analyser ensuite les données HTML reçues.
Pour appeler une certaine API et obtenir une page HTML en retour, nous utiliserons la bibliothèque Requests. Elle est intuitive et permet d'effectuer le travail très rapidement.
url = "https://www.quora.com/How-do-you-open-your-own-company"
response = requests.get(url)
Afin d'utiliser Python pour récupérer les réponses de Quora, nous avons besoin d'une autre bibliothèque appelée BeautifulSoup. Voici comment l'installer:
soup = BeautifulSoup(response.text, "lxml")
question = soup.find(class_='q-box qu-userSelect--text')
Pour extraire les questions et les réponses, il suffit de trouver la balise HTML requise qui contient ces détails. Prenons un exemple:
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 a tendance à avoir beaucoup de réponses et il faut souvent faire défiler la page pour tout voir. Pour cela, nous utiliserons Selenium pour automatiser le site web.
Voici comment configurer Selenium et utiliser des proxies pour mieux cacher votre identité:
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)
Une fois que vous avez tout configuré dans Selenium, il vous suffit de faire une requête HTTP, puis de continuer à faire défiler les données et à les capturer:
url = "https://www.quora.com/How-do-you-open-your-own-company"
driver.execute_script('window.scrollBy(0, 1000)')
driver.get(url)
Lorsque vous avez fini de collecter les données, vous voulez les conserver d'une manière qui facilite leur analyse ultérieure. Le meilleur moyen d'y parvenir est de les conserver au format JSON, qui est le plus répandu.
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)
Nous avons sauvegardé des données au format JSON, mais dans certains cas, il peut être souhaitable de le faire dans plus d'un format à la fois. Voici donc une fonction qui fait exactement cela:
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 dispose de certains moyens de défense contre le scraping automatisé de données. Ainsi, si vous envoyez un grand nombre de requêtes à Quora, votre adresse IP sera coupée. Il existe cependant des moyens de contourner ce problème.
Il s'agit d'une imitation basique du comportement humain qui ajoute une certaine forme de décalage lorsqu'une demande est envoyée.
import time
import random
def random_delay():
time.sleep(random.uniform(2, 5))
Ajoutez cette fonction après chaque requête pour augmenter les chances de ne pas être bloqué.
On peut facilement éviter le blocage de l'adresse IP en utilisant des serveurs proxy. Voyons comment l'utiliser avec Requests et Selenium.
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)
Une fois toutes les étapes franchies, il est temps de les combiner et de les intégrer dans un script.
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')
# Réponses
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")
Dans cet article, nous avons discuté des méthodes de scraping de Quora avec Python. Ces scripts permettent aux utilisateurs d'outrepasser certaines restrictions ainsi que la pagination et l'enregistrement des données dans différents formats tels que JSON et CSV.
Pour la collecte de données à grande échelle, la méthode la plus efficace consiste à utiliser l'API de Quora. En revanche, si vous choisissez stratégiquement d'utiliser BeautifulSoup ou Selenium, l'utilisation de serveurs proxy est indispensable pour garantir des performances durables.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Commentaires: 0