Python BeautifulSoup для таблиц JavaScript с несколькими страницами - PullRequest
1 голос
/ 17 января 2012

Раньше у меня был скрипт на 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 ]

4 голосов
/ 17 января 2012

Лучше всего запустить браузер без головы, например, phantomjs , который понимает все тонкости JavaScript, DOM и т. Д., Но вам придется писать свой код на Javascript, преимущество в том, что вы можете делать все, что захотите парсинг html с использованием BeautifulSoup - это круто, но в долгосрочной перспективе это головная боль. Так зачем ломать голову, когда вы можете получить доступ к DOM

0 голосов
/ 17 января 2012

Механизация не обрабатывает JavaScript.

Вы могли наблюдать, какие запросы делаются, когда вы нажимаете кнопку (используя Firebug в Firefox или Инструменты разработчика в Chrome). Затем попытайтесь выполнить обратный инжиниринг javascript, работающего за страницей, и попытайтесь сделать то же самое, используя ваш код на python, для этого взгляните на Spidermonkey или

Попробуйте использовать Selenium.

Selenium - это функциональная среда тестирования, которая автоматизирует браузер для выполнения определенных операций, которые, в свою очередь, проверяют основные действия вашего кода

...