无法解析Pinterest:爬虫获取无效链接而非图片链接的技术问题
解决Pinterest爬取无法获取图片链接的问题
问题原因
Pinterest是基于JavaScript的单页应用,直接用requests请求只能拿到页面的初始HTML骨架,所有图片、动态内容都是浏览器加载后通过JS渲染生成的。另外Pinterest有反爬机制,未模拟真实浏览器的请求会被限制,返回的内容并非实际页面数据,导致你拿到的是无效链接。
解决方案
使用能渲染JavaScript的工具(如Selenium)模拟浏览器加载页面,同时设置合理的请求头规避反爬,最后定位正确的图片元素提取链接。
步骤1:安装依赖
执行以下命令安装所需库:
pip install selenium webdriver-manager
步骤2:修改后的爬取代码
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from bs4 import BeautifulSoup def parse_pinterest(): # 配置Chrome浏览器选项 options = webdriver.ChromeOptions() options.add_argument("--headless=new") # 无头模式,不显示浏览器窗口 options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36") # 初始化浏览器 driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) driver.get("https://www.pinterest.ie/") # 等待页面动态内容加载完成 driver.implicitly_wait(10) # 获取渲染后的完整页面源码 page_source = driver.page_source soup = BeautifulSoup(page_source, 'lxml') # 定位图片元素(Pinterest图片通常带有data-test-id="pin-image"标识) images = soup.find_all('img', attrs={'data-test-id': 'pin-image'}) for img in images: # 提取图片链接,优先取data-src(懒加载属性),没有则取src img_url = img.get('data-src') or img.get('src') if img_url: print(img_url) # 关闭浏览器 driver.quit() parse_pinterest()
注意事项
- 不要短时间内频繁请求,可添加
time.sleep()控制请求间隔,避免IP被封禁 - 若页面结构变化,需检查并更新图片元素的选择器
- 可配合代理IP使用,进一步降低被反爬识别的概率
内容的提问来源于stack exchange,提问作者Александр Кузнецов
相关产品推荐
相关产品推荐

