Bài viết này tập trung vào cách trích xuất dữ liệu Quora và lý do tại sao nó có thể hữu ích và làm thế nào Python có thể được sử dụng để tự động hóa nhiệm vụ này. Chúng tôi cũng sẽ xem xét các công cụ và thư viện chính cần thiết để cạo từ trang web này.
Quora là một trong những trang web trả lời câu hỏi phổ biến nhất mà mọi người từ khắp nơi trên thế giới sử dụng. Nó đặc biệt nổi bật ở Hoa Kỳ, Anh, Canada, Úc và các quốc gia nói tiếng Anh khác. Có rất nhiều lợi ích khi phân tích dữ liệu Quora, chẳng hạn như:
Nền tảng có thể được sử dụng trong nghiên cứu, phát triển nội dung hoặc xây dựng các giải pháp AI.
Web Scraping đề cập đến hành động trích xuất thông tin và dữ liệu từ một trang web hoặc một trang web. Đó là một cách hiện đại để thu thập rất nhiều thông tin và chuyển đổi nó thành một cấu trúc có tổ chức như tệp CSV.
Nền tảng Quora Scraping Web cung cấp cho chúng tôi:
Do đó, Quát dữ liệu Quora cung cấp cái nhìn sâu sắc về sự tham gia của người dùng, ý nghĩa và sự phổ biến của các câu hỏi khác nhau cũng như các câu trả lời họ nhận được.
Để sử dụng các thư viện Python dữ liệu Quora được sử dụng. Dưới đây là các tài nguyên phù hợp nhất sẽ cho phép bạn đạt được mục tiêu đó:
Các thư viện này cho phép tương tác với các trang web và thu thập thông tin từ Quora một cách dễ dàng.
Tiểu mục này giải quyết việc xây dựng một cạp, sẽ là một sự chú ý từng bước. Chuẩn bị không gian làm việc, cài đặt các thư viện cần thiết, tạo các quy trình gửi yêu cầu, để phân tích mã HTML và làm việc với thông tin được truy xuất.
Trước để cạo một người phải chuẩn bị môi trường làm việc:
python -m venv quora_scraper
source quora_scraper/bin/activate # Cho MacOS và Linux
quora_scraper\Scripts\activate # Cho Windows
Cài đặt các thư viện cần thiết mà bạn sẽ cần để quét web trong bước này:
pip install requests beautifulsoup4
Các giao diện này rất cần thiết để truyền các yêu cầu HTTP và sau đó phân tích dữ liệu HTML nhận được.
Để gọi một API nhất định và lấy lại trang HTML, chúng tôi sẽ sử dụng thư viện yêu cầu. Nó trực quan và hoàn thành công việc rất nhanh.
url = "https://www.quora.com/How-do-you-open-your-own-company"
response = requests.get(url)
Để sử dụng Python, để loại bỏ câu trả lời Quora, chúng ta sẽ cần một thư viện khác có tên là BeautifulSoup. Đây là cách bạn cài đặt nó:
soup = BeautifulSoup(response.text, "lxml")
question = soup.find(class_='q-box qu-userSelect--text')
Để trích xuất các câu hỏi và câu trả lời, bạn chỉ cần tìm thẻ HTML cần thiết có những chi tiết này. Hãy để chúng tôi đưa ra một trường hợp:
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 có xu hướng có nhiều câu trả lời và thường bạn cần cuộn trang rất nhiều để xem mọi thứ. Đối với điều này, chúng tôi sẽ sử dụng Selenium để tự động hóa trang web.
Dưới đây là cách bạn thiết lập Selenium và sử dụng proxy để ẩn danh tính của bạn tốt hơn:
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)
Sau khi bạn đã thiết lập mọi thứ trong Selenium, bạn chỉ cần thực hiện yêu cầu HTTP, sau đó tiếp tục cuộn xuống và nắm bắt các phần dữ liệu này:
url = "https://www.quora.com/How-do-you-open-your-own-company"
driver.execute_script('window.scrollBy(0, 1000)')
driver.get(url)
Khi bạn hoàn thành việc thu thập dữ liệu, bạn muốn giữ chúng theo cách giúp bạn dễ dàng phân tích sau này. Cách tốt nhất để làm điều này là giữ chúng ở định dạng JSON, vì nó được sử dụng rộng rãi nhất.
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)
Chúng tôi đã lưu dữ liệu vào JSON, nhưng trong một số trường hợp, có thể mong muốn thực hiện nó ở nhiều định dạng cùng một lúc. Vì vậy, ở đây bạn có một chức năng thực hiện chính xác điều đó:
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 có một số phòng thủ chống lại việc quét dữ liệu tự động, vì vậy cố gắng gửi nhiều yêu cầu đến Quora sẽ dẫn đến việc cắt đứt địa chỉ IP của bạn. Có những cách xung quanh điều này mặc dù.
Đây là sự bắt chước cơ bản của hành vi của con người thêm một số dạng độ trễ khi một yêu cầu được gửi.
import time
import random
def random_delay():
time.sleep(random.uniform(2, 5))
Thêm chức năng này sau mỗi truy vấn để tăng cơ hội không bị chặn.
Người ta có thể dễ dàng tránh chặn địa chỉ IP bằng cách sử dụng các máy chủ proxy. Hãy để xem cách nó có thể được sử dụng với các Requests và 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)
Vì vậy, sau khi bạn đã đề cập đến tất cả các bước, đã đến lúc kết hợp chúng và đưa chúng vào một kịch bản.
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')
# Câu trả lời
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")
Trong bài viết này, chúng tôi đã thảo luận về các phương pháp Quora Scraping với Python. Các tập lệnh như vậy được xây dựng cho phép người dùng ghi đè một số hạn chế cùng với phân trang và lưu dữ liệu ở các định dạng khác nhau như JSON và CSV.
Để thu thập dữ liệu quy mô lớn, phương pháp hiệu quả nhất sẽ là sử dụng API Quora. Mặt khác, nếu bạn chọn một cách chiến lược để sử dụng BeautifulSoup hoặc Selenium, thì việc sử dụng các máy chủ proxy là điều bắt buộc để thực hiện duy trì.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bình luận: 0