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 ...
随机推荐
- ansible-palybook剧本
1 ansible基础知识部分补充 1.1 ansible软件特点: · 可以实现批量管理 · 可以实现批量部署 · ad-hoc(批量执行命令)---针对临时性的操作 ansible clsn -m ...
- 【TCP/IP实现磁盘资源的分享-----ISCSI(互联网最小应用程序接口)】
Iscsi server: 首先把多块磁盘合并为RAID5,便于后期iscis client访问以及服务端的管理 安装 targted服务端包,以及targtedcli创建iscsi TCP/IP共享 ...
- Java : java基础(4) 线程
java开启多线程的方式,第一种是新建一个Thread的子类,然后重写它的run()方法就可以,调用类的对象的start()方法,jvm就会新开一个线程执行run()方法. 第二种是类实现Runabl ...
- Mysql通过Adjacency List(邻接表)存储树形结构
转载自:https://www.jb51.net/article/130222.htm 以下内容给大家介绍了MYSQL通过Adjacency List (邻接表)来存储树形结构的过程介绍和解决办法,并 ...
- springMVC3
复习: springmvc框架: DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器:根据url查找Handler.(可以 ...
- Android 数据库 ANR的例子
android 开启事务之后,在其他线程是不能进行增删改查操作的.例子如下: 首先,一个线程里面去开启事务,里面对数据库的任何操作都没有. DBAdapter.getInstance().beginT ...
- RTL8195AM开发板使用
1. 本次使用RTL8195AM测试一下,原厂资源地址:https://os.mbed.com/platforms/Realtek-RTL8195AM/ 2. 由于板子支持mbed,所以把CON2连接 ...
- nginx location优先级
目录 1. 配置语法 2. 配置实例 3. 总结: 网上查了下location的优先级规则,但是很多资料都说的模棱两可,自己动手实地配置了下,下面总结如下. 1. 配置语法 1> 精确匹配 lo ...
- javac一次性编译多个包下的.java文件
如题是我想要知道的,然后在网上搜了一下 下面是在某些帖子里看到别人说的只言片语 =========================================================== ...
- ES6 中 export ,export default 区别
1.export与export default均可用于导出常量.函数.文件.模块等: 2.你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对 ...