在这种情况下,提取文本的最佳方法是什么?

时间:2019-08-30 12:04:42

标签: python html text web-scraping beautifulsoup

我想找到并抓取在下方给出的所有文本。 现在,它返回文本以及 我想学习最快的方法,并用逗号格式化。

现在我可以通过命令分别抓取每个代码来对其进行编码。 但是我想抢走20多个物品,所以我想找到一种更快的方法。 并从中学习:D

我尝试通过在末尾添加get_text来切换find和find_all。 他们都给出了错误

        kenmerken = BeautifulSoup(browser.page_source, 'lxml')
        details = kenmerken.find_all ('div', {'class':'detail-tab-content kenmerken'})
        try:
            tr = details[0].find_all ('td', {'class': 'value'})
        except IndexError:
            size_space = 'Unknown'
        print(tr)

结果:

    [<td class="value">
            Herenhuis

    </td>, <td class="value">
            2008
    </td>, <td class="value">
            250 m²
    </td>, <td class="value">
            -    
    </td>, <td class="value">
            -
    </td>, <td class="value">
        -
    </td>, <td class="value">
        -
    </td>, <td class="value">
        -
    </td>, <td class="value">
            -
    </td>, <td class="value">
            -
    </td>, <td class="value">
        -
    </td>, <td class="value">
        5
    </td>, <td class="value">
        -
    </td>, <td class="value">
        -
    </td>, <td class="value">
        -
    </td>, <td class="value">
        -
    </td>, <td class="value">
        -
    </td>, <td class="value">
        Ja
    </td>, <td class="value">
        -
    </td>, <td class="value">
        -
    </td>, <td class="value">
        Ja
    </td>, <td class="value">
        3.627
    </td>, <td class="value">
        64
    </td>]
[<td class="value">

1 个答案:

答案 0 :(得分:1)

在您的尝试块tr中将包含td个元素的列表。如果您想使用td .text,则需要对列表进行迭代,例如使用列表理解。我已经将find_all的{​​{1}}交换了-都返回列表。

select

如果您还打算循环tds_values = [td.text for td in details[0].select('td.value')] ,请使用:

details

如果要用逗号分隔的字符串

for detail in details:
    tds_values = [td.text for td in detail.select('td.value')]