如何用Selenium和BeautifulSoup提取IG图片的src链接?
解决Instagram爬虫仅提取图片src链接的问题
嘿,这事儿好办!你现在用soup.find_all()拿到的是一堆BeautifulSoup的标签对象,不是直接的链接,所以打印出来才会带标签的多余内容。咱们只需要遍历这些标签,把每个标签里的src属性提取出来就行。
修改后的代码示例
import requests from bs4 import BeautifulSoup import selenium.webdriver as webdriver # 如果需要延时防反爬,可以加这个 # import time url = 'https://www.instagram.com/kitties/' driver = webdriver.Firefox() driver.get(url) # 可选:加个延时等页面加载完全,避免漏抓图片 # time.sleep(3) soup = BeautifulSoup(driver.page_source, 'lxml') img_tags = soup.find_all('img', class_='_2di5p') # 遍历每个img标签,提取并打印src链接 for img in img_tags: print(img['src']) # 要是想把链接存起来方便后续下载,可以存到列表里 img_url_list = [img['src'] for img in img_tags] # 后续下载示例(可以单独写循环处理) # for idx, url in enumerate(img_url_list): # response = requests.get(url) # with open(f'kitty_{idx}.jpg', 'wb') as f: # f.write(response.content)
关键说明
soup.find_all('img', class_='_2di5p')返回的是Tag对象列表,每个对象包含了img标签的所有属性,我们只需要用img['src']就能精准拿到图片链接。- 注意Instagram的反爬机制:频繁访问可能会被限制,建议加上
time.sleep()延时,或者用代理IP。 - 类名
_2di5p可能会随着Instagram页面更新而变化,如果之后抓不到图片了,记得去网页源码里检查最新的img类名。 - 如果你用的是Python3,
print必须加括号,代码里已经按Python3的写法调整了。
内容的提问来源于stack exchange,提问作者P_n
相关产品推荐
相关产品推荐

