Artikel ini berfokus pada cara mengekstrak data Quora dan mengapa hal ini dapat berguna, dan bagaimana Python dapat digunakan untuk mengotomatisasi tugas ini. Kita juga akan melihat alat dan pustaka utama yang diperlukan untuk mengikis data dari situs ini.
Quora adalah salah satu situs web penjawab pertanyaan paling populer yang digunakan oleh orang-orang dari seluruh dunia. Situs ini sangat terkenal di Amerika Serikat, Inggris, Kanada, Australia, dan negara-negara berbahasa Inggris lainnya. Ada banyak manfaat ketika menganalisis data Quora, seperti:
Platform ini dapat digunakan dalam penelitian, pengembangan konten, atau membangun solusi AI.
Web scraping mengacu pada tindakan mengekstraksi informasi dan data dari situs web atau halaman web. Ini adalah cara modern untuk mengumpulkan banyak informasi dan mengubahnya menjadi struktur yang terorganisir seperti file CSV.
Apa itu web scraping yang diberikan platform Quora kepada kami:
Dengan demikian, pengikisan data Quora memberikan wawasan tentang partisipasi pengguna, signifikansi, dan popularitas pertanyaan yang berbeda serta jawaban yang mereka terima.
Untuk mengikis data Quora, pustaka Python digunakan. Di bawah ini adalah sumber daya yang paling relevan yang akan memungkinkan Anda untuk mencapai tujuan tersebut:
Pustaka-pustaka ini memungkinkan untuk berinteraksi dengan halaman web dan mengumpulkan informasi dari Quora dengan mudah.
Subbab ini membahas konstruksi scraper, yang akan menjadi perhatian bertahap. Siapkan ruang kerja, instal pustaka yang diperlukan, buat prosedur untuk mengirim permintaan, untuk mengurai kode html, dan untuk bekerja dengan informasi yang diambil.
Sebelum melakukan pengikisan, kita harus mempersiapkan lingkungan kerja:
python -m venv quora_scraper
source quora_scraper/bin/activate # Untuk MacOS dan Linux
quora_scraper\Scripts\activate # Untuk Windows
Instal pustaka yang diperlukan yang Anda perlukan untuk web scraping pada langkah ini:
pip install requests beautifulsoup4
Antarmuka ini sangat penting untuk mengirimkan permintaan HTTP dan kemudian menganalisis data HTML yang diterima.
Untuk memanggil API tertentu dan mendapatkan halaman HTML kembali, kita akan menggunakan pustaka Requests. Library ini intuitif dan menyelesaikan pekerjaan dengan sangat cepat.
url = "https://www.quora.com/How-do-you-open-your-own-company"
response = requests.get(url)
Untuk menggunakan Python, untuk mengikis jawaban Quora, kita memerlukan pustaka lain yang disebut BeautifulSoup. Berikut ini adalah cara menginstalnya:
soup = BeautifulSoup(response.text, "lxml")
question = soup.find(class_='q-box qu-userSelect--text')
Untuk mengekstrak pertanyaan dan jawaban, Anda hanya perlu menemukan tag HTML yang diperlukan yang memiliki rincian ini. Mari kita ambil sebuah kasus:
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 cenderung memiliki banyak jawaban dan sering kali Anda perlu menggulir halaman untuk melihat semuanya. Untuk itu, kita akan menggunakan Selenium untuk mengotomatisasi situs web.
Di bawah ini adalah bagaimana Anda mengatur Selenium dan menggunakan proxy untuk menyembunyikan identitas Anda dengan lebih baik:
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)
Setelah Anda mengatur semuanya di Selenium, Anda hanya perlu membuat permintaan HTTP, dan kemudian terus menggulir ke bawah dan menangkap potongan-potongan data ini:
url = "https://www.quora.com/How-do-you-open-your-own-company"
driver.execute_script('window.scrollBy(0, 1000)')
driver.get(url)
Setelah Anda selesai mengumpulkan data, Anda ingin menyimpannya dengan cara yang membuatnya mudah untuk dianalisis di kemudian hari. Cara terbaik untuk melakukannya adalah dengan menyimpannya dalam format JSON, karena format ini yang paling banyak digunakan.
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)
Kita telah menyimpan data ke JSON, tetapi dalam beberapa kasus mungkin Anda ingin melakukannya dalam lebih dari satu format sekaligus. Jadi, di sini Anda memiliki fungsi yang melakukan hal itu:
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 memiliki beberapa pertahanan terhadap pengikisan data otomatis, karena itu mencoba mengirim banyak permintaan ke Quora akan mengakibatkan terputusnya alamat IP Anda. Namun, ada cara untuk mengatasi hal ini.
Ini adalah mimikri dasar dari perilaku manusia yang menambahkan beberapa bentuk jeda ketika permintaan dikirim.
import time
import random
def random_delay():
time.sleep(random.uniform(2, 5))
Tambahkan fungsi ini setelah setiap kueri untuk meningkatkan kemungkinan tidak diblokir.
Seseorang dapat dengan mudah menghindari pemblokiran alamat IP dengan menggunakan server proxy. Mari kita lihat bagaimana hal ini dapat digunakan dengan Request dan 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)
Jadi, setelah Anda membahas semua langkah, sekarang saatnya untuk menggabungkannya dan memasukkannya ke dalam satu skrip.
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')
# Jawaban
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")
Pada artikel ini kita telah membahas metode scraping Quora dengan Python. Skrip yang dibuat memungkinkan pengguna untuk mengesampingkan beberapa batasan bersama dengan pagination dan penyimpanan data dalam berbagai format seperti JSON dan CSV.
Untuk pengumpulan data berskala besar, metode yang paling efektif adalah menggunakan API Quora. Di sisi lain, jika Anda secara strategis memilih untuk menggunakan BeautifulSoup atau Selenium, maka menggunakan server proxy adalah suatu keharusan untuk kinerja yang berkelanjutan.
Komentar: 0