精华内容
下载资源
问答
  • 1.编写爬虫 import requests class TestFlaskApi: def __init__(self): self.url = 'http://127.0.0.1:1688/' # flask设置的本地地址和端口 # 此处的self.headers可以省略,本地不用设置 self.headers = {...

     1.编写爬虫


    import requests
    
    
    class TestFlaskApi:
        def __init__(self):
            self.url = 'http://127.0.0.1:1688/'   # flask设置的本地地址和端口
            # 此处的self.headers可以省略,本地不用设置
            self.headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36'}
        
        def parse(self):
            # data为请求flask中定义的参数,一定得对应上
            data = {'funItemMenuId': 115990101,
                    'position': 'Gis'}
            response = requests.get(self.url=url, self.headers=headers, params=data)
            if response.status_code == 200:
                return response.text
            else:
                print('请检查网站情况')
    
    
    if __name__ == '__main__':
        t = TestFlaskApi()
        t.parse()

      2.编写flask API


    # coding:utf8
    import requests
    import flask
    from flask import request
    
    server = flask.Flask(__name__)
    
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
                             ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36'}
    
    
    @server.route('/', methods=['get', 'post'])
    def reg():
        funItemMenuId = request.values.get('funItemMenuId')  # 设置参数
        position = request.values.get('position')
        # 自己定义url,这里隐藏了部分url,但功能是一样的
        url = 'funItemMenuId={0}&position={1}.format(funItemMenuId, position)
        r = requests.get(url, headers=headers)
        return r.text
    
    if __name__ == '__main__':
        server.run(port=1688, debug=True, host='127.0.0.1')
    

    3.得到数据

    展开全文
  • 使用API及实例 ** 1.API的使用 2.解析JSON数据 3.百度地图开放平台API调用实现热力图 1.API的使用 当决定去完成一个爬虫操作时,读者的第一反应可能就是用Requests 库请求网页,然后从正则表达式、BeautifulSoup 或...

    **

    使用API及实例

    **

    1.API的使用
    2.解析JSON数据
    3.百度地图开放平台API调用实现热力图

    1.API的使用
    当决定去完成一个爬虫操作时,读者的第一反应可能就是用Requests 库请求网页,然后从正则表达式、BeautifulSoup 或Lxml 中选择一个自己最熟悉的库来解析数据, 进而提取数据。但有时我们并不需要这么“卖命”地写代码,因为应用编程接口( Application Programming Interface, API )可能己为我们做好了一切。本文将对API 进行概述,讲解API 的使用和调用方法,并对API 返回的JSON 数据进行解析,最后通过使用API 来完成一些有趣的综合案例。
    (1)API概述
    现在API是越来越多,百度地图API进行查询路线,定位坐标等;巨潮资讯网API进行数据查询;新浪微博API进行社交网络分析;一估网API进行房地产信息查询。
    巨潮资讯网API,注册后可以免费使用1000次。
    新浪网有反爬虫。
    爬取社交网络。比如新浪微博,Twitter。(Twitter提供了API,可以提交关键字等信息爬取搜索结果中的每一条内容)爬完可以对整个社交网络群体做个分析,情绪、作息、区域。
    百度地图API做地图热力图。
    一估网API(全国房地产估价平台)。
    (2)API使用方法
    API用一套非常标准的规则生成数据,而且生成的数据也是按照非常标准的方式组织的。因为规则很标准,所以一些简单、基本的规则很容易学,可以快速地掌握API的用法。但并非所有的API使用都很简单,有些API的规则却是很多且复杂,建议在使用前认真观看该API的帮助文档。
    (3)API验证
    有些简单的API不需要验证操作,但现在大部分的API是需要用户提交验证的。提交验证主要是为了计算API调用的费用,这种常见于付费的API。
    巨潮信息网可以免费1000次。

    2.解析JSON数据
    (1)JSON 函数导入Python
    JSON是一种格式化字符串,与Python的列表和字典非常类似,相当于一个中介。让双方同时用JSON语言进行交流。
    Python中有解析JSON数据的标准库,可以通过下面代码来使用它:
    import json

    (2)认识json数据
    json有两种数据结构:对象和数组。
    对象:用大括号表示,由键值对组成,每个键值对用逗号隔开。其中key必须为字符串且是双引号,value可以是多种数据类型。
    数组:用中括号表示,每个元素之间用逗号隔开。
    json中的字符串都要用双括号表示。

    (3)JSON解析库的使用条件
    使用API时,服务器会返回JSON格式的数据。

    (4)JSON 函数
    在这里插入图片描述
    python 原始类型向 json 类型的转化对照表:
    在这里插入图片描述
    json 类型转换到 python 的类型对照表:
    json 类型转换到 python 的类型对照表:
    例1:将字典数据转换为json数据

    import json
    data = {‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4} 
    # json = json.dumps(data)
    json=json.dumps(data, indent=4)   #4表示4个空格的缩进
    print(json)
    
    输出结果:
    {
        "a": 1,
        "b": 2,
        "c": 3,
        "d": 4
    }
    

    例2:将json数据转换为字典数据或字符串

    import json;
    jsondata ='{"man":[{"name":"peter"},{"name":"xiaoming"}],"woman":[{"name":"anni"},{"name":"xiaomei"}]}'
    data = json.loads(jsondata);
    print(data["man"]);
    print(data["woman"]);
    print(data["man"][0]["name"]);
    print(data["woman"][1]["name"]);
    
    输出结果
    [{'name': 'peter'}, {'name': 'xiaoming'}]
    [{'name': 'anni'}, {'name': 'xiaomei'}]
    peter
    xiaomei
    

    例3:练习

    import json;
    data1 = {
               'name' : 'jack',
                'age' : 20,
                'like': ('sing','dance','swim'),
                'score': 'chinese':80,'math':60,'english':99}
             }
    
    data2 = json.dumps(data1);
    data3 = json.loads(data2);
    print('原始数据');
    print(data1);
    print('转化成json格式');
    print(data2);
    print('再转化成python格式');
    print(data3);
    

    3.实例:百度地图开放平台API调用实现热力图
    步骤1:注册
    打开百度地图开放平台,注册。如果有百度账号,可以直接登录。
    在这里插入图片描述
    步骤2:获取密钥
     点击开发文档-点击web服务API
    在这里插入图片描述
     点击获取密钥
    在这里插入图片描述
     创建自己的应用才能获取密钥
    在这里插入图片描述
     点击创建应用,在应用名称里命名,在应用类型选择浏览器端,在白名单里填写“*”,其他默认,提交后就可以看到密钥。
    在这里插入图片描述
     密钥可以复制,复制到程序里作为权限使用。
    在这里插入图片描述

    步骤3:查看访问接口格式
    http://api.map.baidu.com/geocoding/v3/?
    address=北京市海淀区上地十街10号
    output=json
    ak=您的ak
    callback=showLocation
    在这里插入图片描述
     百度地图的API调用格式

    import json
    from urllib.request import urlopen, quote
    import requests,csv
    import pandas as pd #导入这些库后边都要用到
    
    addr=input('请输入地点:')
    def getGPS(addr):
        url = 'http://api.map.baidu.com/geocoding/v3/'
        output = 'json'
        ak = “XXX"   #输入自己的密钥
        add = quote(addr)
        getUrl = url + '?' + 'address=' + add  + '&output=' + output + '&ak=' + ak
        result = (json.loads(requests.get(getUrl).text)['result'])["location"]
        lng1 = result["lng"]
        lat1 = result["lat"]
        return(lng1 ,lat1)
    
    lng,lat=getGPS(addr)
    print(lng)
    print(lat)
    

    案例:以房价数据调用百度地图的热力图
    下载数据导入code,并运行
    先下载城市房价数据并存储到csv文件houseprice.csv

    import json
    from urllib.request import urlopen, quote
    import requests,csv
    import pandas as pd #导入这些库后边都要用到
    
    def getGPS(addr):
        url = 'http://api.map.baidu.com/geocoding/v3/'
        output = 'json'
        ak = "XXX"
        add = quote(addr)
        getUrl = url + '?' + 'address=' + add  + '&output=' + output + '&ak=' + ak
        result = (json.loads(requests.get(getUrl).text)['result'])["location"]
        lng1 = result["lng"]
        lat1 = result["lat"]
        return(lng1 ,lat1)
    
    file = open(r'houseprice.json','w') #建立json数据文件
    with open(r'houseprice.csv', 'r') as csvfile: #打开csv
        reader = csv.reader(csvfile)
        for line in reader: #读取csv里的数据
            # 忽略第一行
            if reader.line_num == 1: #由于第一行为变量名称,故忽略掉
                continue
                # line是个list,取得所有需要的值
            addr = line[0].strip() #将第一列city读取出来并清除不需要字符
            c = line[1].strip()#将第二列price读取出来并清除不需要字符
            try:
               lng,lat = getGPS(addr)
               str_temp = '{"lng":' + str(lng) +',"lat":' + str(lat) +  ',"count":' + str(c) +'},'
               print(str_temp) #也可以通过打印出来,把数据copy到百度热力地图api的相应位置上
            except:
                print(line[0])
            file.write(str_temp) #写入文档
    file.close() #保存
    

    运行code
    运行code后,在venv文件夹里生成houseprice.json数据文件,使用pycharm打开此数据文件。
    在这里插入图片描述
    复制http://lbsyun.baidu.com/jsdemo.htm#c1_15,打开此网址,找到覆盖物示例下的添加热力图,该图是以北京市为初始化的。
    在这里插入图片描述
    在这里插入图片描述
    参数修改
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    打开pycharm的new-html file,新建一个html。
    在这里插入图片描述
     新建热力图.html,把所有code复制到热力图后,点击该图的右上角的google浏览器图标,会出现下一页的热力图。
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • API说明——下载gsExtractor内容提取器1,接口名称下载内容提取器2,接口说明如果您想编写一个网络爬虫程序,您会发现大部分时间耗费在调测网页内容提取规则上,不讲正则表达式的语法如何怪异,即便使用XPath,您也...

    102044_phHJ_2758756.jpg

    API说明——下载gsExtractor内容提取器

    1,接口名称

    下载内容提取器

    2,接口说明

    如果您想编写一个网络爬虫程序,您会发现大部分时间耗费在调测网页内容提取规则上,不讲正则表达式的语法如何怪异,即便使用XPath,您也得逐个编写和调试。

    如果要从一个网页上提取很多字段,逐个调试XPath将是十分耗时的。通过这个接口,你可以直接获得一个调测好的提取器脚本程序,是标准的XSLT程序,您只需针对目标网页的DOM运行它,就能获得XML格式的结果,所有字段一次性获得。

    这个XSLT提取器可以是您用MS谋数台生成的,也可以是其他人共享给您的,只要您有读权限,皆可下载使用。

    用于数据分析和数据挖掘的网络爬虫程序中,内容提取器是影响通用性的关键障碍,如果这个提取器是从API获得的,您的网络爬虫程序就能写成通用的框架。请参看GooSeeker的开源Python网络爬虫项目。

    3,接口规范

    3.1,接口地址(URL)

    http://www.gooseeker.com/api/getextractor

    3.2,请求类型(contentType)

    不限

    3.3,请求方法

    HTTP GET

    3.4,请求参数

    key 必选:Yes;类型:String;说明:申请API时分配的AppKey

    theme 必选:Yes;类型:String;说明:提取器名,就是用MS谋数台定义的规则名

    middle 必选:No;类型:String;说明:规则编号,如果相同规则名下定义了多个规则,需填写

    bname 必选:No;类型:String;说明:整理箱名,如果规则含有多个整理箱,需填写

    注释:请参看GooSeeker网络爬虫术语解释:集搜客GooSeeker专有名词解释

    3.5,返回类型(contentType)

    text/xml; charset=UTF-8

    3.6,返回参数

    HTTP消息头中的参数,如下:

    more-extractor 类型:String;说明:相同规则名下有多少个提取器。通常只在可选参数没有填写的时候需要关注这个参数,用以提示客户端有多个规则和整理箱,客户端自己决定是否要在发送请求时携带明确的参数

    3.7,返回错误信息

    消息层错误以HTTP 400返回,比如,URL中的参数不符合本规范

    应用层错误以HTTP 200 OK返回,具体错误码用XML文件放在消息体中,XML结构如下:

    具体的错误码

    具体的code值如下: keyError:权限验证失败

    paramError:URL中传来的参数有误,比如,参数名称或值不正确

    empty:非错误状态,而是请求的提取器是不存在的,比如,某个抓取规则并没有创建整理箱,则返回empty

    4,用法范例(python语言)

    # -*- coding: utf-8 -*-

    from urllib import request

    url = 'http://www.gooseeker.com/api/getextractor?key=您的key&theme=您的提取器名'

    resp = request.urlopen(url)

    content = resp.read()

    if(content):

    print(content)

    接下来我会对此API进行测试,将案例发布出来

    5,相关文档

    1,2016-06-22:V1.0

    展开全文
  • 应用编程接口(Application Programming Interface,API)用http协议向API 发起请求,API 会用 XML (eXtensible Markup Language,可扩展标记语言)或 JSON(JavaScript...尽管大多数 API 仍然在用 XML,但是 JSON ...

    应用编程接口(Application Programming Interface,API)

    用http协议向API 发起请求,API 会用 XML (eXtensible Markup Language,可扩展标记语言)或 JSON(JavaScript Object Notation, JavaScript 对象表示)格式返回服务器响应的信息。尽管大多数 API 仍然在用 XML,但是 JSON 正在快速成为数据编码格式的主流选择。

    API概述

    API 可以通过 HTTP 协议下载文件,和 URL 访问网站获取数据的协议一 样,它几乎可以实现所有在网上干的事情。API 之所以叫 API 而不是叫网站的原因,其实 是首先 API 请求使用非常严谨的语法,其次 API 用 JSON 或 XML 格式表示数据,而不是 HTML 格式。

    API通用规则

    第一次使用一个 API 时,建 议阅读文档,无论你对以前用过的 API 是多么熟悉

    1  方法

    利用 HTTP 从网络服务获取信息有四种方式:

    • GET     在浏览器中输入网址浏览网站所做的事情

    • POST   当你填写表单或提交信息到网络服务器的后端程序时所做的事情

    • PUT      在网站交互过程中不常用,但是在 API 里面有时会用到。PUT 请求用来更新一个对象 或信息

    • DELETE    用于删除一个对象。DELETE 方法在公共 API 里面不常用,它们主要用于创建 信息,不能随便让一个用户去删掉数据库的信息


    2  验证

    通常 API 验证的方法都是用类似令牌(token)的方式调用,每次 API 调用都会把令牌传 递到服务器上。


    3  服务器响应

    API 有一个重要的特征是它们会反馈格式友好 的数据。大多数反馈的数据格式都是 XML 和 JSON

    JSON 比 XML 更受欢迎,主要有两个原因。首先,JSON 文件比完整的 XML 格 式小

    另一个原因是网络技术的改变

    过去,服务器端用 PHP 和 .NET 这些程序作为 API 的接收端。现在,服务器端也会用一些 JavaScript 框架作为 API 的发送和接收端,像 Angular 或 Backbone 等。虽然服务器端的技术无法预测它们即将收到 的数据格式,但是像 Backbone 之类的 JavaScript 库处理 JSON 比处理 XML 要更简单




































































































    展开全文
  • python爬虫使用指南 在我自学的编程之旅中 ,我的兴趣在于机器学习(ML)和人工智能(AI),并且我选择精通的语言是Python。 我的Python基本技能,因此,如果您在编码方面的技能不多,希望本指南可以帮助您获得更...
  • 初学Python,以此项目来练手,欢迎点赞、留言、交流 文件概述 文件 说明 pymysql01.py pymysql数据库处理逻辑 pymysql01.py 数据爬虫 pymysql01.py RESTful API NewBaseModel 数据模型(供SqlalchemyCommand使用) 一...
  • Python网络爬虫案例:百度地图API 使用百度API获取数据的实践案例,涉及的技术包括: 爬取网页:使用Requests请求百度地图API地址 解析网页:提取json数据 存储数据:存储至MySQL数据库 1.项目描述 通过百度...
  • 一、需求 每天需要从友盟网站获取...1)获取api秘钥 #获取api秘钥 def authorize(user, pasw): url = 'http://api.umeng.com/authorize' body = {'email': '%s'%(user), 'password': '%s'%(pasw)} response = req...
  • python网络爬虫-使用API之API通用规则

    千次阅读 2017-09-19 09:28:50
    和大多数网络数据采集的方式不同,API用一套非常标准的规则生成数据,而且生成的数据也是按照非常标准的方式组织的。因为规则很标准,所以一些简单、基本的规则很容易学,也可以帮你快速地掌握任意API的用法。
  • API使用 ——通过API向服务器请求数据 优点:简单直接,高效率地批量爬取;解决动态网页的爬取。 缺点:通过API的缺点是有些网站会限制API调用的次数和频率,用户需要付费来升级成高级用户来获取更灵活的API调用。...
  • selenium提供的API from selenium import webdriver browser = webdriver.Chrome(executable_path='path') #若已将浏览器驱动添加到环境变量:/usr/bin,就不需要参数 browser.get(url) #进入页面 browser....
  • 今天使用requests库爬取蝉妈妈网站的用户数据,本地pycharm调试通过,放在服务器上运行就包如下错误: Error:HTTPSConnectionPool(host='api-service.chanmama.com', port=443): Max retries exceeded with url: /v1/...
  • python 爬虫 Requests简单使用 Requests的文档非常完备,中文文档也相当不错。Requests能完全满足当前网络的需求,支持Python 2.6–3.5,而且能在PyPy下完美运行。 开源地址:...
  • 基于API爬虫的一般步骤 在网站注册开发者账户用户名,获得相应的开发者密钥 在网站的API帮助说明文档中找到自己需要使用API,确认API请求的限制次数,确认调用API需要使用的参数 在联网状态下,编写正确代码...
  • 1)获取新榜api 打开并登录新榜网站-数据服务-数据API 点击试用即可,到达控制台,你的账号就获得API密钥,以及2000unit额度 2)发送HTTP请求 点击“查看文档”,跳转到接口列表,这里可以看到每种接口单次消耗...
  • selenium 使用 注意: 很多网站对selenium的webdriver做了反爬,所以推荐使用pyppeteer(更强大些)。 但是pyppeteer不如selenium稳定,bug少,语法清晰。 安装 pip3 install selenium 注意需要保持chrome和chromedriver ...
  • Requests简单使用python爬虫小课堂】

    万次阅读 2020-05-23 02:48:39
    虽然Python的标准库中 urllib 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便。 Requests 唯一的一个非转基因的 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,037
精华内容 414
关键字:

python爬虫使用api

python 订阅
爬虫 订阅