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

Qwen2.5-Coder-1.5B应用案例:快速生成网页爬虫代码实战

Qwen2.5-Coder-1.5B应用案例快速生成网页爬虫代码实战1. 引言为什么选择Qwen2.5-Coder生成爬虫代码在日常开发工作中网页爬虫是数据采集和分析的重要工具。传统编写爬虫代码需要开发者熟悉HTTP请求、HTML解析、反爬机制处理等多个技术点耗时且容易出错。Qwen2.5-Coder-1.5B作为专为代码生成优化的AI模型能够快速生成可运行的爬虫代码大幅提升开发效率。本文将展示如何利用Qwen2.5-Coder-1.5B模型通过简单的自然语言描述快速生成Python爬虫代码。您将学习到如何准备Qwen2.5-Coder-1.5B的开发环境编写有效的提示词(Prompt)来生成爬虫代码生成的代码解析与优化建议实际案例演示从电商网站抓取商品信息2. 环境准备与模型调用2.1 安装基础依赖首先确保您的Python环境版本在3.9以上然后安装必要的依赖包pip install transformers torch2.2 加载Qwen2.5-Coder-1.5B模型使用以下代码加载模型和分词器from transformers import AutoModelForCausalLM, AutoTokenizer model_name Qwen/Qwen2.5-Coder-1.5B tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained( model_name, device_mapauto, torch_dtypeauto ).eval()3. 生成基础爬虫代码3.1 简单网页抓取示例让我们从最简单的需求开始抓取一个网页的标题和主要内容。prompt 请用Python编写一个爬虫使用requests和BeautifulSoup抓取网页的标题和正文内容。 要求处理HTTP错误和超时并输出结构化结果。 inputs tokenizer(prompt, return_tensorspt).to(model.device) outputs model.generate(**inputs, max_new_tokens512) print(tokenizer.decode(outputs[0], skip_special_tokensTrue))模型生成的代码可能如下import requests from bs4 import BeautifulSoup from urllib.parse import urlparse def scrape_webpage(url): try: headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 } response requests.get(url, headersheaders, timeout10) response.raise_for_status() soup BeautifulSoup(response.text, html.parser) result { url: url, title: soup.title.string if soup.title else None, content: soup.get_text(separator , stripTrue)[:500] ... } return result except requests.exceptions.RequestException as e: print(fError fetching {url}: {e}) return None # 使用示例 if __name__ __main__: webpage_data scrape_webpage(https://example.com) if webpage_data: print(webpage_data)3.2 代码解析与优化建议生成的代码已经具备基本功能我们可以进一步优化增加随机延迟避免被目标网站封禁添加代理支持应对IP限制更精细的内容提取使用CSS选择器优化后的版本import random import time from bs4 import BeautifulSoup import requests def enhanced_scraper(url, proxyNone): try: headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36, Accept-Language: en-US,en;q0.9 } proxies {http: proxy, https: proxy} if proxy else None # 随机延迟1-3秒 time.sleep(random.uniform(1, 3)) response requests.get(url, headersheaders, proxiesproxies, timeout15) response.raise_for_status() soup BeautifulSoup(response.text, html.parser) # 使用CSS选择器提取主要内容 main_content soup.select_one(main, .main-content, #content) or soup.body return { url: url, title: soup.title.string if soup.title else None, description: soup.find(meta, attrs{name: description})[content] if soup.find(meta, attrs{name: description}) else None, content: main_content.get_text(separator , stripTrue)[:1000] ... } except Exception as e: print(fError: {e}) return None4. 实战案例电商商品信息抓取4.1 生成电商爬虫代码让我们尝试更复杂的需求抓取电商网站的商品列表。ecommerce_prompt 请编写一个Python爬虫从电商网站(如淘宝、京东)抓取商品列表 包括商品名称、价格、销量、商家名称等信息。 需要考虑反爬机制使用随机User-Agent和请求延迟。 输出为JSON格式。 inputs tokenizer(ecommerce_prompt, return_tensorspt).to(model.device) outputs model.generate(**inputs, max_new_tokens768) print(tokenizer.decode(outputs[0], skip_special_tokensTrue))生成的代码可能包含以下关键部分import requests from bs4 import BeautifulSoup import json import random import time 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 (Linux; Android 10) AppleWebKit/537.36 ] def scrape_ecommerce(keyword, pages1): base_url https://search.jd.com/Search products [] for page in range(1, pages 1): params { keyword: keyword, page: page, s: (page - 1) * 30 1 } headers { User-Agent: random.choice(USER_AGENTS), Referer: https://www.jd.com/ } try: # 随机延迟避免被封 time.sleep(random.uniform(1, 3)) response requests.get(base_url, paramsparams, headersheaders, timeout10) response.raise_for_status() soup BeautifulSoup(response.text, html.parser) items soup.select(.gl-item) for item in items: product { name: item.select_one(.p-name em).get_text(stripTrue), price: item.select_one(.p-price i).get_text(stripTrue), shop: item.select_one(.p-shop a).get_text(stripTrue), comments: item.select_one(.p-commit a).get_text(stripTrue) } products.append(product) except Exception as e: print(fError on page {page}: {e}) continue return json.dumps(products, ensure_asciiFalse, indent2)4.2 处理动态内容与反爬机制现代电商网站大量使用JavaScript动态加载内容我们需要扩展爬虫能力from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC def scrape_dynamic_ecommerce(keyword): options Options() options.add_argument(--headless) options.add_argument(--disable-gpu) options.add_argument(fuser-agent{random.choice(USER_AGENTS)}) driver webdriver.Chrome(optionsoptions) driver.get(fhttps://search.jd.com/Search?keyword{keyword}) try: # 等待商品列表加载 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, .gl-item)) ) # 模拟滚动加载更多 for _ in range(3): driver.execute_script(window.scrollTo(0, document.body.scrollHeight);) time.sleep(2) soup BeautifulSoup(driver.page_source, html.parser) items soup.select(.gl-item) products [] for item in items: try: products.append({ name: item.select_one(.p-name em).get_text(stripTrue), price: item.select_one(.p-price i).get_text(stripTrue), shop: item.select_one(.p-shop a).get_text(stripTrue) }) except: continue return products finally: driver.quit()5. 高级技巧与最佳实践5.1 提升爬虫稳定性的技巧请求头管理模拟真实浏览器行为headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64), Accept: text/html,application/xhtmlxml, Accept-Language: en-US,en;q0.9, Referer: https://www.google.com/, DNT: 1 }代理轮换使用代理池避免IP封禁PROXY_POOL [http://proxy1:port, http://proxy2:port] def get_with_proxy(url): proxy random.choice(PROXY_POOL) try: return requests.get(url, proxies{http: proxy, https: proxy}, timeout10) except: return None异常处理完善的错误恢复机制def robust_request(url, max_retries3): for attempt in range(max_retries): try: response requests.get(url, timeout15) response.raise_for_status() return response except requests.exceptions.RequestException as e: print(fAttempt {attempt 1} failed: {e}) if attempt max_retries - 1: time.sleep(2 ** attempt) # 指数退避 else: raise5.2 数据存储方案将爬取的数据保存到文件或数据库import csv import sqlite3 # CSV存储 def save_to_csv(data, filename): with open(filename, w, newline, encodingutf-8) as f: writer csv.DictWriter(f, fieldnamesdata[0].keys()) writer.writeheader() writer.writerows(data) # SQLite存储 def save_to_sqlite(data, db_file): conn sqlite3.connect(db_file) c conn.cursor() c.execute(CREATE TABLE IF NOT EXISTS products (name TEXT, price TEXT, shop TEXT, comments TEXT)) for item in data: c.execute(INSERT INTO products VALUES (?,?,?,?), (item[name], item[price], item[shop], item.get(comments, ))) conn.commit() conn.close()6. 总结与下一步建议通过本文的实践我们展示了如何利用Qwen2.5-Coder-1.5B快速生成功能完善的网页爬虫代码。这种AI辅助开发方式可以大幅提升开发效率特别是在需要快速原型开发的场景中。关键收获Qwen2.5-Coder能够理解自然语言需求并生成可运行的Python代码生成的代码基础功能完整但需要根据实际场景进行优化电商类网站爬取需要考虑反爬机制和动态内容加载下一步建议尝试更复杂的爬虫场景如登录认证、验证码处理等探索分布式爬虫架构提升爬取效率学习使用Scrapy等专业爬虫框架与AI生成代码结合注意事项遵守目标网站的robots.txt协议控制请求频率避免对目标网站造成过大负担注意数据使用的合法性尊重版权和隐私获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

Qwen2.5-Coder-1.5B应用案例:快速生成网页爬虫代码实战

Qwen2.5-Coder-1.5B应用案例:快速生成网页爬虫代码实战 1. 引言:为什么选择Qwen2.5-Coder生成爬虫代码 在日常开发工作中,网页爬虫是数据采集和分析的重要工具。传统编写爬虫代码需要开发者熟悉HTTP请求、HTML解析、反爬机制处理等多个技术…...

Qwen3.5-4B-Claude-Opus零基础上手:Web交互页面功能详解与最佳实践

Qwen3.5-4B-Claude-Opus零基础上手:Web交互页面功能详解与最佳实践 1. 模型与平台介绍 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF 是一个基于 Qwen3.5-4B 的推理蒸馏模型,特别强化了结构化分析、分步骤回答、代码与逻辑类问题的处理能力。…...

雪女-斗罗大陆模型案例分享:多种提示词生成不同风格雪女图

雪女-斗罗大陆模型案例分享:多种提示词生成不同风格雪女图 最近在体验“雪女-斗罗大陆-造相Z-Turbo”这个AI绘画模型时,我发现了一个特别有意思的现象:同样一个模型,用不同的提示词描述,能画出风格迥异的雪女形象。有…...

嵌入式多线程与多进程技术详解

嵌入式软件编程之多线程与多进程技术解析1. 操作系统任务调度基础1.1 时间片轮转调度机制现代操作系统(如Windows、Linux)普遍采用时间片轮转的抢占式调度方式。在这种机制下:每个任务执行固定长度的时间片后被强制暂停被暂停的任务进入就绪状…...

Madgwick算法详解:9轴IMU嵌入式姿态解算实战

1. Madgwick姿态解算算法库深度解析:面向9轴IMU的嵌入式实时姿态估计实现1.1 算法背景与工程定位Madgwick姿态解算算法由Sebastian Madgwick于2010年提出,是一种基于梯度下降优化的互补滤波器(Complementary Filter),专…...

从入门到精通:用OmenSuperHub打造专属惠普游戏本性能方案

从入门到精通:用OmenSuperHub打造专属惠普游戏本性能方案 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 🔍 问题发现:官方游戏控制中心的五大痛点 作为惠普OMEN游戏本用户,你…...

3大突破!115proxy-for-Kodi实现云视频原码播放全攻略

3大突破!115proxy-for-Kodi实现云视频原码播放全攻略 【免费下载链接】115proxy-for-kodi 115原码播放服务Kodi插件 项目地址: https://gitcode.com/gh_mirrors/11/115proxy-for-kodi 副标题:突破存储限制,零缓冲流畅播放云端高清视频…...

从格式枷锁到自由播放:ncmdumpGUI的NCM解码技术突围

从格式枷锁到自由播放:ncmdumpGUI的NCM解码技术突围 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 当你花费数小时精心收藏的音乐专辑在智能音箱上…...

终极Hasklig字体完全指南:如何通过编程连字技术提升代码可读性

终极Hasklig字体完全指南:如何通过编程连字技术提升代码可读性 【免费下载链接】Hasklig Hasklig - a code font with monospaced ligatures 项目地址: https://gitcode.com/gh_mirrors/ha/Hasklig Hasklig是一款专为编程设计的等宽字体,通过创新…...

Bolts-ObjC终极迁移指南:从1.8.x到1.9.1的平滑升级方案

Bolts-ObjC终极迁移指南:从1.8.x到1.9.1的平滑升级方案 【免费下载链接】Bolts-ObjC Bolts is a collection of low-level libraries designed to make developing mobile apps easier. 项目地址: https://gitcode.com/gh_mirrors/bo/Bolts-ObjC Bolts-ObjC是…...

7个步骤打造高效文件上传系统:Plupload零基础入门指南

7个步骤打造高效文件上传系统:Plupload零基础入门指南 【免费下载链接】plupload Plupload is JavaScript API for building file uploaders. It supports multiple file selection, file filtering, chunked upload, client side image downsizing and when necess…...

FastAPI安全防线:OAuth2 + JWT 实现无状态认证的完整流程

更多内容请见: 《Python Web项目集锦》 - 专栏介绍和目录 在现代Web应用开发中,安全认证是构建可靠API的基石。FastAPI通过其强大的安全组件,为开发者提供了实现安全、可扩展认证系统的工具。本文将深入剖析OAuth2与JWT在FastAPI中的整合实现,揭示无状态认证的完整流程,提…...

高效处理海量数据——pandas分块读取与内存管理实战

1. 为什么需要分块读取千万级数据? 第一次处理千万级CSV文件时,我盯着16GB的硬盘文件发愁——128GB内存的服务器居然加载到一半就崩溃了。这种场景在金融交易记录、物联网传感器数据、用户行为日志分析中太常见了。pandas默认的read_csv()会一次性把数据…...

告别BibTeX混乱:在LaTeX中精准控制单条参考文献格式(颜色、字体)的实战技巧

告别BibTeX混乱:在LaTeX中精准控制单条参考文献格式(颜色、字体)的实战技巧 学术写作中,参考文献的视觉呈现往往被忽视。当审稿人要求"突出显示新增文献"时,当需要区分自己的前期工作与奠基性研究时&#x…...

如何让Windows任务栏变透明?TranslucentTB完整教程指南

如何让Windows任务栏变透明?TranslucentTB完整教程指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 想要为你的Windows桌面…...

FastAPI状态管理:FastAPI 全局状态管理的 3 种最佳实践

更多内容请见: 《Python Web项目集锦》 - 专栏介绍和目录 在构建生产级FastAPI应用时,全局状态管理是确保资源高效利用和系统稳定性的关键。不当的状态管理可能导致资源泄漏、线程安全问题和不可预测的行为。本文将深入分析FastAPI中实现全局状态的三种最佳实践,揭示其底层机…...

Unity游戏模组革命:MelonLoader新手10分钟完全指南

Unity游戏模组革命:MelonLoader新手10分钟完全指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 你是否想过为喜爱…...

终极指南:如何在5分钟内完成你的第一个React Native动画模态框

终极指南:如何在5分钟内完成你的第一个React Native动画模态框 【免费下载链接】react-native-modal An enhanced, animated, customizable Modal for React Native. 项目地址: https://gitcode.com/gh_mirrors/re/react-native-modal React Native动画模态框…...

革新UE4资源管理:UnrealPakViewer全攻略

革新UE4资源管理:UnrealPakViewer全攻略 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer 作为UE4开发者,你是否曾为Pak文件的…...

终极指南:ZoneMinder开源监控系统的架构设计与核心组件解析

终极指南:ZoneMinder开源监控系统的架构设计与核心组件解析 【免费下载链接】zoneminder ZoneMinder is a free, open source Closed-circuit television software application developed for Linux which supports IP, USB and Analog cameras. 项目地址: https…...

Granite TimeSeries FlowState R1实战:基于卷积神经网络(CNN)的时序特征提取进阶

Granite TimeSeries FlowState R1实战:基于卷积神经网络(CNN)的时序特征提取进阶 你是不是也遇到过这样的问题?面对一长串传感器读数、股票价格波动或者服务器监控数据,感觉信息量巨大,却不知道从哪里入手…...

Simula:革命性Linux VR桌面窗口管理器完全指南

Simula:革命性Linux VR桌面窗口管理器完全指南 【免费下载链接】Simula Linux VR Desktop 项目地址: https://gitcode.com/gh_mirrors/si/Simula Simula是一款专为Linux系统打造的革命性VR桌面窗口管理器,它将传统的桌面操作体验带入虚拟现实空间…...

Jetson Orin上YOLOv8推理慢?手把手教你安装GPU版PyTorch并导出TensorRT引擎

Jetson Orin加速YOLOv8推理:从环境配置到TensorRT引擎优化实战 当你第一次在Jetson Orin上运行YOLOv8时,是否也被那令人窒息的推理速度震惊了?一张图片300多毫秒的处理时间,别说实时视频分析,就连批量处理图片都显得力…...

终极指南:如何用Locale Emulator轻松解决Windows多语言软件兼容性问题

终极指南:如何用Locale Emulator轻松解决Windows多语言软件兼容性问题 【免费下载链接】Locale-Emulator Yet Another System Region and Language Simulator 项目地址: https://gitcode.com/gh_mirrors/lo/Locale-Emulator 你是否曾经因为日文游戏乱码而烦恼…...

ncmdump:突破NCM格式限制的音频转换解决方案

ncmdump:突破NCM格式限制的音频转换解决方案 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 问题场景:数字音乐格式的兼容性困境 在流媒体音乐服务普及的今天,网易云音乐采用的NCM加密格式成为了…...

Bud错误处理终极指南:构建健壮Web应用的10个最佳实践

Bud错误处理终极指南:构建健壮Web应用的10个最佳实践 【免费下载链接】bud The Full-Stack Web Framework for Go 项目地址: https://gitcode.com/gh_mirrors/bu/bud Bud作为Go语言的全栈Web框架,其错误处理机制直接影响应用的稳定性和用户体验。…...

Phan静态分析工具:10个自动化代码质量检查的终极指南

Phan静态分析工具:10个自动化代码质量检查的终极指南 【免费下载链接】phan Phan is a static analyzer for PHP. Phan prefers to avoid false-positives and attempts to prove incorrectness rather than correctness. 项目地址: https://gitcode.com/gh_mirro…...

GTE-Pro物流应用:运单文本的智能处理

GTE-Pro物流应用:运单文本的智能处理 1. 物流行业的文本处理挑战 每天,物流公司都要处理海量的运单文本和客服对话。这些文本数据里藏着宝贵的信息,但传统的关键词匹配方法往往力不从心。 想象一下这样的场景:一个运单上写着&q…...

运维实战:思科NAT配置全解析与典型场景应用

1. 为什么企业网络离不开NAT技术 想象一下你公司的内网有200台电脑,但ISP只分配了5个公网IP地址——这就是NAT技术大显身手的场景。作为网络工程师,我处理过太多类似案例,最夸张的一个客户用1个公网IP支撑了整个500人办公区的上网需求。 NA…...

TypeScript迁移工具ts-migrate版本兼容性终极指南:如何确保JavaScript到TypeScript平滑升级

TypeScript迁移工具ts-migrate版本兼容性终极指南:如何确保JavaScript到TypeScript平滑升级 【免费下载链接】ts-migrate A tool to help migrate JavaScript code quickly and conveniently to TypeScript 项目地址: https://gitcode.com/gh_mirrors/ts/ts-migra…...