首页 文章

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

提问于
浏览
0

我正在尝试使用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

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

相关问题