代码之家  ›  专栏  ›  技术社区  ›  Mauro Gentile

无法从标记Beautifulsoup中提取文本

  •  1
  • Mauro Gentile  · 技术社区  · 7 年前

    [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.
    

    但是我无法从每一行中提取文本,因为。text返回错误: 我使用以下命令:

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

    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()?
    

    对不起,如果这是一个太基本的问题。。。

    1 回复  |  直到 7 年前
        1
  •  1
  •   t.m.adam    7 年前

    这个 find_All 方法返回一个 ResultSet Tag 物体。
    text 标签 属性,所以您应该再使用一个列表理解。

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

    strings 发电机

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