网页爬虫无法获取图片源:BeautifulSoup调用src报KeyError问题
解决无法获取图片src属性的问题
问题根源:你选中的.image元素并不是<img>标签,而是包裹图片的容器(比如<div>或<a>标签),这类容器标签本身没有src属性,src属性实际在容器内部的<img>子标签上。
修正方案
方案一:直接定位内部的img标签
使用CSS选择器直接选中.image类下的<img>元素,一步获取src:
import requests import bs4 res2 = requests.get("https://en.wikipedia.org/wiki/Deep_Blue_(chess_computer)") soup = bs4.BeautifulSoup(res2.text,'lxml') # 直接选中.image类下的img标签 img_tag = soup.select(".image img")[0] # 获取src属性 img_src = img_tag['src'] # 维基百科图片是相对路径,拼接为完整URL full_img_url = f"https://en.wikipedia.org{img_src}" print(full_img_url)
方案二:先获取容器再查找子img标签
如果需要先处理容器元素,再从中提取img标签:
import requests import bs4 res2 = requests.get("https://en.wikipedia.org/wiki/Deep_Blue_(chess_computer)") soup = bs4.BeautifulSoup(res2.text,'lxml') # 获取.image容器 container = soup.select(".image")[0] # 在容器内查找img标签 img_tag = container.find('img') # 获取src属性 img_src = img_tag['src'] full_img_url = f"https://en.wikipedia.org{img_src}" print(full_img_url)
补充提示
- 调用
tag['src']前可以先用img_tag.has_attr('src')判断属性是否存在,避免意外报错 - 维基百科的图片src多为相对路径,必须拼接域名才能得到可直接访问的完整URL
内容的提问来源于stack exchange,提问作者Chermaine_lipoto
相关产品推荐
相关产品推荐

