Используйте более быстрые селекторы атрибутов css, и вы можете передавать через запятую список желаемых значений местоположения для получения нескольких
from bs4 import BeautifulSoup
html = '''
<td class="generic_td_class" data-test="specific-location">
<span class="generic-span-class">Text I want to extract</span>
</td>
<td class="generic_td_class" data-test="specific-location1">
<span class="generic-span-class">Text I want to extract 2</span>
</td>
'''
soup = BeautifulSoup(html, 'lxml')
data = [item.text.strip() for item in soup.select('[data-test="specific-location"],[data-test="specific-location1"]')]
print(data)
Добавить td
впереди, если эти атрибуты встречаются в другом месте
data = [item.text.strip() for item in soup.select('td[data-test="specific-location"],td[data-test="specific-location1"]')]
Вы могли бы дополнительно добавить селектор типа диапазона в конец с комбинатором-потомком, чтобы указать дочерние промежутки td, но здесь это кажется излишним.
data = [item.text.strip() for item in soup.select('td[data-test="specific-location"] span,td[data-test="specific-location1"] span')]
Благодаря @facelessuser вы также можете использовать более тонкий
td:is([data-test="specific-location"], [data-test="specific-location1"]) span