【学习打卡】第11天 Scrapy打造搜索引擎 MySql表结构设计、pipeline数据库保存
2022/8/16 3:22:49
本文主要是介绍【学习打卡】第11天 Scrapy打造搜索引擎 MySql表结构设计、pipeline数据库保存,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称:Scrapy打造搜索引擎(分布式爬虫)
课程章节:MySql表结构设计、pipeline数据库保存
主讲老师:bobby
课程内容:
今天学习的内容包括:
MySql表结构设计、pipeline数据库保存
课程收获:
1.数据库设计
1.创建数据库
2.创建数据表——jobbole_article
1.安装mysql数据库驱动mysqlclient
1.pip install mysqlclient安装
2.本地安装—— https://www.lfd.uci.edu/~gohlke/pythonlibs/
2.Pipeline插入数据至Mysql
1.核心代码
class MySqlPipeline: def __init__(self): # 数据库连接 self.conn = MySQLdb.connect("127.0.0.1", "root", "qq276713", "article_spider", charset="utf8", use_unicode=True) self.cursor = self.conn.cursor() def process_item(self, item, spider): insert_sql = """ INSERT INTO jobbole_article(title, url, url_object_id, front_image_url, front_image_path, praise_num, comment_num, view_num, tags, content, create_time) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) ON DUPLICATE KEY UPDATE praise_num=VALUES(praise_num) """ params = list() params.append(item.get("title", "")) params.append(item.get("url", "")) params.append(item.get("url_object_id", "")) front_image = ",".join(item.get("front_image_url", [])) params.append(front_image) params.append(item.get("front_image_path", "")) params.append(item.get("praise_nums", 0)) params.append(item.get("comment_nums", 0)) params.append(item.get("view_nums", 0)) params.append(item.get("tags", "")) params.append(item.get("content", "")) params.append(item.get("create_date", "1970-07-01")) self.cursor.execute(insert_sql, tuple(params)) # 将list列表转化为tuple元组 self.conn.commit() # 提交至数据库 return item
2.运行截图
问题:
1.同步问题:MySQLdb也是一个同步库,因此在scrapy中尽量不要去写同步的代码,因此需要一个异步入库的方法解决同步的问题
原因:解析速度远远大于入库的速度,解析很多时候是CPU的操作,所以如果数据库很慢,数据库负耗很大,容易造成阻塞整个爬虫
这篇关于【学习打卡】第11天 Scrapy打造搜索引擎 MySql表结构设计、pipeline数据库保存的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程