无法从标签 Beautifulsoup 中提取文本

cannot extract text from tag Beautifulsoup

以下命令从 HTML 页面正确提取 table:

[tr.findAll('td') for tr in table.findAll('tr',{'class': "js-file-line"})]


[[<td class="blob-num js-line-number" data-line-number="1" id="L1"></td>],
[<td class="blob-num js-line-number" data-line-number="2" id="L2"></td>,
<td>Arsenal</td>,
<td>38</td>,
<td>26</td>,
<td>9</td>,
<td>3</td>,
<td>79</td>,
<td>36</td>,
<td>87</td>],
[<td class="blob-num js-line-number" data-line-number="3" id="L3"></td>,
<td>Liverpool</td>,
etc.

我想修改提取每个td内容的命令。 但我无法从每一行中提取文本,因为 .text returns 出现错误: 我使用以下命令:

[tr.findAll('td').text[1:] for tr in table.findAll('tr',{'class': "js-file-line"})][1:]

其中 [1:] 用于跳过 headers(它们工作正常。经过测试)。问题是导致以下错误的 .text:

ResultSet object has no attribute 'text'. 
You're probably treating a list of items like a single item. 
Did you call find_all() when you meant to call find()?

我实际上使用的是 findAll,根据我的理解,它等同于 find_All。

抱歉,如果这是一个太基础的问题...

find_All 方法 returns 一个 ResultSet 对象,它基本上是 Tag 个对象的列表。
text 是一个 Tag 属性,因此您应该再使用一个列表理解。

txt = [
    [td.text for td in tr.find_all('td')][1:] 
    for tr in table.find_all('tr', {'class': "js-file-line"})
    ][1:]

或者,如果行仅包含 'td' 标记,您可以使用 strings 生成器。

txt = [list(tr.strings)[1:] for tr in table.find_all('tr', {'class': "js-file-line"})][1:]