我目前在尝试将表解析为数组时遇到了一些问题。
我有一个简单的表(HERE),我需要用 BS4 对其进行解析并将单元格内容放入一个数组中。让事情变得困难的是,单元格不包含文本,而是包含具有以下标题的图像:“确认”或“站点” - 这只是用户权限的东西。 [我正在跳过包含复选框的第一行,我可以毫无问题地提取这些复选框]
如果您查看上面的小提琴,我需要做的就是以这样的方式解析它,使结果数组变为:
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 解释: rightml - 餐桌上的汤。
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)
我可以用这个代码离开..但我给了它 ol' 大学尝试。