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 ...
随机推荐
- spring入门(三) 使用spring mvc
1.建立project / module 新建空的project:springMvcStudy 新建module:type maven-webapp,名字mvcStudy 2.为module设置Sou ...
- Unity3D usage Experience
I have been using Unity3D to make game for half one year. I began to lean Unity3D with some books, o ...
- multimap的使用
multimap由于允许有重复的元素,所以元素插入.删除.查找都与map不同. 插入insert(pair<a,b>(value1,value2)) #include <iostre ...
- 将hexo放到github仓库上
完成了hexo的安装后, 我们只能在本地访问. 因此我们将它放到github上, 方便我们随时随地的用网址访问. 在Blog文件夹目录下输入: cnpm install --save hexo-dep ...
- 【Commare中关于理论范畴和技术常用的技术术语】
1:地址掩码,分类2:OSI/TCP-IP层,归属,作用3:debugg,dispaly具体配置,排错,现象4:原理5:术语 | | = 局域网,广域网 | | = ( (OSPF,RIP,ISIS, ...
- thinkphp验证码实现。
作为我大天朝的程序员,如果不会点thinkphp框架确实有点说不过去了(虽然作为菜鸟的我才入坑没几个月).不过不会也没关系,很简单的一个php框架.今天为大家介绍的是thinkphp如何实现验证码的功 ...
- php Trait的使用
1.php中的trait是啥? 看上去既像类又像接口,其实都不是,Trait可以看做类的部分实现,可以混入一个或多个现有的PHP类中,其作用有两个:表明类可以做什么:提供模块化实现.Trait是一种代 ...
- 做 JAVA 开发,怎能不用 IDEA!
用了 IDEA,感觉不错.决定弃用 Eclipse 入门教程: www.cnblogs.com/yangyquin/p/5285272.html
- android ActionBar 去掉menu分隔线
自定义Theme继承原来Theme修改其中的分隔线: <item name="actionBarDivider">@null</item> 低版本设置 & ...
- C# 控制台应用程序输出颜色字体
最佳解决方案的代码: static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Green; Console.W ...