【问题标题】:Scraping html table into a data frame将html表抓取到数据框中
【发布时间】:2017-12-22 16:36:24
【问题描述】:

我已经构建了一个小爬虫,它通过 selenium 指向网站中的页面,然后应该将最终页面上存在的 html 表读取到数据框(或只是标题页)中。我被困在最后一点。我可以打开最后一页,但我被卡住了。

这是最终页面的 html 输出。表头在标签中,观察在标签中。我的表格代码可能很糟糕,但它是:

    df = pd.read_html(browser.get(table),header=0)
    print(df.head(n=6))

table 是 url 顺便说一句

我得到的错误是“TypeError:无法读取'NoneType'类型的对象”。 我相信我错过了一步,如果有人愿意为我指出正确的方向,将不胜感激。

【问题讨论】:

  • 您可以分享网址吗?
  • 不幸的是,没有。我必须通过输入用户名和密码才能进入该页面。 @BobHaffner
  • 好的。顺便说一句,我第一次没有注意到这一点,但是 read_html 没有返回数据框。它返回一个数据框列表。所以 df.head() 不起作用。不要认为这很重要,因为我猜在那之前会出错
  • 另外,如果 table 是 URL,你不应该只做pd.read_html(table, header=0)吗?

标签: python html python-3.x pandas beautifulsoup


【解决方案1】:

所以我想通了。我无法在 pd.read_html() 调用中嵌套 get() 调用。

    browser.get(table)
    source = browser.page_source
    content = pd.read_html(source)
    df = pd.DataFrame(content)

一旦我打开浏览器到我想要的表格页面,我所做的就是调用浏览器(实际上是 chromedriver)并获取 page_source。然后我能够读取 html 并将其转换为数据框。

【讨论】:

    猜你喜欢
    • 2018-04-27
    • 1970-01-01
    • 2020-10-07
    • 2020-09-16
    • 2019-05-16
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多