精华内容
下载资源
问答
  • python: 百度地图api爬虫

    千次阅读 2019-10-10 16:42:58
    API的工作机制与爬虫的两步类似,但也有些许不同: 1、API一般只需要设置url即可,且请求方式一般为“get”方式 2、API服务器返回的通常是json或xml格式的数据,解析更简单 本篇我们就演示如何...

    python网络爬虫的本质就是两步:

    • 设置请求参数(url,headers,cookies,post或get验证等)访问目标站点的服务器;
    • 解析服务器返回的文档,提取需要的信息。

    而API的工作机制与爬虫的两步类似,但也有些许不同:

    • 1、API一般只需要设置url即可,且请求方式一般为“get”方式
    • 2、API服务器返回的通常是jsonxml格式的数据,解析更简单

    本篇我们就演示如何运用Python结合百度地图API来批量获取想要的信息。

    • 访问百度地图需要一个信令(ak), 具体申请百度apiak网上都有教程, 这里就不叙述了…
    • Place APIWeb服务API
      • 打开百度地图APIPOI模块,网址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-placeapi,这个页面详细介绍了Place API的请求参数及返回数据的情况。
      • 今天我们使用百度地图api的地点检索
    import requests
    import json
    import pymysql
    
    ak = '你自己申请的百度地图api的ak'
    url = 'http://api.map.baidu.com/place/v2/search?query=药店&region=郑州&output=json&output=json&ak={}&page_num={}&page_size=20'
    # query=药店    是你想查询的内容 
    # region=郑州   是你想查询的城市
    # page_num={}   是页码, 意思是第几页
    # page_size=20     是每页显示的个数, 最大是20个
    i = 0       # 这里可以使用for循环 ,不过容易出现并发量超过约定,所以我这里先不用循环了 
    response = requests.get(url.format(ak,i))               # 对网页进行请求
    jsondata = json.loads(response.text)          			# 对下载的内容进行loads一下
    
    for j in jsondata['results']:
        name = j.get('name')
        print('商店名字是:', name)
        # print(type(name))
        address = j.get('address')
        print('详细地址是:', address)
        tel = j.get('telephone')
        print('联系电话是:', tel)
        print('*' * 50)
    # 我做的是存入mysql的操作, 具体结果如下:
    

    在这里插入图片描述

    展开全文
  • douban 豆瓣API爬虫项目 php 采用 thinkphp5.2框架 项目在 的基础上进行修改 感谢 xhboke 项目文档暂时参考 后期会更新
  • API爬虫--Twitter实战

    千次阅读 2016-09-10 14:26:02
    本篇将从实际例子出发,展示如何使用api爬取twitter的数据。1. 创建APP进入https://apps.twitter.com/,创建自己的app。只有有了app才可以访问twitter的api并抓取数据。只需创建最简单的app即可,各种信息随意填写,...

    本篇将从实际例子出发,展示如何使用api爬取twitter的数据。


    1. 创建APP

    进入https://apps.twitter.com/,创建自己的app。只有有了app才可以访问twitter的api并抓取数据。只需创建最简单的app即可,各种信息随意填写,并不需要进一步的认证,我们要的只是app的Consumer Key (API Key), Consumer Secret (API Secret), Access Token 和 Access Token Secret。鉴于单app的爬取次数限制,可以申请很多app来提高总次数。


    2. 确定要使用的API

    twitter提供多种类型的api,其中常用的有REST APIStreaming API。前者是常见的api类型,后者则可以跟踪监视一个用户或者一个话题。

    REST API下面有很多的api,有价值爬取的有以下几个:

    • GET statuses/user_timeline:返回一个用户发的推文。注意twitter里回复也相当于发推文。
    • GET friends/ids:返回一个用户的followees。
    • GET followers/ids:返回一个用户的followers。
    • GET users/show:返回一个用户的信息。

    3. 官方类库

    下载twitter的类库。说实话,api爬虫好不好写,全看类库提供的功能强不强。twitter提供了多种语言的类库,本文选择java类库。


    4. 验证授权

    凡是访问api,都需要验证授权,也即:OAuth。一般流程为:以app的id和key,用户的用户名和密码为参数访问授权api,返回一个token(一个字符串),即算是授权完成,之后只需访问其他api时带上这个参数就行了。

    当然,不同的网站授权过程各有不同。较为繁琐的比如人人网需要先跳转至回调网页,用户登陆后再返回token。twitter的授权过程也不简单(需要多次http请求),但是幸运的是类库中已经帮我们实现了此过程。

    例,twitter的Auth1.1授权,其中需要设置的四个参数在app管理界面就能看到:

    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setOAuthAccessToken(accessToken);
    cb.setOAuthAccessTokenSecret(accessTokenSecret);
    cb.setOAuthConsumerKey(consumerKey);
    cb.setOAuthConsumerSecret(consumerSecret);
    OAuthAuthorization auth = new OAuthAuthorization(cb.build());
    Twitter twitter = new TwitterFactory().getInstance(auth);

    twitter还提供一种无需用户授权(需app授权)的选择,访问某些api时可用次数比Auth1.1授权的要多:

    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setApplicationOnlyAuthEnabled(true);
    Twitter twitter = new TwitterFactory(cb.build()).getInstance();
    twitter.setOAuthConsumer(consumerKey, consumerSecret);
    try {
        twitter.getOAuth2Token();
    } catch (TwitterException e) {
        e.printStackTrace();
    }

    5. 调用API

    授权之后,我们就可以真正地开始爬数据了。

    1. REST API

    爬取用户follower,getFollowersIDs方法每次返回最多5000个follower,cursor用户标记从哪开始:

    IDs iDs = twitter.getFollowersIDs(uid, cursor);

    爬取用户推文:

    ResponseList<Status> status = twitter.getUserTimeline(uid, page);
    1. Streaming API

    监视一个用户的所有行为,其中UserStreamListener太长了只截取了一部分:

    TwitterStream twitterStream;
    twitterStream = new TwitterStreamFactory(cb.build()).getInstance();
    twitterStream.addListener(listener);
    twitterStream.user();
    
    private static final UserStreamListener listener = new UserStreamListener() {
            @Override
            public void onStatus(Status status) {
                System.out.println("onStatus @" + status.getUser().getScreenName() + " - " + status.getText() + status.getCreatedAt());
            }
    
            @Override
            public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
                System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId());
            }
    
            @Override
            public void onDeletionNotice(long directMessageId, long userId) {
                System.out.println("Got a direct message deletion notice id:" + directMessageId);
            }
    
            @Override
            public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
                System.out.println("Got a track limitation notice:" + numberOfLimitedStatuses);
            }
    
            @Override
            public void onScrubGeo(long userId, long upToStatusId) {
                System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId);
            }
            ...

    6. 如何提速

    api都是有访问次数限制的,twitter中不少都是以15分钟为单位的。为了爬取能达到一定的速度,我申请了50个app,只要pc给力,那么我就有50倍于单app的速度了。

    那么我是单线程轮流用50个app还是50个线程一起呢?显然50个线程不可行,通常20个线程以上的时候花费在线程同步上的时间就很可观了,并且我们写的是爬虫,50个线程同时写数据库会严重拖慢速度。那么单线程呢?考虑到每个app用完其访问次数是需要一定时间的,特别要是网络状况不好的话次数用完可能会花费数分钟,那么15分钟显然无法让每个app都能访问api,造成了浪费。

    所以我选择了线程池。IO密集型任务,一般将线程数设置为cpu的核数的两倍。同时设置两个队列,分别供各个线程读取数据和写数据。n个线程同时跑爬虫,再分一个线程出来维护那两个队列,也就是说,读写数据库的就这个线程。框架如下:
    api-1

    好了,到这里应该能写twitter的api爬虫了。剩下的就是阅读各个api繁琐的文档,以及和各种bug搏斗的时间了╥﹏╥

    展开全文
  • python调用新浪API爬虫

    千次阅读 2015-10-23 16:57:15
    1. 索引:python调用新浪微博API项目实践 2. 下载pytho SDK 。下载地址,默认支持python2.6/2.7. 改为python3.4版本。(想要现成的可直接联系作者) 3. 报错:"访问出错了.你所访问的站点在新浪微博的认证失败,请...

    1. 申请新浪账号,建立我的应用,获取app key,然后:python调用新浪微博API项目实践

    2. 下载pytho SDK 。下载地址,默认支持python2.6/2.7. 改为python3.4版本。

    3. 报错:"访问出错了.你所访问的站点在新浪微博的认证失败,请联系****或者稍后再试.(error:redirect_uri_mismatch) 新浪微博版权所有." [SDK]新浪微博请求授权显示错误页面的解决方法

    4. python导入py文件报错怎么办

    展开全文
  • 零、环境 操作系统:Windows 10 Python版本:3.5+ ...通过学习这门课程可以掌握开发api爬虫的方法、数据分析、api编写和网站开发。 课程中要爬取的网站是 美团外卖,用到的即使包括但不限于如下内容: Dj...

    零、环境

    1. 操作系统:Windows 10
    2. Python版本:3.5+
    3. IDE:PyCharm
    4. 数据库:MySQL8.0

    一、课程简介

    这门课主要讲解爬虫中API爬虫的开发,这门课是一门偏向实战的课程,需要读者具备Http知识和python基础。通过学习这门课程可以掌握开发api爬虫的方法、数据分析、api编写和网站开发。
    课程中要爬取的网站是 美团外卖,用到的即使包括但不限于如下内容:

    1. Django
    2. Django Rest Framework
    3. requests
    4. MySql
    5. More

    在课程中我不会提供源代码,我希望大家可以自己动手写写,这样才能真正掌握。学习过程中,如果存在不明白的地方,可以通过微信扫描二维码Chat快问向我提问。
    FlY7q0.jpg

    展开全文
  • 百度api就是基于百度地图的开发接口,这么大的地图公司居然给开发接口真的很感激哎! 所以,言归正传。现在项目需求要把乌鲁木齐市内的所有清真寺都用矢量圈出来,然后做点统计啥的,最后做个专题图产品。 怎么把...
  • 文章目录前言一、API是什么?二、步骤1.注册和风天气账号2.获取location3.获取天气数据3.获取天气数据总结 前言 不知不觉,我已经是快大三了,接触过C,C++,Python。但感觉什么都会一点点,但细想又什么都不会,最后...
  • 聚合数据API爬虫:Python

    千次阅读 2016-03-10 21:38:51
    from db import run_sql from config import ...1.本程序可自动爬去聚合数据API,可根据需求自己定制 2.程序使用BeautifulSoup模块,在使用前需要安装 BeautifulSoup4 pip install bs4
  • 第3节:要爬取的api接口分析 第4节:开始写爬虫 数据库模块 数据存储模块 数据爬取模块 第5节:使用代理IP 爬取代理IP 验证IP是否可用 爬虫随机使用IP 第6节:使用多线程 什么是多线程 编写多线程代码 防止爬虫...
  • 基于网站API爬虫

    千次阅读 2018-01-19 19:14:29
    现在很多网站有直接的开发者API可以使用,这里我们使用豆瓣的开放API来根据电影名称,爬取电影的豆瓣评分 1. 进入配置好的编程环境 在cmd中进入之前配置好的编程环境 activate course_py35 安装 Jupyter ...
  • 本下载包中的程序在vs2013环境下编写,使用C++语言调用windows api进行爬虫演示(百度log图片下载,公司管理界面爬虫
  • 好玩的API调用之—星座运势API爬虫 更多技术文章请访问我的个人博客http://www.rainweb.site平时写程序经常需要用到一些服务,像翻译,天气预报,星座什么的,我一般都是用Python写个爬虫去提供这些服务的网站爬...
  • 神箭手云爬虫API文档

    2016-05-09 16:15:40
    手把手教你如何在神箭手云爬虫开发平台(shenjianshou.cn)上使用简单的几行javascript开发爬虫爬取网站上的数据。包含api接口详细介绍和Demo样例,可以直接贴到神箭手上运行。
  • 封装的学校网站爬虫API接口,可用于各种语言编程的接口。
  • jsoup爬虫中文api

    2015-10-10 15:36:44
    api来源于http://www.open-open.com/jsoup/,此文档只是作为备份,已备不时之需。
  • 请参考源码,文字是最先得想法,没有再做更改。...喜欢爬虫的可以加我Q(四七零五八一九八五)交流,我后面会更新自己在机器学习和大数据方面的探索。因为还在实习,而且python学习时间不长,如有纰漏,希望大家点评。
  • 下面小编就为大家带来一篇python爬虫之百度API调用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 使用sqlmapapi进行爬虫扫描

    千次阅读 2017-03-26 15:43:07
    《使用sqlmapapi.py批量化扫描实践》http://drops.wooyun.org/tips/6653 看看他所封装的sqlmapapi的类: #!/usr/bin/python #-*-coding:utf-8-*- import requests import time import json
  • 好玩的API调用之—天气预报的API调用与爬虫 更多技术文章请访问我的个人博客http://www.rainweb.site平时写程序经常需要用到一些服务,像翻译,天气预报,星座什么的,我一般都是用Python写个爬虫去提供这些服务的...
  • 爬网的数据不如API所获得的那么干净,但是好处是您可以摆脱API的速率限制和限制。 理想情况下,您可以从Twitter搜索获取所有数据。 警告:请保持礼貌,并遵守。 安装 安装conda ,您可以从获得它。 经过测试的...
  • python网络爬虫-使用APIAPI通用规则

    千次阅读 2017-09-19 09:28:50
    和大多数网络数据采集的方式不同,API用一套非常标准的规则生成数据,而且生成的数据也是按照非常标准的方式组织的。因为规则很标准,所以一些简单、基本的规则很容易学,也可以帮你快速地掌握任意API的用法。
  • 数据爬虫 pymysql01.py RESTful API NewBaseModel 数据模型(供SqlalchemyCommand使用) 一、数据库 1、MySQLCommand类涉及到数据库操作,有三个函数: insertData():将爬到的数据存入数据库 selectAllData():通过api...
  • Python网络爬虫案例:百度地图API 使用百度API获取数据的实践案例,涉及的技术包括: 爬取网页:使用Requests请求百度地图API地址 解析网页:提取json数据 存储数据:存储至MySQL数据库 1.项目描述 通过百度...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,078
精华内容 23,631
关键字:

无api爬虫

爬虫 订阅