Scrapy框架(5):翻页操作、数据库存储以及简单的数据可视化
Scrapy框架(5):翻页操作、数据库存储以及简单的数据可视化一、翻页二、存数据库三、可视化1、将数据从数据库中提取出来2、绘图一、翻页点击href属性的值是可以直接进入第二页的,url的变化也就是“/sitehome/p/”后的页码值而已,所以采用的是urljoin的方法,urlljoin的第一个参数是基础母站的url,第二个是需要拼接成绝对路径的url。爬虫逻辑的文件下在parse解析函数下
·
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基础的同学选择这个办法,执行到上一步即可
时间太紧啦!没空细写,有问题可以私信~
更多推荐
所有评论(0)