diff --git a/.claude/skills/news-extractor/scripts/crawlers/wechat.py b/.claude/skills/news-extractor/scripts/crawlers/wechat.py index 85b8fac..816b717 100644 --- a/.claude/skills/news-extractor/scripts/crawlers/wechat.py +++ b/.claude/skills/news-extractor/scripts/crawlers/wechat.py @@ -5,6 +5,7 @@ from __future__ import annotations import hashlib +import html import json import logging import re @@ -171,8 +172,54 @@ def parse_html_to_news_content(self, html_content: str) -> List[ContentItem]: self._process_content_node(node) contents = [item for item in self._contents if item.content.strip()] + + # Also extract images from SSR data (image articles have most images there) + ssr_images = self._extract_ssr_images(html_content) + existing_image_urls = {item.content for item in contents if item.type == ContentType.IMAGE} + for ssr_img in ssr_images: + if ssr_img.content not in existing_image_urls: + contents.insert(0, ssr_img) + existing_image_urls.add(ssr_img.content) + return self._remove_duplicate_contents(contents) + def _extract_ssr_images(self, html_content: str) -> List[ContentItem]: + """Extract images from SSR/embedded data (covers image articles type 8). + + WeChat image articles store most images inside inline