我正在使用python的bs4编写一个webscraper。
我正在尝试找到具有某个属性'data-a-dynamic-image'的第一张图片。到目前为止,我有下面的代码,它的工作原理。但是,我希望仅使用find()
而不是find_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 '
我正在寻找一些方法来获得顶部脚本的功能以及底部脚本的时间。
答案 0 :(得分:3)
根据official documentation,有一种方法可以按自定义数据 - *属性进行搜索 你应该试试这个:
line = soup.find('img', attrs={'data-a-dynamic-image': True})