企业网站页面,软文范例100字以内,网站宣传推广策划,为什么会有人攻击我用织梦做的网站本节内容主要为#xff1a; #xff08;1#xff09;创建数据库 #xff08;2#xff09;创建数据库表 #xff08;3#xff09;爬取数据进MYSQL库 1 新建数据库
使用MYSQL数据库存储数据#xff0c;创建一个新的数据库
create database scrapy_demo;2 新建数据表 CR… 本节内容主要为 1创建数据库 2创建数据库表 3爬取数据进MYSQL库 1 新建数据库
使用MYSQL数据库存储数据创建一个新的数据库
create database scrapy_demo;2 新建数据表 CREATE TABLE tb_tour (id INT AUTO_INCREMENT PRIMARY KEY COMMENT 自增主键,title VARCHAR(255) NOT NULL COMMENT 景点标题,title_en VARCHAR(255) COMMENT 景点英文标题,img VARCHAR(255) COMMENT 景点图片链接,score FLOAT COMMENT 景点评分,comments int COMMENT 景点评分数量,comment_url VARCHAR(255) COMMENT 评论链接,rank_title VARCHAR(255) COMMENT 排名标题,ranks INT COMMENT 景点排名,select_user VARCHAR(255) COMMENT 精选评论用户头像,select_comment TEXT COMMENT 精选评论
);3 增加常量
因为我们的表中新增了国家和城市的字段程序中可以通过常量传递过去新增一个constant.py。
NATION 日本
CITY 东京4 修改爬虫
爬虫qiongyou_3.py 有2处修改第一是指明驱动存储的路径。 def __init__(self, *args, **kwargs):super(QiongyouSpider, self).__init__(*args, **kwargs)options webdriver.ChromeOptions()# 这行代码是用于设置 Chrome 浏览器的选项。--headless 参数表示以无头模式(无 GUI 界面)运行 Chrome 浏览器。# 无头模式下,浏览器运行在后台,不会显示任何图形界面,从而能够提高爬取效率和性能。这在服务器环境中非常有用,因为服务器通常没有图形界面。options.add_argument(--headless)LOGGER.setLevel(logging.WARNING)# 这行代码是用于指定 ChromeDriver 的路径。ChromeDriver 是 Selenium 用于控制 Chrome 浏览器的驱动程序。service Service(/usr/local/bin/chromedriver)self.driver webdriver.Chrome(optionsoptions, serviceservice) # 替换为 ChromeDriver 的实际路径第二是对解析页面的时候新增城市和国家字段引入这2个常量就可以了。
item[city] CITY
item[nation] NATION5 修改pipelines
由于我们改造成MYSQL存储数据了因此修改原来的管道类只需要改个名字
# 保存excel
class TourFilePipeline:我们新增的管道类还是用原来的名字这样在配置文件中就不需要修改了在这边也可以看到scrapy的设计如果说我们想切换会保存excel 只需要改配置文件就可以是不需要改代码的下面给出我们新增的管道类。
安装pymysql
pip install pymysql编写管道类
import pymysql
import json# 保存mysql
class TourPipeline:def __init__(self):# 连接 MySQL 数据库self.db pymysql.connect(hostlocalhost,userroot,password***,databasescrapy_demo,charsetutf8)self.cursor self.db.cursor()def process_item(self, item, spider):# 检查数据是否已存在sql SELECT COUNT(*) FROM tb_tour WHERE title %sself.cursor.execute(sql, (item[title],))count self.cursor.fetchone()[0]if count 0:spider.log(fData already exists: {item[title]})return item# 插入新数据sql (INSERT INTO tb_tour (title, title_en, img, score, comments, comment_url, rank_title, ranks, select_user, select_comment, nation, city) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s))values (item[title],item[title_en],item[img],item[score],item[comment],item[comment_url],item[rank_title],item[rank],item[select_user],item[select_comment],item[nation],item[city])try:self.cursor.execute(sql, values)self.db.commit()spider.log(fSaved data: {item[title]})except pymysql.Error as e:self.db.rollback()spider.log(fError saving data: {item[title]} - {e})return itemdef close_spider(self, spider):self.cursor.close()self.db.close()6 运行爬虫
和上一期一样的运行方式
scrapy crawl qys3可以看到存储到MYSQL的效果
7 小结
通过四期的内容我们完成了如下内容
利用scrapy框架爬取【东京】景区列表页面进行html保存scrapy selenium 实现动态页面翻页解析景区数据存储到excel文件解析景区数据存储到MySQL数据库
后续这个系列还会更新的内容有
断点续爬功能的研究和实战图片下载到本地保存爬取景点评论 \ 景点详情页面结合爬取的数据搭建前后端分离的数据分析可视化系统
欢迎大家收藏关注