Выскабливание без отображения скрытой видимости питона - PullRequest
0 голосов
/ 03 июня 2018

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

<span class="frwp-debug hidden" style="display: none!important; visibility: hidden!important;">  

Разобранный html отличается от того, что я вижу, когда проверяю страницу.

Это мой код:

site = "http://www.fifa.com/worldcup/stories/y=2017/m=11/news=australia-2921204.html#World_Cup_History" 
hdr = {'User-Agent': 'Mozilla/5.0'} 
page = requests.get(site) 
soup = BeautifulSoup(page.text, "html.parser") 
print(soup.prettify())

Как очистить скрытую информацию?

1 Ответ

0 голосов
/ 03 июня 2018

Проблема в том, что нужный вам контент создается javascript после загрузки страницы.BeautifulSoup не может проанализировать этот контент через библиотеку запросов.К счастью, вы можете использовать библиотеку Selenium вместе с PhantomJS для получения полностью визуализированных данных, а затем использовать BeautifulSoup для анализа полученного (готового) html.

Вот как это будет работать в вашем случае:

from bs4 import BeautifulSoup
from selenium import webdriver

site = "http://www.fifa.com/worldcup/stories/y=2017/m=11/news=australia-2921204.html#World_Cup_History"
browser = webdriver.PhantomJS()
browser.get(site)
html = browser.page_source
soup = BeautifulSoup(html, 'html.parser')
print(soup.prettify())

Это должно решить вашу проблему.

Обратите внимание, что вам придется установить несколько вещей, в том числе селен pip install selenium и веб-драйвер PhantomJS (можно загрузить с http://phantomjs.org/download.html - возможно, вам придется добавить его в системный путь в зависимости ото том, как вы устанавливаете. Я использовал этот SO ответ для этого.)

...