news 2026/4/16 16:19: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/16 14:27:12

大模型智能体自适应机制深度解析:从四象限策略到商业实践

文章解读了《Adaptation of Agentic AI》论文,提出了智能体自适应的统一框架,将适应策略分为智能体适应(A1/A2)和工具适应(T1/T2)两大维度。文章分析了这四种范式的特点、应用场景及权衡,并探讨…

作者头像 李华
网站建设 2026/4/15 22:51:31

10个AI写作工具,专科生论文写作轻松搞定!

10个AI写作工具,专科生论文写作轻松搞定! 论文写作不再难,AI 工具成新宠 随着人工智能技术的不断发展,越来越多的学生开始借助 AI 工具来提升论文写作效率。尤其是对于专科生来说,面对繁重的学术任务和严格的格式要求&…

作者头像 李华
网站建设 2026/4/16 14:31:38

圆形石子合并问题

在算法设计中,圆形石子合并问题是经典的动态规划应用场景之一。本文将详细讲解该问题的解法,并用 C 实现 3 种不同算法,最后对比它们的优劣。 一、问题描述 在圆形操场周围有 n 堆石子,每次只能合并相邻的 2 堆,合并…

作者头像 李华
网站建设 2026/4/16 12:28:21

12.20问题盘点

在匹配条件的时候完全就想少了,副对角线的特征就是行数加列数为总行数最开始写的循环条件是不等于\0,结果运行超时,很明显就是忘记了\0不是用户输入的,是电脑自带的键盘上是不存在这个输入的,就会导致根本输入就结束不了,输出就会…

作者头像 李华
网站建设 2026/4/16 15:37:14

2025年大模型使用全景图:6大趋势助你抢占AI先机

本文基于2025年全球LLM使用年报,揭示六大趋势:市场将形成开源与闭源双生态;代理式推理取代对话成为主流;编程跃升为第一大使用场景;用户更看重模型能力而非价格;模型需满足特定需求保持用户粘性&#xff1b…

作者头像 李华