【问题标题】:How can I ignore a 'No tables found' error from pd.read_html?如何忽略 pd.read_html 中的“未找到表”错误?
【发布时间】:2021-12-18 01:29:42
【问题描述】:

问题 我正在从 API 请求调用创建大量 URL,然后在循环中使用这些 URL 来抓取 FT 网站上的一些信息。问题是这些 URL 中的一小部分不包含 HTML 表,因此在调用 df_list = pd.read_html(html) 后我收到了 No tables found 错误。不幸的是,在收到此错误消息后,循环停止了。

我想要什么 如果没有找到表并继续循环,我希望能够忽略此错误消息。有没有办法做到这一点?我是 python 和 pandas 的新手,非常感谢您的帮助!

我的代码

import requests
import pandas as pd
import json

# Get the information from SHaresight API
r = requests.get('https://api.sharesight.com/api/v3/custom_investments.json', headers=head)
# print(r)
j = r.json()

urls = []
# Generate urls from above API request
for p in j['custom_investments']:
    # print(p)
    url = 'https://markets.ft.com/data/funds/tearsheet/historical?s='+p['code']+':'+p['currency_code']
    urls.append(url)

dfs = []
# Create scraping loop for all urls
for url in urls:
    html = requests.get(url).content
    df_list = pd.read_html(html)
    df.insert(2, "id", ISIN)
    df=df.head(1)
    print (df)
    dfs.append(df)

【问题讨论】:

标签: python html pandas web-scraping


【解决方案1】:

添加 tryexcept 块:

for url in urls:
    try:
        html = requests.get(url).content
        df_list = pd.read_html(html)
        df.insert(2, "id", ISIN)
        df=df.head(1)
        print (df)
        dfs.append(df)
    except Exception as e:
       print("skipping url do to an exception",e)

https://docs.python.org/3.10/library/exceptions.html

【讨论】:

    猜你喜欢
    • 2020-07-18
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 2019-06-05
    相关资源
    最近更新 更多