精华内容
下载资源
问答
  • 爬网的数据不如API所获得的那么干净,但是好处是您可以摆脱API的速率限制和限制。 理想情况下,您可以从Twitter搜索获取所有数据。 警告:请保持礼貌,并遵守。 安装 安装conda ,您可以从获得它。 经过测试的...
  • 一、什么是APIAPI(ApplicationProgrammingInterface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节...

    一、什么是API?

    API(ApplicationProgrammingInterface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    例如:

    http://apis.juhe.cn/ip/ip2addr?ip=112.112.11.11&key=appkey

    返回的json格式的数据是:

    {

    "resultcode":"200",

    "reason":"Return Successd!",

    "result":{

    "area":"江苏省苏州市",

    "location":"电信"

    }

    }

    返回的xml格式的数据是:

    200

    Return Successd!

    江苏省苏州市

    电信

    二、使用Python调用API

    1、使用Python对json格式的数据解析

    import json

    jsonString = '{"arrayOfNums":[{"number":0},{"number":1},{"number":2}],"arrayOfFruits":[{"fruit":"apple"},{"fruit":"banana"},{"fruit":"pear"}]}'

    jsonObj = json.loads(jsonString)

    print(jsonObj.get("arrayOfNums"))

    print(jsonObj.get("arrayOfNums")[1])

    print(jsonObj.get("arrayOfNums")[1].get("number") + jsonObj.get("arrayOfNums")[2].get("number"))

    print(jsonObj.get("arrayOfFruits")[2].get("fruit"))

    2、使用python调用聚合数据中的天气预报API

    from urllib import urlencode

    import urllib

    import json

    # 配置您申请的APPKey

    appkey = "XXXXXXXXXXXXXXXXXXXXXXXX"

    # 根据城市查询天气

    def queryWeather(appkey, m="GET", city="广州", dtype="json"):

    url = "http://v.juhe.cn/weather/index"

    params = {

    "cityname": city, # 要查询的城市,如:温州、上海、北京

    "key": appkey, # 应用APPKEY(应用详细页查询)

    "dtype": dtype, # 返回数据的格式,xml或json,默认json

    }

    params = urlencode(params, )

    if m == "GET":

    f = urllib.urlopen("%s?%s" % (url, params))

    else:

    f = urllib.urlopen(url, params)

    content = f.read()

    res = json.loads(content)

    if res:

    error_code = res["error_code"]

    if error_code == 0:

    # 成功请求

    return res["result"]

    else:

    print "%s:%s" % (res["error_code"], res["reason"])

    else:

    print "request api error"

    weather = queryWeather(appkey, "GET")

    print weather

    print urllib.unquote(weather.get("sk").get("wind_direction"))

    3、使用python调用聚合数据中的查询IP地址API

    from urllib import urlopen

    import json

    def getCountry(ipAddress, appkey):

    response = urlopen("http://apis.juhe.cn/ip/ip2addr?ip=" + ipAddress + "&key=" + appkey).read().decode('utf-8')

    responseJson = json.loads(response)

    return responseJson.get("area")

    # 配置您申请的APPKey

    appkey = "84bd1042092e7b0e3265483f46febc80"

    print(getCountry("61.135.169.121", appkey))

    4、使用python 2.x 调用微博API

    微博的Python 2.x SDK:

    http://github.liaoxuefeng.com/sinaweibopy/

    https://github.com/michaelliao/sinaweibopy

    安装sdk

    pip install sinaweibopy

    实例代码

    from weibo import APIClient

    import webbrowser

    ## 1、个人微博的账号信息

    APP_KEY = 'XXXXXX'

    APP_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXX'

    CALLBACK_URL = 'http://f.dataguru.cn'

    ## 2、请求授权

    # 2.1

    client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)

    url = client.get_authorize_url()

    # print(url)

    # https://api.weibo.com/oauth2/authorize?redirect_uri=http%3A//f.dataguru.cn&response_type=code&client_id=2337575664

    # 2.2

    # 打开申请授权的网页,点击同意授权后会跳转到之前设置的回调网页(即CALLBACK_URL)

    # 在回调页的浏览器地址栏里获取code(动态变化),用于第二步调用oauth2/access_token接口,获取授权后的access token

    webbrowser.open_new(url)

    # http://f.dataguru.cn/?code=6240f86a9c757ef6ea985cd28647f05a

    code = '6240f86a9c757ef6ea985cd28647f05a'

    ## 3、获得授权

    # 获取token 和 token的生命周期

    r = client.request_access_token(code)

    # print(r)

    access_token = r.access_token

    # print(access_token)

    expires_in = r.expires_in

    # print(expires_in)

    ## 4、为以后的API请求设置token

    client.set_access_token(access_token, expires_in)

    ## 5、获取当前登录用户及其所关注(授权)用户的最新微博 statuses/home_timeline

    # https://api.weibo.com/2/statuses/home_timeline.json

    statuses = client.statuses.home_timeline.get(count=10)['statuses']

    # print(statuses[1])

    length = len(statuses)

    print(length)

    # 输出了部分信息

    for i in range(0, length):

    print(u'昵称:' + statuses[i]['user']['screen_name'])

    print(u'简介:' + statuses[i]['user']['description'])

    print(u'位置:' + statuses[i]['user']['location'])

    print(u'微博:' + statuses[i]['text'])

    ## 6、获取最新的提到登录用户的微博列表,即@我的微博 statuses/mentions

    # https://api.weibo.com/2/statuses/mentions.json

    statuses = client.statuses.mentions.get()['statuses']

    # print(statuses[1])

    length = len(statuses)

    print(length)

    # 输出了部分信息

    for i in range(0, length):

    print(u'昵称:' + statuses[i]['user']['screen_name'])

    print(u'简介:' + statuses[i]['user']['description'])

    print(u'位置:' + statuses[i]['user']['location'])

    print(u'微博:' + statuses[i]['text'])

    print(u'时间:' + statuses[i]['created_at'])

    5、使用python 3.x 调用微博API

    微博的Python 3.x SDK:

    https://github.com/nooperpudd/weibopy

    安装sdk

    pip install weibopy

    实例代码

    from weibopy import WeiboOauth2

    import webbrowser

    ## 1、个人微博的账号信息

    APP_KEY = 'XXXXXX'

    APP_SECRET = 'XXXXXXXXXXXX'

    CALLBACK_URL = 'http://f.dataguru.cn'

    ## 2、请求授权

    # 2.1

    client = WeiboOauth2(APP_KEY, APP_SECRET, CALLBACK_URL)

    authorize_url = client.authorize_url

    print(authorize_url)

    # https://api.weibo.com/oauth2/authorize?redirect_uri=http%3A//f.dataguru.cn&response_type=code&client_id=2337575664

    # 2.2

    # 打开申请授权的网页,点击同意授权后会跳转到之前设置的回调网页(即CALLBACK_URL)

    # 在回调页的浏览器地址栏里获取code(动态变化),用于第二步调用oauth2/access_token接口,获取授权后的access token

    webbrowser.open_new(authorize_url)

    # http://f.dataguru.cn/?code=4b156593e9dfdd16279bbcc9eb7817bf

    code = '4b156593e9dfdd16279bbcc9eb7817bf'

    ## 3、获得授权

    # 获取token 和 token的生命周期

    r = client.auth_access(code)

    # print(r)

    access_token = r.get("access_token")

    # print(access_token)

    expires_in = r.expires_in

    # print(expires_in)

    ## 4、为以后的API请求设置token

    from weibopy import WeiboClient

    client = WeiboClient(access_token)

    ## 5、获取当前登录用户及其所关注(授权)用户的最新微博 statuses/home_timeline

    # https://api.weibo.com/2/statuses/home_timeline.json

    result = client.get(suffix="statuses/home_timeline.json")

    statuses = result.get("statuses")

    # print(statuses[0])

    length = len(statuses)

    print(length)

    # 输出了部分信息

    for i in range(0, length):

    print(u'昵称:' + statuses[i]['user']['screen_name'])

    print(u'简介:' + statuses[i]['user']['description'])

    print(u'位置:' + statuses[i]['user']['location'])

    print(u'微博:' + statuses[i]['text'])

    ## 6、获取最新的提到登录用户的微博列表,即@我的微博 statuses/mentions

    # https://api.weibo.com/2/statuses/mentions.json

    result = client.get(suffix="statuses/mentions.json")

    statuses = result.get("statuses")

    # print(statuses[0])

    length = len(statuses)

    print(length)

    # 输出了部分信息

    for i in range(0, length):

    print(u'昵称:' + statuses[i]['user']['screen_name'])

    print(u'简介:' + statuses[i]['user']['description'])

    print(u'位置:' + statuses[i]['user']['location'])

    print(u'微博:' + statuses[i]['text'])

    print(u'时间:' + statuses[i]['created_at'])

    展开全文
  • Java 爬虫工具/开源API对比

    千次阅读 2015-06-09 15:03:36
    注:基于网上收集到的信息,未经代码试验过。 名称 分类 优点 缺点 Git 评价 Apache Nutch 搜索引擎 分布式(依赖hadoop),...爬虫 微内核+插件式架构,重配置(无需写代码),多线程 用户太少 star 525 | for

    注:基于网上收集到的信息,未经代码试验过。

    名称 分类 优点 缺点 Git 评价
    Apache Nutch 搜索引擎 分布式(依赖hadoop),为搜索引擎设计 重量级,用于精抽取会低效,Nutch插件调试困难 老大级
    Spiderman 爬虫 微内核+插件式架构,重配置(无需写代码),多线程 用户太少 star 525 | fork 326
    webmagic 爬虫 使用了HttpClient,支持多线程抓取,分布式抓取 JS动态加载要使用如PhantomJS、Selenium,用户太少 荐,star 406 | fork 225
    WebCollector 2 爬虫 可用于分页及AJAX的遍历策略,集成selenium从而支持JS,支持多代理随机切换 用户太少 荐,star 29 | fork 32
    Crawljax 爬虫 支持Ajax 树回溯性能问题 star 222 | fork 123
    OWASP AJAX Crawling Tool 爬虫 支持Ajax(用到Selenium) ? -
    jsoup HTML解析器 HTML解析器 - 老大级
    HttpComponents(即原HttpClient) 网络工具包 实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等),支持代理 - 老大级
    Htmlunit 网络工具包 支持JS,JUnit 的扩展测试框架,将返回文档模拟成 HTML - 老大级
    selenium2(WebClient) 网络工具包 辅助动态爬虫(集成Htmlunit、phantomjs) - -
    phantomjs 服务器端JS 辅助动态爬虫,JS WebKit,无需浏览器Web测试,页面访问自动化 - star 14210 | fork 2695

    展开全文
  • 爬虫

    2019-11-03 21:44:28
    webmagic的主要特色: 完全模块化的设计,强大的可扩展性。 核心简单但是涵盖爬虫的全部... 配置,但是可通过POJO+注解形式实现一个爬虫。 支持多线程。 支持分布式。 支持爬取js动态渲染的页面。 框架...

    https://www.cnblogs.com/yjmyzz/p/webmagic.html

     

    webmagic的主要特色:

    • 完全模块化的设计,强大的可扩展性。
    • 核心简单但是涵盖爬虫的全部流程,灵活而强大,也是学习爬虫入门的好材料。
    • 提供丰富的抽取页面API。
    • 无配置,但是可通过POJO+注解形式实现一个爬虫。
    • 支持多线程。
    • 支持分布式。
    • 支持爬取js动态渲染的页面。
    • 无框架依赖,可以灵活的嵌入到项目中去。
    展开全文
  • 高德api接口地址:https://lbs.amap.com/api/webservice/guide/api/search 如果不是高德开发者可以申请为开发者 第一步,申请”Web服务API”密钥(Key); ...如特殊声明,接口的输入参数和...

    高德api接口地址:https://lbs.amap.com/api/webservice/guide/api/search

    如果不是高德开发者可以申请为开发者

    第一步,申请”Web服务API”密钥(Key);

    第二步,拼接HTTP请求URL,第一步申请的Key需作为必填参数一同发送;

    第三步,接收HTTP请求返回的数据(JSON或XML格式),解析数据。

    如无特殊声明,接口的输入参数和输出数据编码全部统一为UTF-8。

     

    1. 通过高德搜索接口得到附近小区搜索列表

    解析后获取到正确小区的id

    其中city是城市代码,可以通过浏览器手工获取到。words是搜索的具体风景区名称。

    url链接 

    https://restapi.amap.com/v3/place/text?key=4b86820a7590de60e4f81f53e59ae17f&citylimit=true&output=json&

    key为申请的密钥,申请详细步骤文档有说明

    keywords 查询的关键词,如景区/小区名称

    city 查询的目标城市

    示例

    https://restapi.amap.com/v3/place/text?key=4b86820a7590de60e4f81f53e59ae17f&citylimit=true&output=json&keywords=中山陵景区&city=南京

    返回结果为json字符串

     

     

    提取景区/小区的id:B0FFHVEECG

    方案1

    1.然后通过poiid调用另外一个接口查询该景区/小区

    接口地址:

    https://ditu.amap.com/detail/get/detail?id=B0FFHVEECG

    参数id填写上面获取到的poiid=B0FFHVEECG

    1. 将返回的结果转成json然后逐层提取出来

    2.存入数据库或者csv文档

        def info(self, response):
            meta = response.meta
            data = json.loads(response.text)
            print(data)
            try:
                if data["status"] == "1":
                    spec = data["data"]["spec"]
                    border = spec["mining_shape"]["shape"]
                    print("border ",border)
                    AllCityDataSQL().UpdateXcJingDianiData((meta["id"]),border)
            except:
                print("查询错误~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + meta["url"])

    方案2

    2. 通过poiid查找边界信息,红色部分可以替换成其他城市代码(身份证前6位)和景区id

    接口地址 https://gaode.com/service/poiInfo?query_type=IDQ&pagesize=20&pagenum=1&qii=true&cluster_state=5&need_utd=true&utd_sceneid=1000&div=PC1000&addr_poi_merge=true&is_classify=true&zoom=11&id=B022F0071G&city=341003

    返回json字符串

     

    value字段 由一堆坐标组成的数值

     

    1.将返回的结果转成json ,然后逐层提取出来

    2.返回的value字段值还需修改一下,将_换成,才能使用

    3.存入数据库或者csv文档

    展开全文
  • spiders/spider.py中编写具体爬虫逻辑: import scrapy from scrapy.http import Request import json from urllib import parse class LezhuSpider(scrapy.Spider): name = 'lezhudai' allowed_domains = ['...
  • 高德api接口地址:https://lbs.amap.com/api/webservice/guide/api/search如果不是高德开发者可以申请为开发者第一步,申请”Web服务API”密钥(Key);第二步,拼接HTTP请求URL,第一步申请的Key需作为必填参数一同...
  • JAVA爬虫 WebCollector

    千次阅读 2014-12-03 21:08:13
    WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫爬虫内核: WebCollector致力于维护一个稳定、可扩的爬虫内核,便于开发者进行...
  • java爬虫

    2019-02-13 10:20:00
    WebCollector 是一个无须配置、便于二次开发的 JAVA 爬虫框架(内核),提供精简的的 API,只需少量代码即可实现一个功能强大的爬虫。 源码中集成了 Jsoup,可进行精准的网页解析,2.x 版本中集成了 selenium,可以...
  • 爬虫简介:WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫爬虫内核:WebCollector致力于维护一个稳定、可扩的爬虫内核,便于开发者...
  • WebCollector 网页爬虫

    2017-09-23 09:48:22
    WebCollector 是一个无须配置、便于二次开发的 Java 爬虫框架(内核),它提供精简的的 API,只需少量代码即可实现一个功能强大的爬虫。WebCollector-Hadoop 是 WebCollector 的 Hadoop 版本,支持分布式爬取。
  • 抓取网易云音乐《大学疆》的评论 一直喜欢使用网易云音乐,网易云歌曲下面的评论给其加分不少,所以这一篇来写一下怎么抓取歌曲下面的... - API地址:http://music.163.com/api/v1/resource/comments/R_SO_4_52...
  • webmagic垂直爬虫 v0.7.2

    2020-09-28 19:40:33
    为您提供webmagic垂直爬虫下载,webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。webmagic的核心非常简单,但是覆盖爬虫的整个...4、配置,但是可通过POJO+注解形
  • JAVA爬虫WebCollector

    2015-07-18 22:41:22
    WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫爬虫内核: WebCollector致力于维护一个稳定、可扩的爬虫内核,便于开发者...
  • 爬虫相关

    2015-09-02 13:58:42
    1、PhantomJS是一个拥有JavaScript API界面WebKit。  PhantomJS是一个界面的,包含了WebKit浏览器引擎和JavaScript API的脚本解释器。  http://blog.csdn.net/dxx1988/article/details/8330527 2、CasperJS...
  • 初识爬虫

    2018-07-19 22:29:52
    2 请求是状态协议,这次的请求和上次的请求没有任何关系,请求完了以后,服务器和客户端的连接会断掉。socket 保持长连接,请求以后,服务器和客户端的连接不会断掉 3 http有请求报文 和响应报文 请求报文: 1...
  • 网页_访问:使用WinInet的API方式访问网页,WinInet为Windows API .版本 2 .子程序 网页_访问, 字节集, 公开, 使用WinInet的API方式访问网页 .参数 网址, 文本型, , 完整的网页地址,必须包含http://或者https:// ...
  • 1、HTTP爬虫1、在node的http模块中有get和request连个接口来完成数据的获取或者提交,对于get和request我们可以去官网先看看这两个方法http://nodejs.cn/api/http.html#http_http_methods,这两个方法我们在后面的...
  • Java爬虫框架Webmagic

    2019-01-16 16:59:59
    webmagic是一个开源的Java爬虫框架,目标是简化爬虫的开发流程,让开发者专注于 逻辑功能的开发。webmagic的核心非常简单,但是覆盖爬虫的整个流程,也是很好的学习 ...配置,但是可通过POJO+注解形式实...
  • Python 爬虫之Google翻译实现

    万次阅读 热门讨论 2016-12-05 21:34:05
    用过一些翻译工具,发现还是Google翻译最准确,但是Google翻译现在没有免费的API,网上的一些爬虫资料也太过陈旧了,Google翻译的机制早都改了,完全无用。这里简单的提供一下实现,需要更多功能可以去增加。 谷歌...
  • 假如不用代理ip,爬虫业务必定路可行,因此大部分爬虫工作者都会去购买安全稳定的代理ip。使用了高质量的代理ip后,会不会就能够后顾之忧了呢?这个可不会这么容易,还要改进方案,有效分配资源,提升工作效率,...
  • 作为Java程序员最常用的爬虫工具,太多内容就不介绍了,以下3个网站可以满足所有需求。 官方网站 https://jsoup.org/ 中文API教程 http://www.open-open.com/jsoup/ Maven http://mvnrepository.com/artif...
  • java实现网络爬虫

    2015-04-21 17:56:41
    WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫。 https://github.com/CrawlScript/WebCollector java实现的爬虫开源...
  • 本文章主要介绍利用爬虫程序调用API去 下载 网易云音乐的歌曲 。 1. 文章思路 看看网易云音乐网站,如下多图所示: 首页(一级页面) 搜索页面(这里搜索 东方之珠) 然后点击第一首歌曲 播放页面(注意链接里边有...
  • 如果不用代理ip,爬虫业务必定路可行,因此大部分爬虫工作者都会使用安全稳定的代理ip。使用了高质量的代理ip后,会不会就能够后顾之忧了呢?这个可不会这么容易,还要改进方案,有效分配资源,提升工作效率。...
  • Java爬虫-WebCollector

    千次阅读 2014-11-11 14:44:07
    WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫爬虫内核: WebCollector致力于维护一个稳定、可扩的爬虫内核,便于开发者...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 220
精华内容 88
关键字:

无api爬虫

爬虫 订阅