具有多个页面的javascript表上的Python BeautifulSoup

时间:2012-01-17 17:23:55

标签: javascript python screen-scraping beautifulsoup

我曾经有一个python脚本,使用Mechanize和BeautifulSoup正确地从下表中提取数据。但是,这个网站最近将表格的编码更改为javascript,我在使用它时遇到了麻烦,因为桌子上有多个页面。

http://www.fangraphs.com/leaders.aspx?pos=all&stats=bat&lg=all&qual=0&type=8&season=2011&month=0&season1=&ind=0&team=25&players=0

例如,在上面的链接中,我如何从表格的第1页和第2页获取数据? FWIW,URL不会改变。

2 个答案:

答案 0 :(得分:4)

你最好的选择是运行一个无头浏览器,例如phantomjs,它理解JavaScript,DOM等所有复杂功能,但你必须用Javascript编写代码,这样做的好处就是你可以做任何你想做的事情,解析使用BeautifulSoup的html很酷但是长期头疼。那么为什么当你可以访问DOM时刮掉

答案 1 :(得分:0)

Mechanize不会处理javascript。

您可以观察单击按钮时所做的请求(使用Firefox中的Firebug或Chrome中的开发人员工具)。比试图对页面后面运行的javascript进行反向工程,并尝试使用你的python代码做类似的事情,为此看看Spidermonkey

尝试使用Selenium

  

Selenium是一个功能测试框架,可以自动执行浏览器以执行某些操作,从而测试代码的基本操作