python 调用RESTFul接口
本周需要将爬虫爬下来的数据入库,因为之前已经写好PHP的接口的,可以直接通过python调用PHP接口来实现,所以把方法总结一下。
//python编码问题,因为好久用,所以很容易出现
# -*- coding: utf8 -*-
#!/usr/bin/python
import sys
reload(sys)
sys.setdefaultencoding('utf8')
//python 连接数据库
import MySQLdb
conn = MySQLdb.connect(
host = "localhost",
port = 22,
user = "root",
passwd = "root",
db = "test",
charset = "utf8")
cur = conn.cursor()
sql = 'select title,url,publish_time from mp_articles'
cur.execute(sql)
info = cur.fetchall()
cur.close()
conn.commit()
conn.close()
//python 调用RESTFul 接口
test_data = {'title':title,'srcUrl':srcUrl,'composeTime':composeTime} #参数,以此种字典形式呈现
test_data_urlencode = urllib.urlencode(test_data) #需要注意的是编码问题,通过urllib.urlencode()对将要传入的函数进行编码
requrl = 'http://47.90.20.84/addArticleFromSpider' #这是传入的URL,类似laravel5中的route,需要在laravel 的controller中设置route
req = urllib2.Request(url = requrl,data =test_data_urlencode) 通过Request的方式入数据,好像是默认根据PHP中采用的POST/GET 等方式传入数据
res_data = urllib2.urlopen(req) #对返回的数据进行解析
res = res_data.read() #读取返回的数据
//try...except 当返回的参数有异常是,为了不中断程序的运行,需要用此方式来保证程序运行
try:
test_data = {'title':title,'srcUrl':srcUrl,'composeTime':composeTime}
test_data_urlencode = urllib.urlencode(test_data)
requrl = 'http://47.90.20.84/addArticleFromSpider'
req = urllib2.Request(url = requrl,data =test_data_urlencode)
res_data = urllib2.urlopen(req)
res = res_data.read()
print "addArticleFromSpider():" + res
except urllib2.HTTPError:
print "there is an error"
pass #跳过错误,不进行处理,直接继续执行
完整代码如下:
# -*- coding: <utf8> -*-
#!/usr/bin/python import MySQLdb
import datetime
import time
import urllib
import urllib2
import json
import sys
reload(sys)
sys.setdefaultencoding('utf8') conn = MySQLdb.connect(
host = "localhost",
port = 22,
user = "",
passwd = "",
db = "",
charset = "utf8") cur = conn.cursor()
sql = 'select title,url,publish_time from mp_articles'
cur.execute(sql)
info = cur.fetchall()
#print len(info)
for row in info:
#print len(row)
title = row[0]
srcUrl = row[1]
publish_Time = row[2]
composeTime = time.mktime(publish_Time.timetuple())
composeTime = str(composeTime)
try:
test_data = {'title':title,'srcUrl':srcUrl,'composeTime':composeTime}
test_data_urlencode = urllib.urlencode(test_data)
requrl = 'http://47.90.20.84/addArticleFromSpider'
req = urllib2.Request(url = requrl,data =test_data_urlencode)
res_data = urllib2.urlopen(req)
res = res_data.read()
print "addArticleFromSpider():" + res
except urllib2.HTTPError:
print "there is an error"
pass cur.close()
conn.commit()
conn.close()
python 调用RESTFul接口的更多相关文章
- python调用ice接口
今天用python调用ice接口,遇到如下提示 ImportError: No module named Ice 解决方案是 set PYTHONPATH=C:\Program Files\ZeroC ...
- 三种方法实现调用Restful接口
1.基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...
- 三种方法实现java调用Restful接口
1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...
- Python调用API接口的几种方式 数据库 脚本
Python调用API接口的几种方式 2018-01-08 gaoeb97nd... 转自 one_day_day... 修改 微信分享: 相信做过自动化运维的同学都用过API接口来完成某些动作.AP ...
- Python调用API接口的几种方式
Python调用API接口的几种方式 相信做过自动化运维的同学都用过API接口来完成某些动作.API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课. 本文主要介绍py ...
- Java调用RestFul接口
使用Java调用RestFul接口,以POST请求为例,以下提供几种方法: 一.通过HttpURLConnection调用 1 public String postRequest(String url ...
- python调用zabbix接口实现Action配置
要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...
- python调用RPC接口
要调用RPC接口,python提供了一个框架grpc,这是google开源的 rpc相关文档: https://grpc.io/docs/tutorials/basic/python.html 需要安 ...
- Java方法通过RestTemplate调用restful接口
背景:项目A需要在代码内部调用项目B的一个restful接口,该接口是POST方式,header中 Authorization为自定义内容,主要传输的内容封装在body中,所以使用到了RestTemp ...
随机推荐
- Question20171231 聊聊为什么32bit只能支持4GB内存
1. 32位系统最大只能支持4GB内存之由来 也许大家对这个问题都不陌生,实际装过系统用过电脑的朋友可能都有这样的经历:自己电脑配的是4G的内存条,可是装完系统之后发现电脑上显示的只有3.2G左右可用 ...
- flask中的response
1.Response 在flask中你想向前端返回数据,必须是Response的对象,这里和django必须是HttpResponse 对象一样, 主要将返回数据的几种方式 视图函数中return 字 ...
- vue里使用百度地图
最近公司项目里要用到百度地图,然后查阅了一些资料,并总结了下: 首先呢,由于本公司使用的是百度离线地图,那么我们首先需要将百度地图离线包放置static静态文件目录下(我的离线地图包名是“baidu_ ...
- 判断无向图两点间是否存在长度为K的路径
#include <iostream> #include <vector> #define MAXN 5 using namespace std; struct edge { ...
- 通过Ambari2.2.2部署HDP大数据服务
node1 amari-server node2 amari-agent namenode1,datanode,resourcemanager,zk node3 amari-agent namen ...
- rhel7-NFS服务搭建
检查服务: [root@localhost ~]# systemctl status nfs● nfs-server.service - NFS server and services Loade ...
- ASP.NET HttpHandler加水印
一.指定Handler方式 1.添加Handler一般处理程序 2.PicHandler.ashx源码如下: 需要的引用: using System; using System.Collections ...
- React中的全选反选问题
全选反选问题 1.在state里维护一个数组,例如showArr:[] 2.绑定点击事件的时候将当前这个当选按钮的index加进来 <span className='arrow' onClick ...
- 关于使用array_rand随机取出数组的值
代码如下 <?php echo "<meta charset='utf-8'/>";//选择解码方式,防止乱码现象 $a = array("abc&qu ...
- 【Hive二】 Hive基本使用
Hive基本使用 创建数据库 创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db create database 库名; 避免要创建的数据库已经存在错 ...