【Python实战案例】爬虫项目实例(附赠源码)
文章目录
- 声明
- 安装必要的库
- 项目结构
- 技术细节
- 小结
声明

请您遵守网站的robots文件规定,本文目的只是做学习交流使用,包括多个模块,例如数据存储、日志记录、错误处理、多线程或异步请求
安装必要的库
pip install requests beautifulsoup4 sqlite3
项目结构
创建以下文件和目录结构
my_crawler/
├── config.py
├── crawler.py
├── db.py
├── logger.py
└── main.py
技术细节
配置文件 config.py
配置文件用于存储常量和配置项:
BASE_URL = 'https://example.com'
ARTICLES_URL = f'{BASE_URL}/articles'
DATABASE_NAME = 'articles.db'
LOG_FILE = 'crawler.log'
1.数据库操作 db.py
用于创建数据库表和插入数据:
#db.pyimport sqlite3
from config import DATABASE_NAMEdef init_db():conn = sqlite3.connect(DATABASE_NAME)cursor = conn.cursor()cursor.execute('''CREATE TABLE IF NOT EXISTS articles (id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT NOT NULL,url TEXT NOT NULL)''')conn.commit()conn.close()def insert_article(title, url):conn = sqlite3.connect(DATABASE_NAME)cursor = conn.cursor()cursor.execute('INSERT INTO articles (title, url) VALUES (?, ?)', (title, url))conn.commit()conn.close()
2.日志记录 logger.py
用于配置日志记录:
logger.pyimport logging
from config import LOG_FILEdef setup_logger():logging.basicConfig(filename=LOG_FILE,level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s')logger = setup_logger()
3.爬虫逻辑 crawler.py
包含爬虫的主要逻辑:
crawler.pyimport requests
from bs4 import BeautifulSoup
from config import ARTICLES_URL
from db import insert_article
from logger import loggerdef fetch_page(url):"""获取网页内容"""try:response = requests.get(url)response.raise_for_status() # 检查请求是否成功return response.textexcept requests.RequestException as e:logger.error(f"请求错误: {e}")return Nonedef parse_html(html):"""解析HTML,提取文章标题和URL"""soup = BeautifulSoup(html, 'html.parser')articles = []for article in soup.find_all('div', class_='article'):title = article.find('h1', class_='article-title').get_text(strip=True)url = article.find('a')['href']articles.append((title, url))return articlesdef crawl_articles():"""抓取并保存文章"""html = fetch_page(ARTICLES_URL)if html:articles = parse_html(html)for title, url in articles:insert_article(title, url)logger.info(f"已保存文章: {title} - {url}")
- 主程序 main.py
启动爬虫的主程序:
main.pyfrom crawler import crawl_articles
from db import init_db
from logger import loggerdef main():logger.info("开始爬虫任务")init_db()crawl_articles()logger.info("爬虫任务完成")if __name__ == '__main__':main()
小结
请您遵守网站的robots文件规定,本文目的只是做学习交流使用,感谢csdn平台
相关文章:
【Python实战案例】爬虫项目实例(附赠源码)
文章目录 声明安装必要的库项目结构技术细节小结 声明 请您遵守网站的robots文件规定,本文目的只是做学习交流使用,包括多个模块,例如数据存储、日志记录、错误处理、多线程或异步请求 安装必要的库 pip install requests beautifulsoup4 sq…...
PDF多功能工具箱 PDF Shaper v14.6
如今对PDF处理的软件很多都是只是单一的功能。PDF Shaper给你完全不同的体验,因为PDF Shaper是一款免费的PDF工具集合的软件。有了PDF Shaper,你以后再也不用下载其他处理PDF的软件了。PDF Shaper的功能有:合并,分割,加…...
Jupyter Notebook添加kernel的解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
Linux 无名管道
无名管道(unnamed pipe)是一种进程间通信的方式,通常用于父子进程之间的通信。下面是使用无名管道的基本步骤: pipe 调用的返回值如下: 成功时:pipe 调用成功时返回 0。失败时:如果 pipe 调用…...
Java项目实战II基于Spring Boot的药店管理系统的设计与实现(开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着医疗行业的快速发展和人们对健康需…...
前端拖拽库方案之react-beautiful-dnd
近期,知名 React 拖拽库 react-beautiful-dnd 宣布了项目弃用的决定,未来将不再维护。这一决定源于其存在的缺陷与局限性,促使作者转向开发一个更加现代化的拖拽解决方案——Pragmatic drag and drop(下面会介绍)&…...
【题解】CF2033G
题目 CF2033G 分析 一道很显然是树形dp的题,但非常恶心QwQ。 先不管复杂度,找找递推关系,一种很直接的想法如下(我觉得是错误的): d p [ i ] [ k ] m a x ( d p [ f a i ] [ k − 1 ] , d p [ s o …...
【error】 react 控制台报错Invalid hook call
目录 事件起因解决办法结束语 事件起因 我的前端react ant-design-pro项目能正常启动 但是网页这边就是一片空白,然后在浏览器的控制台报错: index.js:1 Warning: Invalid hook call. Hooks can only be called inside of the body of a function co…...
SDL基本使用
#include <stdio.h>#include <SDL.h>#undef main int main() {printf("Hello World!\n");SDL_Window *window NULL; // 声明窗口SDL_Init(SDL_INIT_VIDEO); // 初始化SDL// 创建SDL Windowwindow SDL_CreateWindow("Basic Window"…...
大模型的temperature参数
目录 模型的temperature参数 一、定义与作用 二、工作原理 三、举例说明 四、应用场景与调整策略 五、注意事项 模型的temperature参数 是人工智能领域中,特别是在生成式模型中使用的一个重要概念。它主要用于控制生成结果的多样性和随机性。以下是对该参数的详细解释和…...
软件项目功能复用指南,复用方案,评估方案(word原件)
6 复用原则 6.1 单一职责原则 SRP (Single Responsibility Principle) 6.2 开放封闭原则 OCP (Open Closed Principle) 6.3 Liskov 替换原则 LSP (Liskov Subtitle Principle) 6.4 接口隔离原则 ISP &a…...
leetcode 3255 长度为 K 的子数组的能量值 II 中等
给你一个长度为 n 的整数数组 nums 和一个正整数 k 。 一个数组的 能量值 定义为: 如果 所有 元素都是依次 连续 且 上升 的,那么能量值为 最大 的元素。否则为 -1 。 你需要求出 nums 中所有长度为 k 的 子数组 的能量值。 请你返回一个长度为 n …...
CCS下载安装(以12.3.0版本为例)
Code Composer Studio 是一个集成开发环境 (IDE),简称CCS软件。支持 TI 的微控制器和嵌入式处理器产品的开发。Code Composer Studio 包含一整套用于开发和调试嵌入式应用程序的工具。 CCS9.3.0及以上版本不需要License文件,但是CCS旧版本比如CCS5.5.0需…...
C++STL容器详解——list
目录 一.list 1.list的介绍 2.为什么会有list? 二.list的常见接口 1.list的构造函数 2.list的遍历 3.迭代器类型 4.list的头插头删和尾插尾删 5.list任意位置的插入和删除 6.list的sort()及reverse() 7.迭代器失效 三.整体代码 一.list 1.list的介绍 list的文档说…...
linux tar 打包为多个文件
将目录打包成多个大小为 80MB 的文件,可以使用以下命令: tar -cf - my_folder | split -b 80m - my_folder.tar.解释: tar -cf - my_folder 将 my_folder 目录打包成一个 tar 文件并通过管道 (|) 输出到标准输出。 split -b 80m - my_fold…...
json字符串与python字典的区别与联系
json字符串与python中自带的字典类型外表长的很像,很容易区分不清楚,它们之间有着本质的区别,可以通过内置的json模块来互相转换。 文章目录 1、Python字典2、JSON数据格式3、JSON与python字典的区别4、JSON与python字典相互转换4.1 json字符…...
数据结构-链表【chapter1】【c语言版】
目录 1 链表的优势: 2 链表的组成: 3.一般使用结构体的形式来实现链表: 4.单向链表实现(创建,遍历,释放): 4.1代码关键点备注: 5.查找节点: 5.1.按值查找节点 5.2.按位置查找节点 5.3 …...
OJ05:989. 数组形式的整数加法
目录 题目思路分析代码展示 题目 整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。 例如,对于 num 1321 ,数组形式是 [1,3,2,1] 。 给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num k 的 数组形…...
山东布谷科技:关于直播源码|语音源码|一对一直播源码提交App Store的流程及重构建议
自从YY、六间房开启国内聊天室和秀场等网红盛行的网络红利时代以来,紧随其后国内各大音视频平台相应出现,先有映客花椒等直播平台的风头正劲,后有功能板块更丰富的头条抖音Tiktok等,盈利功能点不仅仅有直播PK连麦等礼物打赏功能&a…...
docker搭建guacamole,web远程桌面
Apache Guacamole 是一个客户端无插件的远程桌面网关。它支持标准协议,如 VNC、RDP 和 SSH。您可以使用任何现代 web 浏览器连接到您的桌面环境,而无需安装额外的软件。使用 Docker Compose 部署 Guacamole,如果没有docker-compose请先执行su…...
系统内存报告
used_mem$(free | grep Mem | tr -s ""|cut -d "" -f3) total_mem$(free | grep Mem | tr -s ""|cut -d "" -f2) percent$(($used_mem * 100 / $total_mem)) [[ $percet -gt 50 ]] && echo "内存告警" ||echo "…...
影刀RPA 企业级专题篇:自动化系统中的日志平台与链路追踪设计实践
影刀RPA 企业级专题篇:自动化系统中的日志平台与链路追踪设计实践 作者:林焱 很多自动化系统在小规模阶段。 其实不太依赖“日志体系”。 流程跑起来。 失败了看一下控制台。 基本就够用了。 但当系统进入企业级规模以后。 日志会从“辅助功能”…...
【限时解密】ElevenLabs未公开的马来文SSML扩展语法:支持“Johor-Riau变体”、“Kedah重音标记”及连读停顿控制
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs马来文语音合成的技术演进与本地化挑战 ElevenLabs自2022年推出多语言TTS服务以来,持续扩展其语音模型对东南亚语言的支持能力。马来文(Bahasa Melayu)作为…...
高效解包Godot游戏资源:PCK文件解析与自动化提取实战指南
高效解包Godot游戏资源:PCK文件解析与自动化提取实战指南 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker Godot游戏资源解包是游戏开发者和逆向工程师经常面临的技术挑战。本文将深入介绍…...
终极Limbus Company自动化助手:AhabAssistantLimbusCompany完整使用指南
终极Limbus Company自动化助手:AhabAssistantLimbusCompany完整使用指南 【免费下载链接】AhabAssistantLimbusCompany AALC,PC端Limbus Company小助手。AALC,Limbus Company Assistant on PC 项目地址: https://gitcode.com/gh_mirrors/ah…...
初次使用Taotoken模型广场进行选型与测试的直观感受
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初次使用Taotoken模型广场进行选型与测试的直观感受 作为一名需要接入大模型能力的开发者,面对市场上众多的模型提供商…...
OpenClaw 本地部署避坑指南|环境配置 + 故障排查全流程
🦞 OpenClaw 本地部署避坑指南|环境配置 故障排查全流程 开源 AI 自动化工具OpenClaw(小龙虾) 凭借本地私有化部署、无侵入系统交互、全流程自动化执行等核心特性,在开发者社区快速普及。轻量化架构与高扩展性&#…...
经营分析——解读集团经营分析报告框架【附全文阅读】
集团经营分析报告框架推介总结 适应人群:集团高管、经营管理部、财务负责人、各业务单元负责人、经营分析专员、数据分析师及战略规划人员。 重要性总结:本 PPT 是集团级经营分析的标准化、体系化顶层框架,构建 “战略 — 环境 — 业绩 — 问…...
Solidity 知识点速记整理 - (2026年) (75 - 94)
文章目录前言Solidity 知识点速记整理 - (2026年) (75 - 94)前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。 而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那…...
AI应用哪家性价比高
在当前数字化转型浪潮中,企业纷纷寻求AI应用来降本增效,但面对市场上琳琅满目的产品,“AI应用哪家性价比高”成为决策者最纠结的问题。性价比并非单纯的价格对比,而是功能、效率、易用性与实际价值的综合考量。本文将从行业痛点出…...
