【问题标题】:Is it possible to use pandas to scrape html tables over multiple web pages?是否可以使用 pandas 在多个网页上抓取 html 表格?
【发布时间】:2017-06-22 15:05:10
【问题描述】:

我正在寻找方法来抓取某个网站上的所有表格。所有子页面中的表格格式完全相同。问题是,那些子页面的url是这样的:
url1 = 'http.../汤姆',
url2 = 'http.../玛丽',
url3 = 'http.../Jason',这样我就无法通过逐步更改 url 来设置循环。 pandas有什么办法可以解决这个问题吗?

【问题讨论】:

标签: python pandas beautifulsoup


【解决方案1】:

另一个想法是首先使用BeautifulSoup 库并从网页中获取所有table 元素,然后应用pd.read_html()

【讨论】:

    【解决方案2】:

    我会假设每个页面中的数据实际上都被格式化为 HTML table 元素,并且可以被 pandas 处理。 (当然,许多看起来像表格的页面显示不是 HTML table 元素;也可以检查一下。)

    那么处理一张表的代码可能如下所示:

    df = pd.read_html(url, header=0)[0]
    

    或者这个:

    df = pd.read_html(url)[0]
    

    我假设每个页面上只有一个感兴趣的表格。其实你可能还会发现read_html的其他参数可能需要改变。

    那么完整的代码应该是这样的:

    stub_url = 'http:// ...'
    dfs = []
    for ending in ['Tom', 'Mary', 'Jason']:
        one_df = pd.read_html(stub_url + ending, header=0)[0]
        dfs[ending] = one_df
    

    【讨论】:

    • 欣赏这一点。不幸的是,我遵循了您的代码,但它返回:列表索引必须是整数或切片,而不是 str。
    • 抱歉,现在就试试吧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    相关资源
    最近更新 更多