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

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

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

然后实例化一个flask对象:

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

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

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

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

 

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

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

代码如下:

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

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

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

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

整体代码:

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('发&nbsp;证&nbsp;地:</td><td class="tdc2">(.*?)<br/></td></tr>',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初级)

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

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

代码请求结果:

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

运用的python3的环境

相关文章: