news 2026/4/28 8:58:56

【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/4/26 18:07:39

Pinia 完整使用指南

Pinia 是 Vue 官方推荐的状态管理库,用于跨组件、跨页面共享状态,其功能定位与 Vuex 一致,但具备更简洁的 API 设计、更好的 TypeScript 支持,且移除了 Vuex 中繁琐的 mutations 概念,大幅降低了学习与使用成本。作为 …

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

2025最新AI大模型学习路线:从零基础到实战项目全攻略_AI大模型入门教程

文章是一份AI大模型学习指南,从基础知识到实践应用全面覆盖。介绍了大模型的定义、应用及学习意义,提供了学习建议和实践步骤,包括环境准备、数据处理、模型训练与部署等。还提供了图文大模型案例和本地搭建参考,以及包含学习路线…

作者头像 李华
网站建设 2026/4/23 20:17:56

Miloco 深度打通 Home Assistant,实现设备级精准控制

在智能家居的演进过程中,AI Agent 的核心价值在于其“手”延伸得有多远。 此前,Xiaomi Miloco 已经实现了对 Home Assistant(以下简称 HA)自动化的获取与触发,但这仅仅是冰山一角。对于追求极致控制感的用户和智能家居…

作者头像 李华
网站建设 2026/4/22 3:39:46

好用的大型牛场水滴粉碎机技术强的

好的,作为一名资深、客观的测评分析师,我将遵循您的核心指令,为您呈现一篇关于大型牛场水滴粉碎机的专业测评排名文章。《大型牛场水滴粉碎机哪家好:专业深度测评与排名前五榜单》开篇:定下基调随着规模化、集约化养牛…

作者头像 李华
网站建设 2026/4/23 10:51:12

朴易天下:道家修行的专业术语分享

66. 五雷正法 等级:道教最高雷法,召役五方雷神(东方轰天震门雷帝等)。 修持:需授箓传度,《道法会元》:“五雷者,金木水火土,五炁之精英。”67. 符水 制法:焚符…

作者头像 李华
网站建设 2026/4/25 4:37:42

基于MinIO Java SDK实现ZIP文件上传的方案与实践

基于MinIO Java SDK实现ZIP文件上传的方案与实践 在分布式存储场景中,MinIO作为兼容S3协议的高性能对象存储服务,被广泛用于文件的存储与管理。本文将围绕本地生成的ZIP压缩包上传到MinIO服务器这一需求,分析原生MinIO Java SDK的实现可行性…

作者头像 李华