python天⽓爬⾍课程设计报告_Python爬⾍---2.4Scrapy之天⽓
预报爬⾍实践
编写PIPELINE:
我们知道,pipelines.py是⽤来处理收尾爬⾍抓到的数据的,
⼀般情况下,我们会将数据存到本地:
⽂本形式: 最基本的存储⽅式
json格式 :⽅便调⽤
数据库: 数据量⽐较⼤时选择的存储⽅式
TXT(⽂本)格式:
import os
import requests
import json
import codecs
import pymysql
class WeatherPipeline(object):
def process_item(self, item, spider):
print(item)
# print(item)
# 获取当前⼯作⽬录
base_dir = os.getcwd()
# ⽂件存在data⽬录下的⽂件内,data⽬录和txt⽂件需要⾃⼰事先建⽴好
filename = base_dir + '/'
# 从内存以追加的⽅式打开⽂件,并写⼊对应的数据
with open(filename, 'a') as f:
f.write(item['date'] + '\n')
f.write(item['temperature'] + '\n')免费下载mysql
f.write(item['weather'] + '\n')
f.write(item['wind'] + '\n\n')
return item
json格式数据:
我们想要输出json格式的数据,最⽅便的是在PIPELINE⾥⾃定义⼀个class:
class W2json(object):
def process_item(self, item, spider):
'''
讲爬取的信息保存到json
⽅便其他程序员调⽤
'''
base_dir = os.getcwd()
filename = base_dir + '/data/weather.json'
# 打开json⽂件,向⾥⾯以dumps的⽅式吸⼊数据
# 注意需要有⼀个参数ensure_ascii=False ,不然数据会直接为utf编码的⽅式存⼊⽐如:“/xe15”with codecs.open(filename, 'a') as f:
line = json.dumps(dict(item), ensure_ascii=False) + '\n'
f.write(line)
return item
数据库格式(mysql):
Python对市⾯上各种各样的数据库的操作都有良好的⽀持,
但是现在⼀般⽐较常⽤的免费数据库mysql。
在本地安装mysql:
linux和mac都有很强⼤的包管理软件,如apt,brew等等
window 可以直接去官⽹下载安装包。
由于我是Mac,所以我是说Mac的安装⽅式了。
$ brew install mysql
在安装的过程中,他会要求你填写root⽤户的密码,
这⾥的root并不是系统层⾯上的超级⽤户,是mysql数据库的超级⽤户。
安装完成后mysql服务是默认启动的,
如果重启了电脑,需要这样启动(mac):
$ mysql.server start
登录mysql并创建scrapy⽤的数据库:
# 登录进mysql
$ mysql -uroot -p
# 创建数据库:ScrapyDB ,以utf8位编码格式,每条语句以’;‘结尾
CREATE DATABASE ScrapyDB CHARACTER SET 'utf8';
# 选中刚才创建的表:
use ScrapyDB;
# 创建我们需要的字段:字段要和我们代码⾥⼀⼀对应,⽅便我们⼀会写sql语句
CREATE TABLE weather(
id INT AUTO_INCREMENT,
date char(24),
temperature char(24),
weather char(24),
wind char(24),
PRIMARY KEY(id) )ENGINE=InnoDB DEFAULT CHARSET='utf8'来看⼀下weather表长啥样:
show columns from weather
或者:desc weather
安装Python的mysql模块:
pip install pymysql
最后我们编辑与⼀下代码:
class W2mysql(object):
def process_item(self, item, spider):
'''
将爬取的信息保存到mysql
'''
# 将item⾥的数据拿出来
date = item['date']
temperature = item['temperature']
weather = item['weather']
wind = item['wind']
# 和本地的scrapyDB数据库建⽴连接
connection = t(
host='127.0.0.1', # 连接的是本地数据库
user='root', # ⾃⼰的mysql⽤户名
passwd='********', # ⾃⼰的密码
db='ScrapyDB', # 数据库的名字
charset='utf8mb4', # 默认的编码⽅式:
cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
# 创建更新值的sql语句
sql = """INSERT INTO WEATHER(date,temperature,weather,wind)
VALUES (%s, %s, %s, %s)"""
# 执⾏sql语句
# excute 的第⼆个参数可以将sql缺省语句补全,⼀般以元组的格式ute(
sql, (date, temperature, weather, wind))
# 提交本次插⼊的记录
connectionmit()
finally:
# 关闭连接
connection.close()
return item
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论