Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';结果集';对象没有属性';findAll';函数中的错误消息_Python_Html_Beautifulsoup_Findall - Fatal编程技术网

Python ';结果集';对象没有属性';findAll';函数中的错误消息

Python ';结果集';对象没有属性';findAll';函数中的错误消息,python,html,beautifulsoup,findall,Python,Html,Beautifulsoup,Findall,我正在学习Pyhton和beautiful soup,我正在使用包含不同年份流行婴儿名字的html文件集(例如baby1990.html等)在Regex上进行谷歌练习。如果您感兴趣,可以在此处找到此数据集: 每个html文件都包含一个表,其中包含婴儿姓名数据,如下所示: 我编写了一个函数,从html文件中提取婴儿的名字,并将它们存储到dataframes、字典中的dataframes和聚合在单个dataframe中的所有dataframes 每个html文件中有两个表。包含婴儿数据的表具有以下

我正在学习Pyhton和beautiful soup,我正在使用包含不同年份流行婴儿名字的html文件集(例如baby1990.html等)在Regex上进行谷歌练习。如果您感兴趣,可以在此处找到此数据集:

每个html文件都包含一个表,其中包含婴儿姓名数据,如下所示:

我编写了一个函数,从html文件中提取婴儿的名字,并将它们存储到dataframes、字典中的dataframes和聚合在单个dataframe中的所有dataframes

每个html文件中有两个表。包含婴儿数据的表具有以下html代码:

<table width="100%" border="0" cellspacing="0" cellpadding="4" summary="formatting">
<table width="100%" border="0" cellspacing="0" cellpadding="4">
使用给定路径(存储html文件的目录路径)运行函数时,会收到以下错误消息:

result = babynames(path)
输出:

---------------------------------------------------------------------------
文件:C:/Users/ALEX/MyFiles/JUPYTER笔记本电脑/google python练习/babynames/baby1990.html
单元格[0]:单元格[0]:NaN
单元格[1]:单元格[1]:NaN
单元格[2]:单元格[2]:NaN
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1结果=babynames(路径)
在babynames(路径)
54
55                 # 7. 将列表附加到空数据帧df
--->56 df[“等级”]=等级
57 df[“婴儿1”]=婴儿1
58 df[“Baby_2”]=Baby_2
C:\users\alex\Anaconda2\lib\site packages\pandas\core\frame.pyc in\uuuuuuu setitem\uuuuuuuu(self、key、value)
2355其他:
2356#集合列
->2357自我设置项目(键、值)
2358
2359 def_setitem_切片(自身、键、值):
C:\users\alex\Anaconda2\lib\site packages\pandas\core\frame.pyc in\u set\u项(self、key、value)
2421
2422自我确保有效索引(值)
->2423 value=self.\u sanitize\u列(键,值)
2424 NDFrame.\u设置\u项(自身、键、值)
2425
C:\users\alex\Anaconda2\lib\site packages\pandas\core\frame.pyc在_sanitize_列中(self、key、value)
2576
2577#把我变成一个废物
->2578值=_清理_索引(值,self.index,copy=False)
2579如果不存在(值,(np.ndarray,索引)):
2580如果isinstance(值,列表)和len(值)>0:
C:\users\alex\Anaconda2\lib\site packages\pandas\core\series.pyc in_sanitize_index(数据、索引、副本)
2768
2769如果len(数据)!=len(索引):
->2770 raise VALUERROR('值的长度与“”索引的长度不匹配')
2771
2772如果存在(数据、周期索引):
ValueError:值的长度与索引的长度不匹配
单元格[0]、单元格和单元格[2]应具有值

正如我所提到的,前面还有一个由以下html代码标识的表:

<table width="100%" border="0" cellspacing="0" cellpadding="4" summary="formatting">
<table width="100%" border="0" cellspacing="0" cellpadding="4">

我运行了一个没有指定表的函数版本——我没有注意到html文件中有两个表。在那个版本中,我没有得到这种类型的错误。第6行有错误消息,try语句的标识不正确——我不理解——第9行有错误消息,我试图重新排列数据帧的列——我也不理解


您的建议将不胜感激。

right\u table
是一个
ResultSet
实例(基本上是表示元素的
Tag
实例列表),它没有
findAll()
find\u all()
方法

相反,如果您有多个元素,您可以在
右\u表中的元素上循环:

right_table = soup.find_all("table", summary_ = "formatting")

for table in right_table:
    for row in table.findAll("tr"):
        # ...
或者,如果只有一个,请使用
find()

right_table = soup.find("table", summary_ = "formatting")
或者,使用单个CSS选择器:


请尝试右键单击表格。查找所有(“tr”)
。将
findAll()
替换为
find\u all()
for row in soup.select("table[summary=formatting] tr"):
    # ...