刮没有显示隐藏的可见性python

时间:2018-06-03 16:17:49

标签: python web-scraping beautifulsoup visibility hidden

我正在尝试使用python中的Beautifulsoup从网站上抓取数据,当我解析页面时,我想要抓取的信息没有显示出来,而是我看到了:

<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 :(得分:0)

问题是在加载页面后,您想要的内容是通过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())

那应该可以解决你的问题。

请注意,您必须安装一些内容,包括selenium pip install selenium和PhantomJS webdriver(可从http://phantomjs.org/download.html下载) - 您可能需要将其添加到系统路径中,具体取决于方式你安装了。我使用了这个SO answer。)