#环境:CentOS Linux release 7.5.1804 (Core) mini安装,使用python2.7

#使用pucurl对输入的url地址进行测试,将结果存放到mysql中,代码来之网上收集并自行修改

#!/usr/bin/env python
# -*- coding: utf-8 -*- import MySQLdb
import os,sys
import time
import sys
import pycurl
import datetime now = datetime.datetime.now() class joincontents:
def __init__(self):
self.contents = ''
def callback(self,curl):
self.contents = self.contents + curl
#self.contents = self.contents + curl.decode('utf-8') def curlurl(url):
t = joincontents()
c = pycurl.Curl()
c.setopt(pycurl.WRITEFUNCTION,t.callback)
c.setopt(pycurl.ENCODING, 'gzip')
c.setopt(pycurl.URL,url)
c.perform() SQL_NAMELOOKUP_TIME = c.getinfo(c.NAMELOOKUP_TIME)*1000
SQL_CONNECT_TIME = c.getinfo(c.CONNECT_TIME)*1000
SQL_PRETRANSFER_TIME = c.getinfo(c.PRETRANSFER_TIME)*1000
SQL_STARTTRANSFER_TIME = c.getinfo(c.STARTTRANSFER_TIME)*1000
SQL_TOTAL_TIME = c.getinfo(c.TOTAL_TIME)*1000
SQL_HTTP_CODE = c.getinfo(c.HTTP_CODE)
SQL_SIZE_DOWNLOAD = c.getinfo(c.SIZE_DOWNLOAD)
SQL_HEADER_SIZE = c.getinfo(c.HEADER_SIZE)
SQL_SPEED_DOWNLOAD=c.getinfo(c.SPEED_DOWNLOAD) #print("HTTP状态码:%s" %(SQL_HTTP_CODE))
#print("DNS解析时间:%.2f ms"%(SQL_NAMELOOKUP_TIME))
#print("建立连接时间:%.2f ms" %(SQL_CONNECT_TIME))
#print("准备传输时间:%.2f ms" %(SQL_PRETRANSFER_TIME))
#print("传输开始时间:%.2f ms" %(SQL_STARTTRANSFER_TIME))
#print("传输结束总时间:%.2f ms" %(SQL_TOTAL_TIME))
#print("下载数据包大小:%d bytes/s" %(SQL_SIZE_DOWNLOAD))
#print("HTTP头部大小:%d byte" %(SQL_HEADER_SIZE))
#print("平均下载速度:%d bytes/s" %(SQL_SPEED_DOWNLOAD)) con = MySQLdb.connect(host="localhost", user="root", passwd="password", db="urlrecord", port=3306)
con.autocommit(1)
cur = con.cursor() try:
sql_isp_name = "ispname" sql = "insert into checkspeed (check_date, destinations_url, isp_name, http_code, namelookup_time, connect_time, \
pretransfer_time, starttransfer_time, total_time, size_down, header_size, speed_down ) \
values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"% (now,url,sql_isp_name,SQL_HTTP_CODE,SQL_NAMELOOKUP_TIME, \
SQL_CONNECT_TIME,SQL_PRETRANSFER_TIME,SQL_STARTTRANSFER_TIME,SQL_TOTAL_TIME,SQL_SIZE_DOWNLOAD,SQL_HEADER_SIZE,SQL_SPEED_DOWNLOAD) cur.execute(sql)
stus = cur.fetchall() except:
import traceback
traceback.print_exc()
con.rollback()
finally:
cur.close()
con.close() if __name__ == '__main__':
for urladdress in open(r'url_list.txt').readlines():
url = urladdress.strip('\n')
curlurl(url)
#将需要测速的url地址放入url_list.txt文件中

#数据库表

CREATE TABLE `checkspeed` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`check_date` datetime DEFAULT NULL,
`sources_ipaddress` varchar(15) DEFAULT NULL,
`destinations_url` varchar(100) DEFAULT NULL,
`interface_ipaddress` varchar(15) DEFAULT NULL,
`isp_name` varchar(50) DEFAULT NULL,
`http_code` varchar(3) DEFAULT NULL,
`namelookup_time` varchar(15) DEFAULT NULL,
`connect_time` varchar(15) DEFAULT NULL,
`pretransfer_time` varchar(15) DEFAULT NULL,
`starttransfer_time` varchar(15) DEFAULT NULL,
`total_time` varchar(15) DEFAULT NULL,
`size_down` varchar(15) DEFAULT NULL,
`header_size` varchar(15) DEFAULT NULL,
`speed_down` varchar(15) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1376 DEFAULT CHARSET=latin1;

Python mysql-python及pycurl使用一例的更多相关文章

  1. python/MySQL(索引、执行计划、BDA、分页)

    ---恢复内容开始--- python/MySQL(索引.执行计划.BDA.分页) MySQL索引: 所谓索引的就是具有(约束和加速查找的一种方式)   创建索引的缺点是对数据进行(修改.更新.删除) ...

  2. python mysql redis mongodb selneium requests二次封装为什么大都是使用类的原因,一点见解

    1.python mysql  redis mongodb selneium requests举得这5个库里面的主要被用户使用的东西全都是面向对象的,包括requests.get函数是里面每次都是实例 ...

  3. 10分钟教你Python+MySQL数据库操作

    欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 本文介绍如何利用python来对MySQL数据库进行操作,本文将主要从以下几个方面展开介绍: 1.数据库介绍 2.MySQL数据库安装和设置 ...

  4. python mysql

    mysql Linux 安装mysql: apt-get install mysql-server 安装python-mysql模块:apt-get install python-mysqldb Wi ...

  5. mysql python image 图像存储读取

    最近做一些数据库调研的工作,目标是实现影像更快的入库.出库.查询,并实现并行访问等操作. 将结果总结成一个mysqlImg类. 关于mongodb的图像存储,参见http://www.cnblogs. ...

  6. MySQL Python教程(1)

    首先对于数据库的基本操作要有一定基础,其次了解Python的基础语法. 建议先阅读MysqL中文教程http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chap ...

  7. Python—>Mysql—>Dbvisualizer

    MySQLdb: https://pypi.python.org/pypi/MySQL-python/1.2.4 import MySQLdb 1.Download Connector/Python: ...

  8. Python Mysql 篇

    Python 操作 Mysql 模块的安装 linux: yum install MySQL-python window: http://files.cnblogs.com/files/wupeiqi ...

  9. Nginx+uWSGI+Django+Python+ MySQL 搭建可靠的Python Web服务器

    一.安装所需工具 yum -y install gcc gcc-c++ rpm-build mysql* libtool-ltdl* libtool automake autoconf libtool ...

  10. Python MySQL ORM QuickORM hacking

    # coding: utf-8 # # Python MySQL ORM QuickORM hacking # 说明: # 以前仅仅是知道有ORM的存在,但是对ORM这个东西内部工作原理不是很清楚, ...

随机推荐

  1. GET 和 POST 请求的优缺点和误区

    Get和Post在面试中一般都会问到,一般的区别:(1)post更安全(不会作为url的一部分,不会被缓存.保存在服务器日志.以及浏览器浏览记录中)(2)post发送的数据更大(get有url长度限制 ...

  2. onceAgain, 这是一个py群的群公告说明

    群规: 1. 不骚扰人 2. 不涉及娱乐政治 3. 主要就这两条 入门参考:https://book.douban.com/review/9547077/ qq群/网盘:523445644  # 加群 ...

  3. 解决MyEclipse启动慢,使用卡顿问题

    卡顿原因: 1.启动的服务和插件过多,导致启动和运行缓慢,电脑配置较差的直接会卡死没有响应 2.软件运行内存设置不足,导致没有足够的空间运行软件,致使软件卡顿 解决方法: windows --> ...

  4. git版本控制系统更新

    版本控制系统: 一.概念: 版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 二.版本控制系统分类 1.本地版本控制 ...

  5. Hello vue.js的随笔记录

    数据双向绑定的script在组件定义位置后面才顶用. 使用它的话,引用js就好,比较简单. 声明一个vm对象,new Vue({}).这个构造里传一个对象,包含el:界面元素,data:数据,meth ...

  6. zookeeper集群的搭建(个人实践可行)

    linux 上面 zookeeper 集群(最少3个节点192.168.204.128.192.168.204.129.192.168.204.130)安装 1.创建文件夹/usr/local/zoo ...

  7. java中的常用特殊字符

    1.转义字符反斜杠(\) 我们知道html中大都是双标签,如果在标签内想要输出带有标签结束符的文本都必须进行转义,html中是采用对应的字符替换,如<可用<替换 在java当中,我们要转义 ...

  8. HTML+css基础认识

    标签:<div><span                                                                              ...

  9. Dangerous well

    Firsttime to develop games throuth Unity3d, such a great platform! You can build your games more qui ...

  10. deepfake-faceswap第一篇论文-2016摘要

    核心目标:给定一个人的单张图片A,另一个人的单张图片B,在保持姿势,面部表情,视线方向,发型和光照不变的条件下,将A图片中的人物换成B图片中的人物.2016年,文章[1]实现了这个目标: 德国的蒂宾根 ...