首页 > 解决方案 > 无论如何我可以获得img标签的位置吗?在python中使用beautifulsoup查找功能

问题描述

我想知道 .png 图像文件位于 td 标签的哪个位置。

例如,在这种情况下(第 5 行)有什么方法可以获取图像标签的位置?在python中使用beautifulsoup找函数还是scrapy?

</tr>
            <tr id="table_1_row_3">
                <td style="">A List</td>
                                                    <td style=""></td>
                                                    <td style="">Itemnumber</td>
                                                    <td style="">price</td>
                                                    <td style=""></td>
                                                    <td style=""><img src='https://www.example.com/.png' /></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style="">min price<BR>a List<BR></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    <td style=""></td>
                                                    

标签: pythonweb-scrapingbeautifulsoupscrapyscreen-scraping

解决方案


您可以为任务使用内置函数enumerate()

from bs4 import BeautifulSoup


txt = '''
    <tr id="table_1_row_3">
        <td style="">A List</td>
        <td style=""></td>
        <td style="">Itemnumber</td>
        <td style="">price</td>
        <td style=""></td>
        <td style=""><img src='https://www.example.com/.png' /></td>
        <td style=""></td>
        <td style=""></td>
        <td style=""></td>
        <td style=""></td>
        <td style=""></td>
        <td style=""></td>
        <td style=""></td>
        <td style=""></td>
        <td style="">min price<BR>a List<BR></td>
        <td style=""></td>
        <td style=""></td>
        <td style=""></td>
        <td style=""></td>
        <td style=""></td>
        <td style=""></td>
        <td style=""></td>
        <td style=""></td>
    </tr>'''


soup = BeautifulSoup(txt, 'html.parser')

# find all positions of <img> inside <tr>:
idx = [i for i, td in enumerate(soup.select('tr > td')) if td.img]

# print indexes, where there is <img> inside <td>:
print(idx)

印刷:

[5]

推荐阅读