我正在尝试使用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())
如何抓取隐藏的信息?
答案 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。)