利用python爬取数据并保存到MySQL中
本文在Ubuntu环境下使用Docker搭建了MySQL和Python环境,并从高德地图交通态势图接口获取交通数据保存到MYSQL数据库中。本文罗列了配置过程中的常见问题。
步骤
1 进入服务器
登入阿里云
ssh root@地址 -P
2 搭建MYSQL环境
docker安装MySQL地址:菜鸟教程-docker安装MySQL
注: 如果使用以下mysql -h localhost -u root -p
命令无法连接数据库,可以使用命令mysql -h 127.0.0.1 -u root -p
3 创建数据库和数据表
- 创建数据库 TRAFFIC_DATA:
CREATE DATABASE 数据库名;
- 进入数据库
use TRAFFIC_DATA;
- 创建数据库表:
CREATE TABLE TRAFFIC_DATA (traffic_data_id INT UNSIGNED AUTO_INCREMENT,time CHAR(25),status CHAR(1) NOT NULL,info CHAR(255),infocode CHAR(20),trafficinfo_description TEXT,trafficinfo_evaluation_expedite CHAR(10),trafficinfo_evaluation_congested CHAR(10),trafficinfo_evaluation_blocked CHAR(10),trafficinfo_evaluation_unknown CHAR(10),trafficinfo_evaluation_status CHAR(1),trafficinfo_evaluation_description CHAR(255),PRIMARY KEY (traffic_data_id));CREATE TABLE ROADS(road_id INT UNSIGNED AUTO_INCREMENT,time CHAR(25),name CHAR(255),road_status CHAR(1),direction CHAR(100),angle CHAR(10),speed CHAR(10),lcodes CHAR(255),polyline TEXT,PRIMARY KEY (road_id));
注: 若表中含有text类型的属性,需要执行ALTER TABLE TRAFFIC_DATA CONVERT TO CHARACTER SET utf8mb4;
命令,改变编码类型,相应的在python代码中,连接数据库时也要设置。
db = pymysql.connect(host="localhost", user="root", password="123456", database="TRAFFIC_DATA", charset="utf8mb4")
问题参考地址
4 搭建python环境
Docker安装Python:Docker安装Python
5 编写爬虫
进入用户自己的文件夹创建traffic_data.py
cd /home
cd zl(你自己创建的文件夹)
# 可以用以下命令创建文件夹
mkdir 文件夹名
# 创建文件
vim traffic_data.py
traffic_data.py
import pymysql
import requests
import json
import timedef getData(url):req = requests.get(url)data = json.loads(req.text)return data# Press the green button in the gutter to run the script.
if __name__ == '__main__':url = "https://restapi.amap.com/v3/traffic/status/rectangle?key=166e4acf928205052a530019a0d98a55&rectangle=121.370178,31.194181;121.434894,31.239471&extensions=all"db = pymysql.connect(host="localhost", user="root", password="123456", database="TRAFFIC_DATA", charset="utf8mb4")cursor = db.cursor()while True:time.sleep(1)data = getData(url)ticks = time.time()trafficSql= """INSERT INTO TRAFFIC_DATA(time, status , info, infocode, trafficinfo_description, trafficinfo_evaluation_expedite, trafficinfo_evaluation_congested, trafficinfo_evaluation_blocked, trafficinfo_evaluation_unknown, trafficinfo_evaluation_status, trafficinfo_evaluation_description)VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')""" % (ticks, data['status'], data['info'], data['infocode'], data['trafficinfo']['description'], data['trafficinfo']['evaluation']['expedite'], data['trafficinfo']['evaluation']['congested'], data['trafficinfo']['evaluation']['blocked'], data['trafficinfo']['evaluation']['unknown'], data['trafficinfo']['evaluation']['status'], data['trafficinfo']['evaluation']['description'])# try:cursor.execute(trafficSql)db.commit()# except:# print("INSERT TRAFFIC_DATA ERROR")count = 0for x in data['trafficinfo']['roads']:try:speed = x['speed']except:speed = -1InsertRoadSql = """INSERT INTO ROADS(time, name, road_status, direction, angle, speed, lcodes, polyline)VALUES ('%s','%s','%s','%s','%s','%s','%s','%s')""" % (ticks, x['name'], x['status'], x['direction'], x['angle'], speed, x['lcodes'], x['polyline'])# try:cursor.execute(InsertRoadSql)db.commit()# except:# print("INSERT ROADS ERROR")db.close()
6 在Ubuntu下后台持续运行Python程序
nohup python3 traffic_data.py &
参考博客地址
7 杀掉进程
[root@izuf631j25k1f0qea8yp97z zl]ps -ef | grep python
root 824 1 0 2020 ? 00:41:33 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 17627 1 4 21:54 ? 00:02:32 python3 traffic_data.py
root 17714 17674 0 22:57 pts/0 00:00:00 grep --color=auto python
[root@izuf631j25k1f0qea8yp97z zl]#kill -9 17627
利用python爬取数据并保存到MySQL中相关推荐
- Beautifulsoup爬取起点中文网 保存到mysql
一.分析网页 目标网站:起点中文网 目标数据:类别(categoryName)小说书名(bookName) 小说链接(middleUrl)字数(wordsNums) 作者(updateTiems) 最 ...
- 实现多线程爬取数据并保存到mongodb
多线程爬取二手房网页并将数据保存到mongodb的代码: import pymongo import threading import timefrom lxml import etree impor ...
- mysql把游标数据存入表中_利用Python爬股票数据并存入数据库Mysql
直接上代码,小白也能爬股票......... import tushare as ts import mysql.connector import re,time #创建所有股票的表格以及插入每支股票 ...
- python股票数据库_利用Python爬股票数据并存入数据库Mysql
直接上代码,小白也能爬股票......... import tushare as ts import mysql.connector import re,time #创建所有股票的表格以及插入每支股票 ...
- python输出数据到excel-如何使用python将传感器数据输出保存到excel中
我目前正在使用raspberry pi并使用DHT11每秒读取温度和湿度值.我必须将这些值实时保存到数据库中.这是我每秒钟显示传感器数据的代码,我不知道如何在excel中保存数据/结果. import ...
- 利用Python爬取国家水稻数据中心的品种数据
利用Python爬取国家水稻数据中心的品种数据 一.页面获取 python可以进行对网页的访问,主要用到requests,beautifulsoup4包. 首先新建一个page的py文件,用来获取页面 ...
- Python爬虫练习 爬取网络小说保存到txt
原文链接:https://yetingyun.blog.csdn.net/article/details/107916769 创作不易,未经作者允许,禁止转载,更勿做其他用途,违者必究. 利用 Pyt ...
- python爬取小说写入txt_Python爬虫练习 爬取网络小说保存到txt
利用python爬虫爬取网络小说保存到txt,熟悉利用python抓取文本数据的方法. 选取其中某一章,检查网页,可以找到这本小说所有章节的链接和名称. 写出xpath表达式提取出href里的内容:/ ...
- 爬取链家网二手房数据并保存到mongodb中
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 爬取链家网二手房数据并保存到mongodb中 文章目录 前言 一.爬虫的介绍 二.协程的介绍 三.css选择器 四.基于asyncio ...
- python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?
第一步:爬取数据 通过 selenium + Firefox 的无头模式将需要的数据爬取出来,代码实现不在赘述,详细步骤可查看我的上一篇图文(如何利用Python爬取网易新闻), 由于 seleniu ...
最新文章
- 路由策略与策略路由的区别。
- 程序员是复制粘贴的工具人?还是掌握“谜底”的魔术师?
- mysql5.7复制集_mysql--replication复制集典型配置
- R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)
- java thread通知_JAVA 多线程(6):等待、通知 (1)
- Leetcode刷题 463题:岛屿的周长(基于Java语言)
- Magento 模版路径
- 服务器系统tcpip.sys,tcpip.sys
- Spring整合Hibernate图文步骤
- 敏捷软件开发实践-Sprint Setup Meeting
- 每日程序C语言43-链表原地逆置
- 用ClusterSSH管理多台Linux服务器(2)
- MatCaffe问题: make matcaffe 'matlab/+caffe/private/caffe_.mexa64' failed
- 通过bocker把项目部署到容器后,也启动了镜像,但是浏览器报错网址连接不安全,建立安全连接失败,SSL接收到了一个超出最大准许长度的记录
- python程序语言二级教程_计算机二级python学习教程(2) python语言基本语法元素...
- 2020中国数据智能产业图谱1.0版发布丨数据猿产业全景图
- 平衡小车之家--风力摆开箱实录(附资料)
- html文件类型怎么改,更改文件类型,教您文件类型如何更改
- 苹果手机备忘录html转pdf,苹果手机自带的扫描仪,一键便能转成PDF文件,你不会才知道吧...
- 聊聊我在新加坡生活和工作的体验
热门文章
- 个人作业4 结对开发地铁
- STM32F103_study62_The punctual atoms(Clock system initialization function analysis)
- 区块链上的中国?2018见分晓
- 西门子1500更改IP地址
- DICOM中窗宽窗位含义
- vsftp创建虚拟账户
- oracle导出自增设置,教程方法;oracle中如何设置自增主键电脑技巧-琪琪词资源网...
- Cloud Native 演进可行性研究
- c语言choice的用法,名词choice的用法与搭配
- 2022-2027年中国酒店餐饮行业市场调研及未来发展趋势预测报告