2016-11-22 3 views
4

В настоящее время я использую beautifulsoup для очистки сайтов, я думаю, что у меня есть основы, хотя у меня нет теоретических знаний о веб-страницах, я сделаю все возможное, чтобы сформулировать свой вопрос.Можно ли очистить «динамическую веб-страницу» с помощью beautifulsoup?

То, что я имею в виду с динамической веб-страницей, является следующим: сайт, чей HTML изменяется в зависимости от действия пользователя, в моем случае его складные таблицы.

Я хочу получить данные внутри некоторого тега «div», но при загрузке страницы данные кажутся недоступными в коде html, когда вы нажимаете на таблицу, которую он расширяет, и «класс» этого «div «изменяется от чего-то вроде« что-то blabla collapsible »на« что-то blabla clapsible active », и это я могу скрестить своими знаниями.

Могу ли я получить эти данные с помощью beautifulsoup? В случае, если я не могу, я подумал о том, чтобы использовать что-то вроде селена, чтобы щелкнуть по всем таблицам, а затем загрузить html, который я мог бы очистить, есть ли более простой способ?

спасибо.

+2

Selenium, вероятно, лучший выбор, а затем используйте 'driver.page_source' для захвата HTML. Если вам нужны более конкретные советы, было бы полезно увидеть какой-то код. –

+0

Проблема заключается в том, что страница использует JavaScript/AJAX для загрузки данных. Если вы знаете, какой url используется 'JavaScript/AJAX' для получения данных, вы можете использовать' urllib/requests' для получения этих данных. Вы можете использовать 'DevTools' в' Chrome/Firefox', чтобы вручную найти этот URL-адрес, а затем вы можете использовать его в коде Python. Но вы должны знать HTTP, DevTools, иногда JavaScript, XPath и т. Д. BTW: Отключите JavaScript в браузере и загрузите страницу, и вы увидите, что видят urllib/запросы (и BS). – furas

+0

Возможный дубликат [Очистить серию столов с помощью BeautifulSoup] (http://stackoverflow.com/questions/13345085/scrape-a-series-of-tables-with-beautifulsoup) – aneroid

ответ

0

Это зависит. Если данные уже загружены при загрузке страницы, тогда данные доступны для очистки, это просто в другом элементе или скрыто. Если событие click инициирует загрузку данных в некотором роде, то нет, вам понадобится Selenium или другой браузер без headless, чтобы автоматизировать это.

Прекрасный суп только HTML-парсер, поэтому любые данные, которые вы получаете, запрашивая страницу, являются единственными данными, доступ к которым может получить прекрасный суп.

Смежные вопросы