Cara Mengikis Pertanyaan dan Jawaban Quora Menggunakan Python

Komentar: 0

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.

Mengapa Mengikis Data Quora?

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:

  • Memberikan informasi terkini tentang topik yang relevan, analisis ahli, dan pertanyaan yang sedang tren di berbagai subjek.
  • Berinteraksi secara sukses dengan audiens target dengan menjawab pertanyaan mereka dan meningkatkan kepercayaan terhadap reputasi pakar bisnis atau pribadi.
  • Memperoleh jawaban berkualitas, berbagi pengalaman dan informasi tanpa melakukan pencarian ekstensif secara menyeluruh.

Platform ini dapat digunakan dalam penelitian, pengembangan konten, atau membangun solusi AI.

Memahami Scraping Web Quora

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:

  • pertanyaan itu sendiri;
  • tautan yang berhubungan dengan beberapa halaman quora;
  • jumlah jawaban dan pertanyaan sejauh ini;
  • orang yang menulis jawaban;
  • tanggal mereka diterbitkan.

Dengan demikian, pengikisan data Quora memberikan wawasan tentang partisipasi pengguna, signifikansi, dan popularitas pertanyaan yang berbeda serta jawaban yang mereka terima.

Alat Penting untuk Mengikis Quora

Untuk mengikis data Quora, pustaka Python digunakan. Di bawah ini adalah sumber daya yang paling relevan yang akan memungkinkan Anda untuk mencapai tujuan tersebut:

  • BeautifulSoup - untuk mem-parsing halaman HTML dan mengumpulkan informasi yang dicari.
  • Requests - untuk memformulasikan permintaan Protokol Transfer Teks dan mendapatkan halaman web.
  • Selenium - untuk otomatisasi peramban, serta untuk menangkap konten yang dibuat secara dinamis.

Pustaka-pustaka ini memungkinkan untuk berinteraksi dengan halaman web dan mengumpulkan informasi dari Quora dengan mudah.

Membuat Skrip Python Scraping Quora

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.

Langkah 1: Menyiapkan Lingkungan Proyek Python Anda

Sebelum melakukan pengikisan, kita harus mempersiapkan lingkungan kerja:

  1. Unduh dan instal Python dari laman resminya.
  2. Siapkan lingkungan virtual untuk mengkotak-kotakkan pustaka yang digunakan.
    
    python -m venv quora_scraper
    source quora_scraper/bin/activate  # Untuk MacOS dan Linux
    quora_scraper\Scripts\activate     # Untuk Windows
    
    

Langkah 2: Menginstal Pustaka Python yang Diperlukan

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.

Langkah 3: Mengirim Requests ke Quora

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)

Langkah 4: Mengurai Respons HTML

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

Langkah 5: Mengekstrak Pertanyaan dan Jawaban Quora

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)

Langkah 6: Menangani Pagination untuk Beberapa Halaman

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)

Langkah 7: Menyimpan Data yang Dikikis Secara Efisien

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)

Langkah 8: Mengekspor Data ke Format CSV atau JSON

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)

Langkah 9: Menangani Batas Tarif dan Masalah Pemblokiran

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.

  1. Menambahkan beberapa waktu sebelum mengirim permintaan berikutnya.

    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.

  2. Menggunakan server proxy.

    Seseorang dapat dengan mudah menghindari pemblokiran alamat IP dengan menggunakan server proxy. Mari kita lihat bagaimana hal ini dapat digunakan dengan Request dan Selenium.

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

Langkah 10: Menyatukan Semuanya

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

Kesimpulan

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 komentar