Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Salesforce_http_call_out爬虫实例分享.pdf

Avatar for github2017luo github2017luo
March 26, 2019
320

 Salesforce_http_call_out爬虫实例分享.pdf

Avatar for github2017luo

github2017luo

March 26, 2019

Transcript

  1. 概要 ▪ 场景 在项目中我们经常会用到通过http call out方式和其他系统交互 将外部的数据实时读入到salesforce系统里面 ▪ salesforce通过REST方式访问外界站点步骤如下: 1、将Web

    Service的授权端点地址添加到Remote Site中: setup->Administer->Security Controls->Remote Site Settings 2、写代码进行访问 HttpRequest req = new HttpRequest(); req.setEndpoint('http://www.yahoo.com'); req.setMethod('GET'); String username = 'myname'; String password = 'mypwd'; Blob headerValue = Blob.valueOf(username + ':' + password); String authorizationHeader = 'BASIC ' + EncodingUtil.base64Encode(headerValue); req.setHeader('Authorization', authorizationHeader); Http http = new Http(); HTTPResponse res = http.send(req); System.debug(res.getBody());
  2. 概要 ▪ 场景 在项目中我们经常会用到通过http call out方式和其他系统交互 将外部的数据实时读入到salesforce系统里面 ▪ salesforce通过REST方式访问外界站点步骤如下: 1、将Web

    Service的授权端点地址添加到Remote Site中: setup->Administer->Security Controls->Remote Site Settings 2、写代码进行访问 HttpRequest req = new HttpRequest(); req.setEndpoint('http://www.yahoo.com'); req.setMethod('GET'); String username = 'myname'; String password = 'mypwd'; Blob headerValue = Blob.valueOf(username + ':' + password); String authorizationHeader = 'BASIC ' + EncodingUtil.base64Encode(headerValue); req.setHeader('Authorization', authorizationHeader); Http http = new Http(); HTTPResponse res = http.send(req); System.debug(res.getBody());
  3. 小视频去水印爬虫实例讲解 ▪爬取对象 tiktok Id: 80348038 ▪爬取步骤: 1、tiktok的授权端点地址添加到Remote Site中: https://api.tiktokv.com 2、写代码对用户80348038的作品进行爬取

    1)模拟tiktok的用户搜索操作获取uid https://api.tiktokv.com/aweme/v1/discover/search/?xxxx=yyyy&keyword=80348038 2)根据uid获取该用户的所有作品 https://api.tiktokv.com/aweme/v1/aweme/post/? xxxx=yyyy&user_id=' + uid + '&max_cursor=' + strMaxCusor + '&min_cursor=' + strMinCusor
  4. 具体代码 ▪模拟tiktok的用户搜索操作获取uid Http h = new Http(); HttpRequest req =

    new HttpRequest(); HttpResponse res; req.setHeader('Accept-Encoding', 'gzip, deflate '); req.setHeader('Connection', 'close '); req.setHeader('Cookie', 'odin_tt=xxxxx'); req.setHeader('Host', 'api.tiktokv.com '); req.setHeader('User-Agent', 'User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'); req.setEndpoint(' https://api.tiktokv.com/aweme/v1/discover/search/?xxxx=yyyy&keyword=80348038'); req.setMethod('GET'); res = h.send(req); Map<String, Object> jsonMap1 = (Map<String, Object>)JSON.deserializeUntyped(res.getbody()); List<Object> userlist =(List<Object>) jsonMap1.get('user_list'); String strUid = ''; for (Object obj1 : userlist) { Map<String, Object> userMap = (Map<String, Object>)obj1; Map<String, Object> user_infoMap = (Map<String, Object> )userMap.get('user_info'); strUid = (String)user_infoMap.get('uid'); }
  5. 具体代码 ▪模拟tiktok的用户搜索操作获取uid Http h = new Http(); HttpRequest req =

    new HttpRequest(); HttpResponse res; req.setHeader('Accept-Encoding', 'gzip, deflate '); req.setHeader('Connection', 'close '); req.setHeader('Cookie', 'odin_tt=xxxxx'); req.setHeader('Host', 'api.tiktokv.com '); req.setHeader('User-Agent', 'User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'); req.setEndpoint(' https://api.tiktokv.com/aweme/v1/discover/search/?xxxx=yyyy&keyword=80348038'); req.setMethod('GET'); res = h.send(req); Map<String, Object> jsonMap1 = (Map<String, Object>)JSON.deserializeUntyped(res.getbody()); List<Object> userlist =(List<Object>) jsonMap1.get('user_list'); String strUid = ''; for (Object obj1 : userlist) { Map<String, Object> userMap = (Map<String, Object>)obj1; Map<String, Object> user_infoMap = (Map<String, Object> )userMap.get('user_info'); strUid = (String)user_infoMap.get('uid'); }
  6. 具体代码 ▪根据uid获取该用户的所有作品 Http h = new Http(); HttpRequest req =

    new HttpRequest(); HttpResponse res; req.setHeader('Accept-Encoding', 'gzip, deflate '); req.setHeader('Connection', 'close '); req.setHeader('Cookie', 'odin_tt=xxxxx'); req.setHeader('Host', 'api.tiktokv.com '); req.setHeader('User-Agent', 'User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'); req.setEndpoint('https://api.tiktokv.com/aweme/v1/aweme/post/? xxxx=yyyy&user_id=' + uid + '&max_cursor=' + strMaxCusor + '&min_cursor=' + strMinCusor '); req.setMethod('GET'); res = h.send(req); Map<String, Object> dataMap = (Map<String, Object>)JSON.deserializeUntyped(res.getbody()); List<Object> awemeListOjb = (List<Object>) dataMap.get('aweme_list'); for (Object obj2 : awemeListOjb) { Map<String, Object> awemeMap = (Map<String, Object>)obj2; Map<String, Object> videoMap = (Map<String, Object>) awemeMap.get('video’); Map<String, Object> addrMap = (Map<String, Object>) videoMap.get('play_addr’); List<Object> urlList = (List<Object>) addrMap.get('url_list') } ;
  7. 具体代码 ▪根据uid获取该用户的所有作品 Http h = new Http(); HttpRequest req =

    new HttpRequest(); HttpResponse res; req.setHeader('Accept-Encoding', 'gzip, deflate '); req.setHeader('Connection', 'close '); req.setHeader('Cookie', 'odin_tt=xxxxx'); req.setHeader('Host', 'api.tiktokv.com '); req.setHeader('User-Agent', 'User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'); req.setEndpoint('https://api.tiktokv.com/aweme/v1/aweme/post/? xxxx=yyyy&user_id=' + uid + '&max_cursor=' + strMaxCusor + '&min_cursor=' + strMinCusor '); req.setMethod('GET'); res = h.send(req); Map<String, Object> dataMap = (Map<String, Object>)JSON.deserializeUntyped(res.getbody()); List<Object> awemeListOjb = (List<Object>) dataMap.get('aweme_list'); for (Object obj2 : awemeListOjb) { Map<String, Object> awemeMap = (Map<String, Object>)obj2; Map<String, Object> videoMap = (Map<String, Object>) awemeMap.get('video’); Map<String, Object> addrMap = (Map<String, Object>) videoMap.get('play_addr’); List<Object> urlList = (List<Object>) addrMap.get('url_list') } ;
  8. 具体代码 ▪根据uid获取该用户的所有作品 Http h = new Http(); HttpRequest req =

    new HttpRequest(); HttpResponse res; req.setHeader('Accept-Encoding', 'gzip, deflate '); req.setHeader('Connection', 'close '); req.setHeader('Cookie', 'odin_tt=xxxxx'); req.setHeader('Host', 'api.tiktokv.com '); req.setHeader('User-Agent', 'User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'); req.setEndpoint('https://api.tiktokv.com/aweme/v1/aweme/post/? xxxx=yyyy&user_id=' + uid + '&max_cursor=' + strMaxCusor + '&min_cursor=' + strMinCusor '); req.setMethod('GET'); res = h.send(req); Map<String, Object> dataMap = (Map<String, Object>)JSON.deserializeUntyped(res.getbody()); List<Object> awemeListOjb = (List<Object>) dataMap.get('aweme_list'); for (Object obj2 : awemeListOjb) { Map<String, Object> awemeMap = (Map<String, Object>)obj2; Map<String, Object> videoMap = (Map<String, Object>) awemeMap.get('video’); Map<String, Object> addrMap = (Map<String, Object>) videoMap.get('play_addr’); List<Object> urlList = (List<Object>) addrMap.get('url_list') } ; Pattern p = Pattern.compile('https://api.tiktokv.com/aweme/v1/playwm.*?line=0.*'); Matcher pm = p.matcher((String)str );