Zalecam użycie metody select, bo w pewnym sensie metoda ta działa podobnie jak querySelectorAll w js-ie, więc możemy użyć selektorów css-owych.
img[class*="wp-post-image"]:not([class*="--secondary"])
Przykład js [ kod on-line ]
<ul style="list-style: none">
<li>
<img src="https://picsum.photos/140/160?random=1" class="wp-post-image">
<img src="https://picsum.photos/140/160?random=2" class="wp-post-image">
<img src="https://picsum.photos/140/160?random=3" class="wp-post-image wp-post-image--secondary">
</li>
<li>
<img src="https://picsum.photos/140/160?random=4" class="wp-post-image wp-post-image--secondary">
<img src="https://picsum.photos/140/160?random=5" class="wp-post-image wp-post-image--secondary">
<img src="https://picsum.photos/140/160?random=6" class="wp-post-image">
</li>
<li></li>
</ul>
<script>
/*
img[class*="wp-post-image"]:not([class*="--secondary"])
*/
const images = [...document.querySelectorAll('img[class*="wp-post-image"]:not([class*="--secondary"])')];
document.querySelector('ul li:last-child').innerHTML = images.map(img => img.src).join('<br>');
</script>
więc w python-ie powinno to zadziałać [ kod on-line ]
images = soup.select('img[class*="wp-post-image"]:not([class*="--secondary"]')
for img in images:
print(img)
print(img['src'])
print('-' * 70)
[ Beautifulsoup : Difference between .find() and .select() ]
[ CSS Selector Reference ]