如何从指定class的元素中爬取全部图片链接?
如何仅获取class为"a"的元素中的图片链接
你可以通过两种方式限定图片的抓取范围,只获取class为a的div元素内的图片:
方法一:先定位目标父元素,再遍历内部图片
先找到所有class为a的div,再在每个div内部查找img标签,这样就能排除其他class下的图片:
images = [] # 筛选所有class为"a"的div for div in soup.findAll('div', class_='a'): # 在当前div内查找所有img标签 for img in div.findAll('img'): # 这里可以根据需求选择src或data-src属性 images.append(img.get('src')) # 如果需要真实大图(示例中data-src是原图链接),替换为: # images.append(img.get('data-src')) print(images)
方法二:使用CSS选择器直接定位(更简洁)
利用BeautifulSoup支持的CSS选择器,直接定位class为a的div下的所有img标签:
# 选择class为a的div下的所有img,提取src属性 images = [img.get('src') for img in soup.select('div.a img')] # 若要提取data-src属性,改为: # images = [img.get('data-src') for img in soup.select('div.a img')] print(images)
补充说明
你原来的代码soup.findAll('img')会匹配页面上所有img标签,没有限定父元素范围,所以会包含class为bcd的div里的图片。上面两种方法都通过限定父元素为classa的div,实现了精准抓取。
内容的提问来源于stack exchange,提问作者Thụ Nguyễn Văn
相关产品推荐
相关产品推荐

