Scrapy使用CSS选择器无法抓取文章图片URL的技术求助
解决Scrapy无法抓取文章图片链接的问题
问题原因
目标网站的文章图片是通过JavaScript动态渲染加载的,Scrapy默认请求获取的是初始静态HTML,里面只包含网站Logo这类静态资源,不会有JS动态生成的文章图片标签。
解决方案
1. 启用动态页面渲染
使用scrapy-playwright中间件让Scrapy支持渲染JS动态内容,步骤如下:
- 安装依赖:
pip install scrapy-playwright - 在Scrapy项目的
settings.py中配置:DOWNLOAD_HANDLERS = { "http": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler", "https": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler", } PLAYWRIGHT_LAUNCH_OPTIONS = {"headless": True} # 无头模式,可选False查看浏览器窗口 - 在请求中启用Playwright:
yield scrapy.Request(url, meta={"playwright": True})
2. 正确的CSS选择器(渲染后使用)
获取到动态渲染的页面后,可用以下CSS选择器定位目标图片:
- 基于文章主图容器的选择器(最可靠):
response.css('figure.lead-art-wrapper img::attr(src)').get() - 基于图片自身类名的选择器:
response.css('img.sc-GVOUr::attr(src)').get()
3. 备选:直接抓取API数据(可选)
检查页面的网络请求,找到返回图片信息的API接口,直接请求接口获取图片链接,这种方式效率更高,但需要分析每个页面的API规律。
内容的提问来源于stack exchange,提问作者maahlouontheroad
相关产品推荐
相关产品推荐

