news 2026/7/24 6:38:11

【scrapy框架】爬取内容后写入数据库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【scrapy框架】爬取内容后写入数据库

0 基本逻辑

1创建项目 scrapy startproject 项目名字2cd 到spiders文件夹下3创建爬虫文件 scrapy genspider-t crawl 爬虫文件名字 爬取的域名

1 settings.py文件中设置日志文件

# 一般不采取这种方式# LOG_LEVEL = 'WARNING'# 推荐使用日志文件的方式LOG_FILE='log.log'

2 使用scrapy爬取读书网的中书的名字和图片地址

2.1 新建项目

scrapy startproject 项目名字

2.2 新建爬虫名字

scrapy genspidef 爬虫名字 域名# 域名,如www.baidu.com

2.3 在爬虫文件中写爬取逻辑

importscrapyfromscrapy.linkextractorsimportLinkExtractorfromscrapy.spidersimportCrawlSpider,Rulefromread_book.itemsimportReadBookItemclassReadbookSpider(CrawlSpider):name="read_book"allowed_domains=["www.dushu.com"]start_urls=["https://www.dushu.com/book/1188_1.html"]rules=(Rule(LinkExtractor(allow=r"/book/1188_\d+\.html"),callback="parse_item",follow=True),)defparse_item(self,response):img_list=response.xpath('//div[@class="bookslist"]//img')forimginimg_list:name=img.xpath('./@data-original').extract_first()src=img.xpath('./@alt').extract_first()book=ReadBook101Item(name=name,src=src)yieldbook

2.4 items.py文件中

importscrapyclassReadBookItem(scrapy.Item):name=scrapy.Field()src=scrapy.Field()

2.5 pipelines.py文件中

fromitemadapterimportItemAdapterfromscrapy.utils.projectimportget_project_settings# 加载settings文件importpymysqlclassReadBook101Pipeline:defopen_spider(self,spider):self.fp=open('book.json','w',encoding='utf-8')defprocess_item(self,item,spider):self.fp.write(str(item))returnitemdefclose_spider(self,spider):self.fp.close()classMysqlPipeline:defopen_spider(self,spider):settings=get_project_settings()self.host=settings['DB_HOST']self.user=settings['DB_USER']self.password=settings['DB_PASSWORD']self.name=settings['DB_NAME']self.port=settings['DB_PORT']self.charset=settings['DB_CHARSET']self.connect()defconnect(self,):self.conn=pymysql.connect(user=self.user,password=self.password,host=self.host,database=self.name,port=self.port,charset=self.charset,)self.cursor=self.conn.cursor()defprocess_item(self,item,spider):sql='insert into book(name,src) values("{}","{}")'.format(item['name'],item['src'])self.cursor.execute(sql)self.conn.commit()returnitemdefclose_spider(self,spider):self.cursor.close()self.conn.close()

2.6 settings文件中开启管道、配置数据库

DB_HOST='127.0.0.1'DB_PORT=3306DB_USER='root'DB_PASSWORD='root'DB_NAME='spider01'# utf-8不允许使用 - 否则会报错NoneType……DB_CHARSET='utf8'# Configure item pipelines# See https://docs.scrapy.org/en/latest/topics/item-pipeline.htmlITEM_PIPELINES={"read_book_101.pipelines.ReadBook101Pipeline":300,'read_book_101.pipelines.MysqlPipeline':301}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 15:40:14

抽奖机随机号码生成:3 种算法实现 + 测试全解析(附完整代码)

在《数据结构与算法 II》课程设计中,我以 “抽奖机随机号码序列生成” 为主题,实现了 3 种经典随机抽样算法,并完成了随机性验证。这篇文章会详细分享算法逻辑、代码实现、测试过程及课设收获,文末附完整可运行代码。一、需求与算…

作者头像 李华
网站建设 2026/7/23 17:18:31

LLM入门指南:预训练、SFT和强化学习三步构建ChatGPT式大模型

本文详细解析了构建ChatGPT式大模型的三步核心流程:预训练阶段通过海量互联网文本训练基础模型,预测下一个Token;监督微调阶段使用高质量对话数据集将基础模型转化为能对话的AI助手;强化学习阶段通过自主练习和探索提升模型复杂推…

作者头像 李华
网站建设 2026/7/24 5:34:31

LangChain v1.0 Runtime深度解析:构建可测试、可复用的大模型智能体

本文介绍了LangChain v1.0引入的Runtime核心概念,解决了传统Tool调用面临的工程化难题。Runtime作为Agent调用的运行时上下文环境,统一托管Context、Store和Stream Writer,通过依赖注入机制使工具可访问运行时信息。ToolRuntime成为工具内部访…

作者头像 李华
网站建设 2026/7/23 12:45:08

信息与关系:涌现的三大核心原则

第二十三章:涌现的三大核心原则将“涌现”从一个哲学概念转变为具体的物理机制,是理解它的关键。这个涌现过程并非魔法,而是遵循一套清晰的、可数学描述的原则。有读者问“涌现”是怎么实现的,有什么机制?我们可以通过…

作者头像 李华
网站建设 2026/7/20 22:57:41

c++狼人杀

#include<bits/stdc.h> #include<windows.h> #define /*白色*/white SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); #define /*初始色*/original SetConsoleTextAttribute…

作者头像 李华
网站建设 2026/7/23 19:45:48

50天50个小项目 (React19 + Tailwindcss V4) ✨ | DrawingApp(画板组件)

&#x1f4c5; 我们继续 50 个小项目挑战&#xff01;—— DrawingApp 组件 仓库地址&#xff1a;https://gitee.com/hhm-hhm/50days50projects.git 构建一个简单的在线画板应用。用户可以自由绘制图形、调节画笔粗细、选择颜色&#xff0c;并支持一键清空画布。 &#x1f30…

作者头像 李华