我目前遇到了一个问题,尝试将表格解析为数组。
我有一个简单的表格(在这里),需要使用BS4进行解析,并将单元格内容放入一个数组中。使事情变得困难的是,单元格不包含文本,而是包含具有以下标题的图像: “Confirm”或“Site”-这仅是用户权限的问题。 [我跳过了包含复选框的第一行,这些可以轻松提取]
如果您查看上面的示例,我只需要以这样的方式解析它,即生成的数组变为:
Array1[0] = User1,Confirm,Confirm,Site,Confirm
Array1[1] = User2,Confirm,Confirm,Confirm,Confirm
Array1[2] = User3,Confirm,Confirm,Confirm,Confirm
Array1[3] = User4,Confirm,Site,Site,Confirm
然后我可以随意处理它。
另一个复杂因素是有时行数会变化,因此脚本应该能够适应这种情况并从表格递归地创建数组。
目前StackOverflow是我的唯一希望..我已经花了过去10个小时自己做这个,几乎没有成功,坦白说我已经失去了希望。我最接近的成功是提取包含的标签,但由于某些奇怪的原因无法进一步解析,也许是bs4的嵌套限制?请问是否有人可以看一下,并找到一种方法来实现这一点?或者至少解释一下如何做到这一点?
var explanations: rightml - 表格的soup。
allusers = []
rows = rightml.findAll('tr')
for tr in rows:
cols = tr.findAll('td')
for td in cols:
if (td.find(title="Group")) or (td.find(title="User")):
text = ''.join(td.text.strip())
allusers.append(text)
print allusers
gifrights = []
rows7 = rightml.findAll('td')
#print rows7
for tr7 in rows:
cols7 = tr7.findAll('img')
for td7 in cols7:
if (td7.find(title="Confirm")) or (td7.find(title="Site")):
text = ''.join(td7.text.strip())
text2 = text.split(' ')
print text2
gifrights.append(text2)
我可能在这段代码上完全错了.. 但是我已经尽力了。