我正在尝试将HTML表格转换为2d python列表(列表列表)。三个“列”只是相应HTML表格单元格的文本,并且工作正常。但是,一个“列”应该只是相应HTML单元格中链接的ID,但我无法访问该属性。
当我试图获取链接的ID时出现问题。如果我打印该元素的.contents,它所说的只是“动作”。当我尝试访问该元素的['id']索引时,它会给我一个错误。怎么了?
bs = BeautifulSoup(page)
table = bs.find("table", id="ctl00_ContentPlaceHolder1_Name_Reports1_TabContainer1_TabPanel1_dgReports")
def notHeader(css_class):
return css_class is not "gridviewheader"
rows = table.find_all("tr", class_=notHeader)
result = []
for x in range(0, len(rows)):
allcols = rows[x].findAll('td')
tempRow = []
print(allcols[0].contents[0]) #only prints Action
tempRow.append(allcols[0].contents[0]['id']) #TypeError: string indices must be integers
tempRow.append(allcols[2].string)
tempRow.append(allcols[3].string)
tempRow.append(allcols[5].string)
amended = -1
for existing in result:
if tempRow[1] == existing[1] and tempRow[2] == existing[2]:
amended = 1
if amended == -1:
result.append(tempRow)
print (ids)
答案 0 :(得分:0)
想出来:它与使用find_all()中的函数来消除标题行有关。我用
替换了find_all行rows = table.find_all("tr")[1:]
因为标题始终是第一行,所以它有效。