对于抓取动态网站,我建议您阅读 selenium,以模拟浏览器交互并能够获取动态更改的 DOM 元素。
https://pypi.python.org/pypi/selenium
他们有一些起始示例,并且有一个名为 SeleniumIDE 的 Firefox 插件,它允许您生成测试,您可以从中开始学习如何做您想做的事情。
https://addons.mozilla.org/pt-pt/firefox/addon/selenium-ide/
SeleniumIDE 不仅允许您从中创建 python 单元测试,还允许您创建 JUnit 和其他语言。
这是来自https://pypi.python.org/pypi/selenium的示例
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
browser.get('http://www.yahoo.com')
assert 'Yahoo!' in browser.title
elem = browser.find_element_by_name('p') # Find the search box
elem.send_keys('seleniumhq' + Keys.RETURN)
browser.quit()
这允许您在 yahoo 上进行搜索并像在浏览器中一样发送查询 seleniumhq。
如果你想检索一个值,而不仅仅是使用 find_element_by_id 、 name 等并获取其文本、html 等。
另外,如果要抓取大量的 DOM 页面,Firefox webdriver 可能不是最好的解决方案。在这种情况下,最好的选择是完全无头,像 phantomjs 这样的 webdriver 是最好的选择。