我正在尝试使用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 回答
问题是在加载页面后,您想要的内容是通过javascript创建的 . BeautifulSoup无法通过请求库解析该内容 . 幸运的是,您可以将Selenium库与PhantomJS一起使用来获取完全呈现的数据,然后使用BeautifulSoup来解析生成的(已完成的)html .
以下是您的情况:
那应该可以解决你的问题 .
请注意,您必须安装一些东西,包括selenium
pip install selenium
和PhantomJS webdriver(可从http://phantomjs.org/download.html下载 - 您可能需要将其添加到您的系统路径,具体取决于您的安装方式 . 我使用此SO answer . )