我正在使用 python 的 bs4 编写一个网络爬虫。
我试图找到具有特定属性“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 '
我正在寻找某种方法来实现顶部脚本的功能和底部脚本的计时。
最佳答案
根据official documentation有一种方法可以通过自定义 data-* 属性进行搜索。
你应该尝试这个:
line = soup.find('img', attrs={'data-a-dynamic-image': True})
关于python - 如何使用 Beautiful Soup 的 find() 代替 find_all() 以获得更好的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31593645/