1

我正在使用 python 的 bs4 编写一个网络爬虫。我试图找到具有特定属性“data-a-dynamic-image”的第一张图像。到目前为止,我有下面的代码,它可以工作。但是,我宁愿只使用find()notfind_all。这是因为我只关心页面上具有该属性的第一项。我不想使用 find_all 并浪费时间筛选整个网页。

def siftImage(soup):
    try:
        for line in soup.find_all('img'):
            if line is not None:
                if line.has_attr('data-a-dynamic-image'):
                    return line['src']

    except:
        return 'No Image '

我制作的第二个函数只会返回我想要的结果,如果页面上的第一张图像是我想要的图像,否则它不会返回任何内容。但是,它具有我正在寻找的运行时。

def siftImageTwo(soup):
    try:
        line = soup.find('img'):
        if line.has_attr('data-a-dynamic-image'):
            return line['src']

    except:
        return 'No Image '

我正在寻找某种方法来使顶部脚本的功能与底部脚本的时间同步。

4

1 回答 1

3

根据官方文档,有一种方法可以通过自定义 data-* 属性进行搜索。
你应该试试这个:

line = soup.find('img', attrs={'data-a-dynamic-image': True})
于 2015-07-23T17:51:13.407 回答