利用flask构造爬虫接口(python初级)

爬虫很多时候除了能够做成项目在服务器上跑以外,还可以做成接口的形式够其他语言调用,即爬虫可以实时的镶嵌到app,web或者其他场景下,当有客户调用时就会启动,无人调用时,就静静的待着。下面说一下利用python中的flask框架来写一个简单的爬虫来供其他语言调用。初级入门很简单的web框架和爬虫之间的结合应用。如果有其他的应用需求,请自行研究。

首先,导包不解释了,自行安装flask就可以了。

然后实例化一个flask对象:

然后写我们的爬虫方法,这里我们以 http://qq.ip138.com/idsearch/index.asp?为例,一个输入身份证便可以查询归属地的网址。

首先我们需要分析这个网页构造,来确定我们的爬虫该怎么写。

利用flask构造爬虫接口(python初级)_第1张图片

 

我们查看网页源代码,发现我们想要的归属地的信息就在源码中,所以我们利用正则就很方便的取出归属地。

利用flask构造爬虫接口(python初级)_第2张图片

代码如下:

利用flask构造爬虫接口(python初级)_第3张图片

最后,写上flask的路由和启动方式即可:

利用flask构造爬虫接口(python初级)_第4张图片

整体代码:

import flask,json
from flask import request

server=flask.Flask(__name__)#__name__代表当前的python文件。把当前的python文件当做一个服务启动

@server.route('/',methods=['get','post'])#只有在函数前加上@server.route (),这个函数才是个接口,不是一般的函数
def reg():
    dict = {}
    idcard = request.values.get('userid')
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36'
    }
    url = 'http://qq.ip138.com/idsearch/index.asp?action=idcard&userid={}'.format(idcard)

    r = requests.get(url,headers=headers)
    # print(r.content.decode('gbk'))
    a = re.findall('发 证 地:(.*?)
',r.content.decode('gbk')) if a == []: dict['idcard'] = idcard dict['area'] = '' return json.dumps(dict, ensure_ascii=False) else: dict['idcard'] = idcard dict['area'] = a[0] return json.dumps(dict,ensure_ascii=False) server.run(port=1688,debug=True,host='0.0.0.0')

我们将程序启动,然后用postman发送请求查看结果:

利用flask构造爬虫接口(python初级)_第5张图片

利用flask构造爬虫接口(python初级)_第6张图片

利用flask构造爬虫接口(python初级)_第7张图片

代码请求结果:

利用flask构造爬虫接口(python初级)_第8张图片

运用的python3的环境

你可能感兴趣的:(python爬虫)