SEO 性能分析工具:通过复杂的网页抓取实现 AI 驱动的 SEO 洞察

  • 从复杂、交互式的网站抓取数据
  • 最具创意的人工智能模型网络数据使用方式
  • 我建造了什么

    了解 SEO 性能分析工具:一个全面的 SEO 分析平台,将复杂的网页抓取与 AI 驱动的洞察相结合。此工具可帮助 SEO 专业人员和内容创建者通过以下方式优化其网站:

  • 使用 Google Lighthouse 指标分析网站性能
  • 识别并分析主要竞争对手
  • 提供人工智能内容优化建议
  • 生成详细的 SEO 报告
  • 主要特点:

  • 📊 Lighthouse 性能分析:移动和桌面性能指标、可访问性分数和 SEO 评级
  • 🔍 竞争对手分析:自动检测竞争对手并进行内容比较
  • 📝 内容分析:人工智能驱动的结构分析和 SEO 建议
  • 📈 可视化报告:交互式图表和比较分析
  • 🤖 AI 集成:Google Gemini AI 用于智能内容分析
  • 演示

    **现场演示**:SEO 性能分析工具

    **源代码**:GitHub 存储库

    截图

  • 主界面:简洁直观的 URL 和关键字输入界面
  • 灯塔分析:复杂的网页抓取实际操作,显示性能指标
  • 竞争对手分析:人工智能驱动的竞争对手内容比较
  • 内容分析:详细的内容优化建议
  • 如何使用 Bright Data

    1. 使用抓取浏览器进行复杂的网页抓取

    该工具利用 Bright Data 的 Scraping Browser 来处理复杂且 JavaScript 密集的网站:

    # lighthouse.py
    def get_lighthouse(target_url: str):
        sbr_connection = ChromiumRemoteConnection(SBR_WEBDRIVER, 'goog', 'chrome')
        driver = Remote(sbr_connection, options=ChromeOptions())
    
        try:
            # Navigate to PageSpeed Insights
            encoded_url = f"https://pagespeed.web.dev/analysis?url={target_url}"
            driver.get(encoded_url)
    
            # Challenge 1: Wait for dynamic content loading
            WebDriverWait(driver, 60).until(
                EC.presence_of_element_located((By.CLASS_NAME, "lh-report"))
            )
    
            # Challenge 2: Handle tab switching for desktop analysis
            desktop_tab = WebDriverWait(driver, 20).until(
                EC.element_to_be_clickable((By.ID, "desktop_tab"))
            )
            actions = ActionChains(driver)
            actions.move_to_element(desktop_tab).click().perform()
    
            # Challenge 3: Verify report content changed
            WebDriverWait(driver, 20).until(
                lambda driver: driver.find_element(By.CLASS_NAME, "lh-report").text != report_text
            )

    **克服的挑战**:

  • 在 PageSpeed Insights 上处理动态 JavaScript 内容
  • 管理复杂的用户交互(移动端/桌面端之间的标签切换)
  • 从交互式报告中提取结构化数据
  • 2. Web Unlocker 用于竞争对手分析

    使用 Bright Data 的 Web Unlocker 可靠地访问竞争对手的内容:

    # compare_pages.py - Competitor Content Access
    def fetch_html_content(url: str) -> tuple:
        try:
            # Ensure the URL has a proper scheme
            if not url.startswith(('http://', 'https://')):
                url = 'https://' + url
    
            # Brightdata API configuration
            api_url = "https://api.brightdata.com/request"
            headers = {
                "Content-Type": "application/json",
                "Authorization": f"Bearer {get_api_key('BRIGHTDATA_API_KEY')}"
            }
            payload = {
                "zone": "web_unlocker1",
                "url": url,
                "format": "raw"
            }
    
            # Make request to Brightdata API
            response = requests.post(api_url, json=payload, headers=headers)
    
            if response.status_code == 200:
                html_content = response.text
                soup = BeautifulSoup(html_content, 'html.parser')
                tags = soup.find_all(['h1', 'h2', 'h3', 'p'])
                collected_html = ''.join(str(tag) for tag in tags)
                return url, collected_html
        except Exception as e:
            print(f"Error fetching HTML content from {url}: {e}")
            return url, None

    3. 用于发现竞争对手的 SERP API

    集成 Bright Data 的 SERP API 来识别主要竞争对手:

    # compare_pages.py - Competitor Discovery
    def get_top_competitor(keyword: str, our_domain: str) -> str:
        try:
            url = "https://api.brightdata.com/request"
    
            # Challenge: Get real-time SERP results and find relevant competitor
            encoded_keyword = requests.utils.quote(keyword)
    
            payload = {
                "zone": "serp_api1",
                "url": f"https://www.google.com/search?q={encoded_keyword}",
                "format": "raw"
            }
    
            headers = {
                "Authorization": f"Bearer {get_api_key('BRIGHTDATA_API_KEY')}",
                "Content-Type": "application/json"
            }
    
            response = requests.post(url, json=payload, headers=headers)
    
            if response.status_code == 200:
                # Parse search results with BeautifulSoup
                soup = BeautifulSoup(response.text, 'html.parser')
                all_data = soup.find_all("div", {"class": "g"})
    
                # Find first relevant competitor
                for result in all_data:
                    link = result.find('a').get('href')
                    if (link and 
                        link.find('https') != -1 and 
                        link.find('http') == 0 and 
                        our_domain not in link):
                        return link
    
        except Exception as e:
            st.error(f"Error finding competitor: {str(e)}")
            return None

    人工智能集成管道

  • 数据收集:使用 Bright Data 服务收集:性能指标 (Lighthouse) 竞争对手内容 SERP 数据
  • 数据处理:构建收集的数据以供人工智能分析
  • AI 分析:使用 Google Gemini AI 来:比较内容质量生成 SEO 建议分析内容结构
  • 可视化:通过 Streamlit 界面呈现见解
  • 技术堆栈

  • 前端:Streamlit
  • 后端:Python
  • 抓取:Bright Data(抓取浏览器、Web Unlocker、SERP API)
  • 人工智能:Google Gemini 人工智能
  • 数据可视化:Plotly
  • 附加提示资格

    该项目符合两个提示:

  • 从复杂、交互式网站抓取数据:该工具可成功处理 PageSpeed Insights 等 JavaScript 密集型页面,并通过 Bright Data 的 Scraping Browser 管理动态内容加载和复杂的用户交互。
  • 最具创意的 AI 模型网络数据使用:该项目通过将网络抓取的数据(性能指标、竞争对手内容、SERP 结果)与 Google Gemini AI 相结合,创建了创新的 AI 管道,以生成智能 SEO 见解和建议。
  • 团队投稿

    此投稿由 Kenan Can 创建

    感谢您审阅我的提交内容!让我们利用网页抓取和 AI 的强大功能让 SEO 分析更加智能。