基本上,我试图从下面的给定类标题中提取表中的文本。我已经编写了剩下的代码来从每一行中提取文本,所以我不需要任何帮助。我似乎无法弄清楚为什么我收到这个错误:
$ awk 'NR==FNR{f[$0];next}(!($0 in f))' file2 <(find . -type f -name '*.jpg' -printf '%f\n')
13.jpg
$ rm -iv "$(awk 'NR==FNR{f[$0];next}(!($0 in f))' file2 <(find . -type f -name '*.jpg' -printf '%f\n'))"
rm: remove regular empty file '13.jpg'? y
removed '13.jpg'
代码是:
"ResultSet object has no attribute '%s'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?" % key
AttributeError: ResultSet object has no attribute 'find'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?
答案 0 :(得分:1)
问题是您写了一个 find_all
来查找区域。因此,它会生成一组结果,而不仅仅是一个结果(当然,该集合可以包含一个,零个或多个结果)。我认为有两种选择:
如果您确定只有一个带有该ID的div(通常只应该有一个,则可以使用find
:
region = soup.find('div', {'id': 'inning-all'})
table = region.find('table', {'class': 'sidearm-table play-by-play'})
如果有多个:迭代已建立的区域,并单独处理它们:
如果您确定只有一个带有该ID的div(通常只应该有一个,则可以使用find
:
regions = soup.find_all('div', {'id': 'inning-all'})
for region in regions:
table = region.find('table', {'class': 'sidearm-table play-by-play'})
答案 1 :(得分:1)
作为替代方案,您可以使用单个CSS selector来解决问题:
table = soup.select_one('#inning-all table.sidearm-table.play-by-play')
其中CSS选择器会将table
元素与sidearm-table
和play-by-play
类匹配,其中inning-all
属性值为select()
。
使用select_one()
代替AppModule
来查找与选择器匹配的所有元素。