【问题标题】:Phyton, getting ValueError: No tables found matching patternPython,得到ValueError:没有找到匹配模式的表
【发布时间】:2022-08-15 16:14:40
【问题描述】:

这是我的代码

import pandas as pd
f = open(\"G:\\WNBA\\wnba_id.txt\", \"r\")
print(f)
for id in f:
    matchid.append(id)
  
_url_template = \"https://www.basketball-reference.com/wnba/boxscores/{}\"

for x in matchid:
    formatted_url = _url_template.format(x)
    print(formatted_url)

    df=pd.read_html(formatted_url, match=\'(Q1)\')
    for i in df:
        
        new=i.assign(match_id=x)
        new.to_csv(\"G:\\WNBA\\wnba_Q1.csv\", mode=\'a\', header=False)

我收到此错误:

它工作正常,直到 2 周前......现在问题是脚本工作,我不知道为什么我会收到这个错误,因为表 Q1 存在并且它正确导入到我的 csv 文件中;唯一的问题是,因为我想在同一个文件中添加一些其他的抓取行,得到它被停止的错误,我必须单独启动每个其他脚本(指定它们工作但它们都给出相同的错误正如我发布的那样)。有什么线索可以摆脱这个错误吗?

谢谢!

    标签: python pandas web-scraping


    【解决方案1】:

    这可能是由于用于匹配的语法吗?做

    df=pd.read_html(formatted_url, match='Q1')
    

    工作?因为不需要括号来匹配 read_html() 的内容。 panda Docs

    【讨论】:

    • 否,括号用于正确匹配选项卡,不打算作为命令的一部分
    【解决方案2】:

    你的问题是:

    f = open("G:\WNBA\wnba_id.txt", "r")
    print(f)
    for id in f:
        matchid.append(id)
    

    在您的 txt 文件中的某个位置,它附加了一个空字符串。

    我怎么知道?

    你在这里做了一件好事,包括print(formatted_url)。我们可以准确地看到它在您的代码中的哪一点中断。查看您的控制台输出,我们看到:

    https://www.basketball-reference.com/wnba/boxscores/202208120ATL
    https://www.basketball-reference.com/wnba/boxscores/202208120MIN
    https://www.basketball-reference.com/wnba/boxscores/202208120PHO
    

    接下来是:

    https://www.basketball-reference.com/wnba/boxscores/
    

    所以看看那个文件,看看'202208120PHO'之后的内容

    您也可以在代码中解决此问题,方法是不将空字符串附加到 matchid 列表中。

    f = open("G:\WNBA\wnba_id.txt", "r")
    print(f)
    for id in f:
        if id.strip() != '':
            matchid.append(id)
    

    【讨论】:

      猜你喜欢
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 2017-07-19
      • 2020-09-29
      • 2016-12-13
      相关资源
      最近更新 更多