Scrapy框架(5):翻页操作、数据库存储以及简单的数据可视化

Scrapy框架(5):翻页操作、数据库存储以及简单的数据可视化

一、翻页

在这里插入图片描述
点击href属性的值是可以直接进入第二页的,url的变化也就是“/sitehome/p/”后的页码值而已,所以采用的是urljoin的方法,urlljoin的第一个参数是基础母站的url,第二个是需要拼接成绝对路径的url。
在这里插入图片描述
爬虫逻辑的文件下在parse解析函数下继续写:

next=response.url
next_page=int(next.strip('/').split('pg')[1]) + 1
url=urljoin(response.url,"/ershoufang/pg"+str(next_page))
if next_page==101:
    return 0
yield scrapy.Request(url, callback=self.parse)

需要注意的是parse()和parse的区别

二、存数据库

对数据的操作要写在pipelines.py中,pymysql的使用可以查看pymysql的使用(pycharm与mysql的连接),其中有pymysql的具体操作流程以及全部代码。
黑窗口创建数据库的流程

mysql -uroot -p

之后会提示输入密码

create database 数据库名称   # 创建数据库
use 数据库名称  # 进入数据库
create table 表名(列名 类型 primary key/not null)  # 创建表

pipelines.py部分的代码

    def __init__(self):  # 连接到数据库
        self.conn = pymysql.connect(host='127.0.0.1', database='数据库名称', user='root', password='密码')
        self.cursor = self.conn.cursor()

    def process_item(self, item, spider):
        with open("json文件名称", "a+")as f:  # 前端后端数据的交换格式
            f.write(str(item._values))

        insert_sql = "insert into 表名 (列名) values (%s与列名对应)"

        # 执行插入数据到数据库操作
        self.cursor.execute(insert_sql, (
        item['items声明的名字']))
        # 提交,不进行提交无法保存到数据库
        self.conn.commit()

        return item

三、可视化

pyecharts(推荐):https://pyecharts.org/#/
matplotlib:python3数据分析与挖掘建模:数据可视化——直方图、折线图、饼图

1、将数据从数据库中提取出来

和pipelines.py在同一路径

#coding=gbk
import pymysql

def select():
    nums = []
    positions=[]  # 根据自己的需要修改
    connect = pymysql.connect(host='127.0.0.1', database='数据库名称', user='root', password='密码')
    sql = "select position,count(*) from info group by position"  # 根据自己的需要修改
    cursor = connect.cursor()
    cursor.execute(sql)
    for row in cursor.fetchall():
        position = row[0]
        num = row[1]
        nums.append(num)
        positions.append(position)  # 根据自己的需要修改
    cursor.close()
    connect.close()

    return positions,nums  # 根据自己的需要修改

2、绘图

和爬虫逻辑同一路径,此处我根据我的数据绘制的是柱状图,大家可以根据pyecharts的文档选择自己需要的图表。

#coding=gbk
from pyecharts.charts import Bar    #柱状图的
from pyecharts import options   #标题设置的
from FinalProject.可视化 import select

position,num = select() #获取数据库数据

bar = Bar()

#添加标题
bar.set_global_opts(
    title_opts=options.TitleOpts(title="柱状图",subtitle="各地区二手房分布"),
)

#x轴显示地区
bar.add_xaxis(position)
#y轴显示数量
bar.add_yaxis("数量",num)
# 打印输出图表的所有配置项
bar.show_config()
# 生成的html文件
bar.render("positionInfo.html")  # 不建议没有html基础的同学选择这个办法,执行到上一步即可

时间太紧啦!没空细写,有问题可以私信~

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值