使用 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。