使用 Selenium WebDriver 進行刮擦

有些網站不喜歡被抓。在這些情況下,你可能需要模擬使用瀏覽器的真實使用者。Selenium 啟動並控制 Web 瀏覽器。

from selenium import webdriver

browser = webdriver.Firefox()  # launch firefox browser

browser.get('http://stackoverflow.com/questions?sort=votes')  # load url

title = browser.find_element_by_css_selector('h1').text  # page title (first h1 element)

questions = browser.find_elements_by_css_selector('.question-summary')  # question list

for question in questions:  # iterate over questions
    question_title = question.find_element_by_css_selector('.summary h3 a').text
    question_excerpt = question.find_element_by_css_selector('.summary .excerpt').text
    question_vote = question.find_element_by_css_selector('.stats .vote .votes .vote-count-post').text
    
    print "%s\n%s\n%s votes\n-----------\n" % (question_title, question_excerpt, question_vote) 

硒可以做更多。它可以修改瀏覽器的 cookie,填寫表格,模擬滑鼠點選,擷取網頁截圖,以及執行自定義 JavaScript。