Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
156 views
in Technique[技术] by (71.8m points)

python - Unable to extract image src with bs4

So I'm trying to scrape this website product image src's using BeautifulSoup. The problem is that when I use the image class to select the src I get the error: TypeError: list indices must be integers or slices, not str.

This is what I have:

images = soup.find_all('img', {'class': 'css-1rovmyu e65zztl0'})['src'] # gives error ^

Also when I do:

images = soup.find_all('img')

for image in images: 
   print(image['src'])

It returns all the image src's and works fine. I was reading another problem similar to fine and it said the fact that the image is nested may be the problem but it didnt work. This is the structure:

<picture class="css-yq9732">
    <img class="css-1rovmyu e65zztl0" src="image src">
</picture>
question from:https://stackoverflow.com/questions/65894638/unable-to-extract-image-src-with-bs4

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

images is a list, you have to access the index of the list and extract the value. For example:

images = soup.find_all('img', {'class': 'css-1rovmyu e65zztl0'})

print(images[0]["src"])

Or to only get the first tag, use find() instead of find_all()


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...