当前位置: 首页 > article >正文

Granite-4.0-H-350M应用案例:自动生成新闻网站数据抓取脚本

Granite-4.0-H-350M应用案例自动生成新闻网站数据抓取脚本1. 新闻数据抓取的需求与挑战在信息爆炸的时代新闻数据抓取已成为许多企业和研究机构的刚需。无论是舆情监控、市场分析还是内容聚合都需要从各类新闻网站高效获取结构化数据。然而传统爬虫开发面临几个典型痛点网站结构多变新闻网站的HTML结构经常调整需要频繁维护爬虫代码反爬机制复杂越来越多的网站采用动态加载、验证码等手段阻止自动化抓取开发效率低下从零开始编写爬虫需要大量时间特别是处理异常情况和数据清洗Granite-4.0-H-350M为解决这些问题提供了新思路。这个轻量级模型特别擅长理解自然语言指令并生成Python代码能快速将数据抓取需求转化为可执行脚本。相比传统方法它有三大优势快速响应变化当网站结构调整时只需重新描述需求即可获得适配的新代码智能绕过限制模型内置常见反爬应对策略生成的代码已包含基础防护措施降低技术门槛非专业开发者也能通过自然语言描述获得可用的爬虫脚本2. 环境准备与模型部署2.1 基础环境要求部署Granite-4.0-H-350M对硬件要求极低适合大多数开发环境操作系统Windows 10/macOS 10.15/Linuxx86_64内存最低4GB建议8GB以上存储空间约1GB可用空间网络能正常访问GitHub和模型仓库2.2 通过Ollama一键部署Ollama是目前最简单的本地模型运行方案支持跨平台部署# 安装Ollama以Linux为例 curl -fsSL https://ollama.com/install.sh | sh # 拉取Granite-4.0-H-350M模型 ollama pull ibm/granite4:350m-h # 启动模型服务默认端口11434 ollama serve 2.3 Python环境配置建议使用Python 3.8环境安装必要依赖pip install ollama requests beautifulsoup4 python-dotenv3. 新闻爬虫生成核心逻辑3.1 基础请求函数封装首先创建一个与模型交互的通用函数import ollama def generate_news_crawler(prompt, site_exampleNone): 生成新闻爬虫代码 :param prompt: 抓取需求描述 :param site_example: 示例网站URL或HTML片段 :return: 可执行的Python代码 full_prompt f 请生成一个Python爬虫脚本用于从新闻网站抓取以下内容 {prompt} 要求 1. 使用requests和BeautifulSoup 2. 包含完善的异常处理 3. 添加随机延时(1-3秒) 4. 设置合理的请求头 5. 输出结构化JSON数据 if site_example: full_prompt f\n示例网站结构参考\n{site_example[:500]} response ollama.chat( modelibm/granite4:350m-h, messages[{role: user, content: full_prompt}], options{temperature: 0.2} ) return extract_python_code(response[message][content]) def extract_python_code(markdown_text): 从Markdown文本提取Python代码块 start markdown_text.find(python) if start -1: return markdown_text start len(python) end markdown_text.find(, start) return markdown_text[start:end].strip()3.2 典型新闻抓取场景实践3.2.1 基础新闻列表抓取生成抓取新闻标题、链接和发布时间的代码basic_crawler generate_news_crawler( 从新闻网站首页抓取最近10条新闻的标题、链接和发布时间, 示例URL: https://example-news.com ) print(basic_crawler)模型返回的代码通常包含以下关键部分import requests from bs4 import BeautifulSoup import json import time import random def scrape_news_list(): headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36..., Accept-Language: zh-CN,zh;q0.9 } try: # 请求新闻首页 response requests.get(https://example-news.com, headersheaders, timeout10) response.raise_for_status() soup BeautifulSoup(response.text, html.parser) news_items soup.select(.news-list .item)[:10] # 假设的CSS选择器 results [] for item in news_items: title item.select_one(.title).get_text(stripTrue) link item.select_one(a)[href] pub_time item.select_one(.time).get_text(stripTrue) results.append({ title: title, link: link, pub_time: pub_time }) # 添加随机延时 time.sleep(random.uniform(1, 3)) return json.dumps(results, ensure_asciiFalse) except Exception as e: print(f抓取失败: {e}) return json.dumps({error: str(e)}) if __name__ __main__: print(scrape_news_list())3.2.2 分页抓取与详情提取对于需要翻页并获取详情内容的场景paging_crawler generate_news_crawler( 抓取新闻网站前3页的新闻列表然后进入每条新闻详情页获取正文内容和作者信息, 列表页URL格式: https://example-news.com/page/2\n详情页包含.author和.content元素 )生成的代码会包含分页逻辑和嵌套请求def scrape_paged_news(): base_url https://example-news.com/page/ results [] for page in range(1, 4): # 前3页 try: response requests.get(f{base_url}{page}, timeout10) soup BeautifulSoup(response.text, html.parser) for item in soup.select(.news-item): detail_url item[href] detail_data scrape_news_detail(detail_url) results.append({ title: item.select_one(.title).text, detail: detail_data }) time.sleep(random.uniform(1, 3)) except Exception as e: print(f第{page}页抓取失败: {e}) return json.dumps(results, ensure_asciiFalse) def scrape_news_detail(url): try: response requests.get(url, timeout10) soup BeautifulSoup(response.text, html.parser) return { content: soup.select_one(.content).text.strip(), author: soup.select_one(.author).text.strip() } except Exception as e: print(f详情页抓取失败: {e}) return None4. 高级功能实现4.1 动态加载内容处理现代新闻网站常用AJAX动态加载内容模型能生成相应的处理方案ajax_crawler generate_news_crawler( 新闻列表通过API动态加载请找到API接口并抓取数据, API示例: https://example-news.com/api/news?page1 )生成的代码会直接调用API接口def scrape_api_news(): results [] api_url https://example-news.com/api/news for page in range(1, 4): try: response requests.get( api_url, params{page: page}, headers{X-Requested-With: XMLHttpRequest} ) data response.json() for item in data[items]: results.append({ title: item[title], summary: item[summary], pub_date: item[published_at] }) time.sleep(1.5) except Exception as e: print(fAPI请求失败: {e}) return json.dumps(results, ensure_asciiFalse)4.2 自动选择器生成当不确定网页结构时可以提供HTML片段让模型生成合适的选择器def generate_selectors(html_sample, targets): 根据HTML样本生成CSS选择器 :param html_sample: HTML片段 :param targets: 需要定位的元素描述 :return: 选择器字典 prompt f 根据以下HTML结构 {html_sample[:500]} 请为以下目标生成CSS选择器 {targets} response ollama.chat( modelibm/granite4:350m-h, messages[{role: user, content: prompt}] ) return parse_selector_response(response[message][content]) # 使用示例 sample_html div classnews-container article classnews-item h3 classnews-titlea href/news/123示例标题/a/h3 span classmeta2023-12-01/span /article /div selectors generate_selectors( sample_html, [新闻标题, 新闻链接, 发布时间] ) print(selectors)5. 实战优化建议5.1 性能优化技巧并发控制使用线程池提高抓取效率但注意控制并发数from concurrent.futures import ThreadPoolExecutor def batch_scrape(urls, max_workers3): with ThreadPoolExecutor(max_workersmax_workers) as executor: results list(executor.map(scrape_news_detail, urls)) return [r for r in results if r]缓存机制避免重复抓取相同内容import hashlib from pathlib import Path CACHE_DIR Path(news_cache) CACHE_DIR.mkdir(exist_okTrue) def get_cached(url): key hashlib.md5(url.encode()).hexdigest() cache_file CACHE_DIR / f{key}.json if cache_file.exists(): return json.loads(cache_file.read_text()) data scrape_news_detail(url) if data: cache_file.write_text(json.dumps(data)) return data5.2 反反爬策略请求头轮换准备多个User-Agent随机使用USER_AGENTS [ Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36..., Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15..., Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15... ] def get_random_headers(): return { User-Agent: random.choice(USER_AGENTS), Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8 }IP代理池使用代理IP避免被封PROXY_LIST [ http://proxy1.example.com:8080, http://proxy2.example.com:8080 ] def get_with_proxy(url): proxy random.choice(PROXY_LIST) try: response requests.get(url, proxies{http: proxy}, timeout15) return response except: return None6. 总结Granite-4.0-H-350M为新闻数据抓取提供了一种高效的新范式。通过本文介绍的方法您可以快速生成基础爬虫用自然语言描述需求即可获得可运行代码灵活适应变化当网站结构调整时只需重新生成代码智能处理复杂场景自动应对分页、动态加载等常见挑战持续优化改进基于模型建议不断优化爬虫性能和稳定性相比传统爬虫开发方式这种AI辅助的方法可以节省50%以上的开发时间特别适合需要快速响应网站变化的场景。随着模型的不断迭代其生成的代码质量和场景适应能力还将持续提升。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

Granite-4.0-H-350M应用案例:自动生成新闻网站数据抓取脚本

Granite-4.0-H-350M应用案例:自动生成新闻网站数据抓取脚本 1. 新闻数据抓取的需求与挑战 在信息爆炸的时代,新闻数据抓取已成为许多企业和研究机构的刚需。无论是舆情监控、市场分析还是内容聚合,都需要从各类新闻网站高效获取结构化数据。…...

掌握Node.js开发的102个终极最佳实践:从新手到专家的完整指南

掌握Node.js开发的102个终极最佳实践:从新手到专家的完整指南 【免费下载链接】nodebestpractices :white_check_mark: The Node.js best practices list (July 2024) 项目地址: https://gitcode.com/GitHub_Trending/no/nodebestpractices 你是否曾经在Node…...

10个r.js优化技巧:大幅提升JavaScript应用性能

10个r.js优化技巧:大幅提升JavaScript应用性能 【免费下载链接】r.js Runs RequireJS in Node and Rhino, and used to run the RequireJS optimizer 项目地址: https://gitcode.com/gh_mirrors/rj/r.js 想要大幅提升你的JavaScript应用性能吗?r.…...

s2-pro语音合成5分钟快速上手:零基础小白也能玩转AI配音

s2-pro语音合成5分钟快速上手:零基础小白也能玩转AI配音 1. s2-pro语音合成简介 s2-pro是Fish Audio开源的专业级语音合成模型镜像,它能让你的文字变成自然流畅的语音。想象一下,你只需要输入一段文字,就能得到一个真人般的声音…...

Canine多租户系统实战:团队协作与基于角色的访问控制

Canine多租户系统实战:团队协作与基于角色的访问控制 【免费下载链接】canine A developer friendly PaaS for your Kubernetes 项目地址: https://gitcode.com/gh_mirrors/ca/canine Canine作为一款开发者友好的Kubernetes PaaS平台,提供了强大的…...

深入解析rust-memory-container-cs:Rust内存容器分类与选择指南

深入解析rust-memory-container-cs:Rust内存容器分类与选择指南 【免费下载链接】rust-memory-container-cs Rust Memory Container Cheat-sheet 项目地址: https://gitcode.com/gh_mirrors/ru/rust-memory-container-cs rust-memory-container-cs是一份全面…...

Pi0具身智能v1在仓储物流中的应用:一套代码实现自动分拣

Pi0具身智能v1在仓储物流中的应用:一套代码实现自动分拣 1. 物流分拣的现状与挑战 走进任何一家现代物流仓库,你都会看到相似的场景:传送带上的包裹川流不息,工人们快速分拣着各种形状和大小的物品。这种传统分拣方式虽然成熟&a…...

终极Node.js最佳实践指南:2024年102个开发技巧大揭秘

终极Node.js最佳实践指南:2024年102个开发技巧大揭秘 【免费下载链接】nodebestpractices :white_check_mark: The Node.js best practices list (July 2024) 项目地址: https://gitcode.com/GitHub_Trending/no/nodebestpractices Node.js开发者在构建企业级…...

HunyuanVideo-Foley参数详解:temperature/top_p对音效多样性影响

HunyuanVideo-Foley参数详解:temperature/top_p对音效多样性影响 1. 音效生成参数概述 在HunyuanVideo-Foley音效生成系统中,temperature和top_p是两个核心参数,它们直接影响生成音效的多样性和质量。理解这两个参数的工作原理,…...

Django-unicorn 性能优化技巧:10个提升应用响应速度的终极指南

Django-unicorn 性能优化技巧:10个提升应用响应速度的终极指南 【免费下载链接】django-unicorn The magical reactive component framework for Django ✨ 项目地址: https://gitcode.com/gh_mirrors/dj/django-unicorn Django-unicorn 是一个神奇的响应式组…...

如何在5分钟内为Unity游戏实现实时翻译:XUnity.AutoTranslator完整实战指南

如何在5分钟内为Unity游戏实现实时翻译:XUnity.AutoTranslator完整实战指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator是一款功能强大的Unity游戏实时翻译插件&…...

Phi-4-mini-reasoning百度搜索友好:生成结构化、可索引的推理答案

Phi-4-mini-reasoning 使用指南:生成结构化推理答案 1. 模型概述 Phi-4-mini-reasoning 是一款由微软开发的轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这个3.8B参数的模型主打"小参数、强推理、长上下文、低延迟"的…...

OFA-Image-Caption快速入门:10分钟完成Docker镜像拉取与模型服务启动

OFA-Image-Caption快速入门:10分钟完成Docker镜像拉取与模型服务启动 你是不是也遇到过这种情况?手头有一堆图片,想快速给它们配上文字说明,比如整理相册、做内容摘要,或者给商品图自动生成描述。自己写吧&#xff0c…...

通义千问3-VL-Reranker-8B教程:safetensors分片模型加载与内存优化技巧

通义千问3-VL-Reranker-8B教程:safetensors分片模型加载与内存优化技巧 本文介绍的通义千问3-VL-Reranker-8B模型采用safetensors分片格式存储,总大小约18GB,分为4个分片文件。这种设计让大模型加载变得更加灵活,即使硬件资源有限…...

小白也能懂:Clawdbot整合Qwen3:32B的Web网关配置指南

小白也能懂:Clawdbot整合Qwen3:32B的Web网关配置指南 1. 这个镜像能帮你做什么 想象一下,你已经在本地成功运行了Qwen3:32B大模型,通过Ollama命令行调用也很顺畅。但每次想测试模型效果,都要打开终端输入命令,既不方…...

深度剖析同比和环比,万能向导计算没烦恼

先了解2个概念,同期和环期 同期:前一个环上的同一个位置,所以叫同。 环期:在一个环上的前一段等长区间,所以叫环,可以这么记忆。但其实环期就是以自身为周期的同期,因为以自身为周期&#xff…...

AMD Ryzen 处理器底层调试工具深度解析:突破BIOS限制的性能调优实战指南

AMD Ryzen 处理器底层调试工具深度解析:突破BIOS限制的性能调优实战指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目…...

EagleEye企业应用指南:内网GPU显存直处理,彻底规避云端数据泄露风险

EagleEye企业应用指南:内网GPU显存直处理,彻底规避云端数据泄露风险 基于 DAMO-YOLO TinyNAS 架构的毫秒级目标检测引擎 1. 为什么企业需要本地化的视觉AI方案? 想象一下这个场景:你的工厂生产线需要实时检测产品缺陷&#xff0c…...

HoYo-Glyphs:米哈游游戏字体库终极指南,11款开源架空文字字体让你的创作瞬间拥有游戏世界氛围

HoYo-Glyphs:米哈游游戏字体库终极指南,11款开源架空文字字体让你的创作瞬间拥有游戏世界氛围 【免费下载链接】HoYo-Glyphs Constructed scripts by HoYoverse 米哈游的架空文字 项目地址: https://gitcode.com/gh_mirrors/ho/HoYo-Glyphs 你是否…...

3个科研效率痛点破解:Zotero-GPT的智能文献管理革命

3个科研效率痛点破解:Zotero-GPT的智能文献管理革命 【免费下载链接】zotero-gpt GPT Meet Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-gpt 你是否曾经在深夜面对堆积如山的文献感到无从下手?是否因为语言障碍而错失重要的国际…...

编写程序实现智能酿酒桶温度监测,温度适宜发酵时,提示密封发酵。

📝 项目概述:Smart Fermentation MonitorSlogan: 代码掌控酵母活性,数据驱动酿造风味;告别“盲酿”,精准掌控发酵黄金窗口。一、 实际应用场景描述 (Context & Scenario)* 场景:家庭精酿爱好者正在酿造…...

再次革新 .NET 的构建和发布方式(一)滓

本文能帮你解决什么? 1. 搞懂FastAPI异步(async/await)到底在什么场景下能真正提升性能。 2. 掌握在FastAPI中正确使用多线程处理CPU密集型任务的方法。 3. 避开常见的坑(比如阻塞操作、数据库连接池耗尽、GIL限制)。 …...

LaTeX2Word-Equation:3分钟搞定数学公式迁移的终极指南 [特殊字符]

LaTeX2Word-Equation:3分钟搞定数学公式迁移的终极指南 🚀 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 还在为论文写作…...

写程序笔记本封面镂空,内页图案透出,输出:文创笔记本溢价高。

📝 项目概述:Laser-Cut Windowed Notebook CoverSlogan: 代码定义美学,光影穿透纸背;打造溢价翻倍的文创爆品。一、 实际应用场景描述 (Context & Scenario)* 场景:文创市集、独立书店、礼品店。消费者面对琳琅满目…...

Whisper-large-v3实战应用:视频字幕生成一键解决方案

Whisper-large-v3实战应用:视频字幕生成一键解决方案 1. 为什么需要自动视频字幕生成 视频内容正成为互联网信息传播的主流形式,但缺乏字幕的视频会损失大量潜在观众。传统字幕制作需要人工听写、时间轴对齐、文本校对,一个10分钟的视频可能…...

迎战2026知网最严查重!25届学姐实测10款论文降AI工具(附避坑名单)

毕业季定稿最让人头疼的不是重复率,而是迟迟降不下来的AI疑似度。去年我自己改稿经常改到凌晨,一查还是飘红,这才意识到纯手工降低ai率根本行不通。 为了稳妥达标,我集中研究了市面上常见的论文降ai方法,整理出这份干…...

OpenClaw技能共享经济:发布Phi-3-vision插件到ClawHub全流程

OpenClaw技能共享经济:发布Phi-3-vision插件到ClawHub全流程 1. 为什么选择OpenClaw生态 去年夏天,当我第一次尝试用OpenClaw自动化处理图片分类任务时,就意识到这个框架的潜力远不止于个人使用。最让我惊喜的是它的技能共享机制——任何开…...

熬夜整理10款论文降AI工具红黑榜,避开知网退稿大坑

毕业季定稿最让人头疼的不是重复率,而是迟迟降不下来的AI疑似度。去年我自己改稿经常改到凌晨,一查还是飘红,这才意识到纯手工降低ai率根本行不通。 为了稳妥达标,我集中研究了市面上常见的论文降ai方法,整理出这份干…...

Nunchaku FLUX.1-dev部署教程:NVIDIA Container Toolkit容器GPU直通配置

Nunchaku FLUX.1-dev部署教程:NVIDIA Container Toolkit容器GPU直通配置 想体验最新最强的文生图模型,但被复杂的本地部署和显存要求劝退?今天,我来带你用最简单、最干净的方式,在ComfyUI里玩转Nunchaku FLUX.1-dev模…...

【拒绝延毕】2026论文降AI求生指南:硬核排雷10款工具,手把手教你洗掉“AI味”

毕业季定稿最让人头疼的不是重复率,而是迟迟降不下来的AI疑似度。去年我自己改稿经常改到凌晨,一查还是飘红,这才意识到纯手工降低ai率根本行不通。 为了稳妥达标,我集中研究了市面上常见的论文降ai方法,整理出这份干…...