Facebook,Linkedin社交网站的模拟登陆和数据采集:
1.模拟登陆:
对于facebook,直接使用模拟用户请求获取用户cookie值的方法经测试较难或根本行不通,后使用 selenium框架通过代码对浏览器进行直接操作,获取操作账户的cookie值.
对于linkedin,因网站相似,使用相同的方法获取用户的cookie.
2.数据采集:
Facebook网数据采集:
1).通过关键字获取用户列表任务
通过模拟查询请求获取到的返回值response不是纯html格式的网页源码,需要对返回值进行调查研究,查找关键内容所在,经调查得知:关键内容在code标签下,并使用注释符注释,在使用源码解析Jsoup解析时,被注释掉的信息是不进行解析的,经查找,替换,使用Jsoup工具解析后获取到所需信息
2).获取用户最新发布的动态信息任务
和获取用户列表信息任务类似
Linkedin网数据采集:
1).通过关键字获取用户列表任务
模拟请求获取的返回值是类html的数据,关键内容经调查存放在code标签下,使用注释符注释,且以json的形式存在。
2).获取用户最新发布的动态信息任务
请求返回的数据存放在类js的数据结构下面,并使用注释符注释,以json的形式存在!
对于此次数据采集关键的地方在于模拟登陆获取cookie,对返回值进行解析!
附上部分网站解析模块的代码:
linkedin:
public void parserUserInfo() { String idStr=""; File file=new File("d:\\facebook.html"); String htmlcode=FileUtil.readString4("d:\\facebook.html"); htmlcode=htmlcode.replace("<!--", " "); htmlcode=htmlcode.replace("-->", " "); Document doc=null; doc = Jsoup.parse(htmlcode); List<Element> userIdList=new ArrayList<Element>(); userIdList=doc.select("._s0").select("._2dpc").select("._rw").select(".img"); if(userIdList.size()>0){ Element userId=userIdList.get(0); idStr=userId.attr("id"); System.out.println(idStr); idStr=idStr.substring(idStr.lastIndexOf("_")+1); System.out.println(idStr); } List<Element> moreList=new ArrayList<Element>(); moreList=doc.select(".pam").select(".uiBoxLightblue").select(".uiMorePagerPrimary"); if(moreList.size()>0){ Element more=moreList.get(0); String moreStr=more.attr("href"); moreStr="https://www.facebook.com/"+moreStr+"&"+idStr+"&__a=1"; System.out.println(moreStr); } List<Element> list=doc.select("._3u1").select("._gli").select("._5und"); System.out.println("数据大小:"+list.size()); for(int i=0;i<list.size();i++){ Element e=list.get(i); List<Element> nameList=new ArrayList<Element>(); nameList=e.select("._6a").select("._6b").select("._5d-4"); if(nameList.size()>0){ Element u=nameList.get(0); System.out.println(u.text()); } List<Element> glmList=new ArrayList<Element>(); glmList=e.select("._glm"); if(glmList.size()>0){ Element glm=glmList.get(0); System.out.println(glm.text()); } List<Element> ajwList=new ArrayList<Element>(); ajwList=e.select("._ajw"); if(ajwList.size()>0){ String myInfoStr=""; for(int j=0;j<ajwList.size();j++){ Element myInfo=ajwList.get(j); myInfoStr=myInfoStr+" "+myInfo.text(); } System.out.println(myInfoStr); } List<Element> imgList=new ArrayList<Element>(); imgList=e.select("._8o").select("._8s").select(".lfloat").select("._ohe"); if(imgList.size()>0){ Element img=imgList.get(0); List<Element> imList=new ArrayList<Element>(); imList=img.select("img"); if(imList.size()>0){ Element im=imList.get(0); String imgSrc=im.attr("src"); System.out.println(imgSrc); } System.out.println(""); } } }
linkedin:
@Override public void parserUserPageInfo() { List<UserPublish_Linkedin> parserPublicList=new ArrayList<UserPublish_Linkedin>(); // htmlcodeUserPage=FileUtil.readTxtFile("D://linkedin.txt"); // htmlcodeUserPage=FileUtil.readString4("D://linkedin.txt"); int firstIndex=htmlcodeUserPage.indexOf("_nS('com.linkedin.shared.controllers.FsController')"); int lastIndex=htmlcodeUserPage.indexOf("--></code><script id="); htmlcodeUserPage=htmlcodeUserPage.substring(firstIndex,lastIndex); System.out.println(htmlcodeUserPage); int efirstIndex=htmlcodeUserPage.indexOf("updates"); htmlcodeUserPage="{\""+htmlcodeUserPage.substring(efirstIndex); System.out.println(htmlcodeUserPage); try { JSONObject dataJson=new JSONObject(htmlcodeUserPage); JSONObject updatesJson=dataJson.getJSONObject("updates"); // JSONObject blocksJson=updatesJson.getJSONObject("blocks"); JSONArray blocksArray=updatesJson.getJSONArray("blocks"); for(int i=0;i<blocksArray.length();i++){ UserPublish_Linkedin userPublish=new UserPublish_Linkedin(); JSONObject blocksJson=blocksArray.getJSONObject(i); // JSONObject mblocks=blocksJson.getJSONObject("blocks"); JSONArray mBlocks=blocksJson.getJSONArray("blocks"); //text Start JSONObject nBlocks=mBlocks.getJSONObject(2); JSONArray wadss=nBlocks.getJSONArray("wads"); JSONObject wads=wadss.getJSONObject(0); String text=wads.get("text").toString(); userPublish.setPublishContent(text); System.out.println(text); //text End //time Start JSONObject timeBlocks=mBlocks.getJSONObject(1); JSONArray timemArray=timeBlocks.getJSONArray("blocks"); JSONObject time=timemArray.getJSONObject(1); String timeAgo=time.get("timeAgo").toString(); userPublish.setPublishTime(timeAgo); System.out.println(timeAgo); //time End //nickName Start JSONObject nickBlocks=mBlocks.getJSONObject(0); String nickName=nickBlocks.get("name").toString(); userPublish.setNickName(nickName); System.out.println(nickName); //nickName End //uId Start String updateId=blocksJson.getString("updateId"); System.out.println(updateId); //uId End Date date=new Date(); String crawlerTime=sdf.format(date); userPublish.setCrawlerTime(crawlerTime); // userPublish.setLinkedinUserId(param.getUser().getId()+""); // userPublish.setUserUid(param.getUser().getUid()); userPublish.setuId(updateId); parserPublicList.add(userPublish); } } catch (JSONException e) { e.printStackTrace(); } }
相关推荐
Linkedin开发客户方法总结,值得多看看。
LinkedIn系统的架构设计和架构描述,详细分析了LinkedIn的大数据处理流程和模式。给大数据架构设计和开发工程师一个很好的参考。
LinkedIn职业网络中的数据挖掘应用.pdf
RN的图像查看器组件,类似于Facebook和LinkedIn
作为LinkedIn公司产品与客户体验部门的副主管,尼沙尔负责梳理追溯到几十年前的工作记录,同时关注站内用户每分钟内形成的2,500种新关系。他需要审视美国的经济史(从1970到2000年,跳槽率增加了将近一倍,平均每...
清除Linkedin用户数据 安装 pip3 install --user linkedin_scraper 2.0.0版及pip3 install --user linkedin_user_scraper版本称为linkedin_user_scraper ,可通过pip3 install --user linkedin_user_scraper 建立 ...
这个包允许在上获取有关个人或公司的数据。 安装 npm i linkedin-client 用法 您需要名为“ li_at ”的Linkedin cookie。 这样,请求将代表您发送。 您可以按照检索您的 Linkedin 会话 cookie。 const ...
资源来自pypi官网。 资源全名:linkedin_scraper-2.7.5.tar.gz
Linkedin接口 API 调用 实例 里面含有一个实例,非常具有参考价值。
Linkedin入门教程.pdf
•Facebook个人资料:查看LinkedIn信息,相互联系和鸣叫•Twitter个人资料:查看LinkedIn信息,Facebook和LinkedIn的相互联系非常适合求职者,销售,招聘,企业家以及任何希望查找电子邮件地址的人。 如果您遇到任何...
Linkedin是一家商业客户导向的社交网络服务网站,成立于2002年12月并于2003年启动。2011年1月,LinkedIn有超过9000万的注册用户。到2012年1月,LinkedIn已经超过1.5亿的注册用户。 这是Linkedin分享的他们使用Play...
linkedin api for php 有相关的文档 网址参考,不过普片上只要你流程没错,代码只要把key secret放进去 程序就哦了 就收个1积分吧 这不自己也没积分了
Linkedin社交媒体网站模板是一款企业风格的社交媒体工作招聘交流网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
十大领英开发客户方法,图文并茂: 1. 导入邮箱联系人 2. 巧用”People you may know” 3. 巧用 “Who viewed your profile” 4. 巧用”People also viewed ” 5. 搜索框搜索People ...10. 利用Linkedin SEO
来自 linkedin 的快速视图布局库.zip,layoutkit是ios、macos和tvos的快速视图布局库。
linkedin 是国外的一个职业社交网站,在哪里可以查看注册用户的个人简历信息,但是如果想要实现开发任务,则需要模拟浏览器进行操作
LinkedinSpider, Linkedin爬虫,根据公司名字抓取员工的linkedin信息
登录到Twitter,Facebook和LinkedIn,并获取用户个人资料信息。 该演示应用程序使用Xamarin.Auth(用于验证用户身份和存储其帐户的跨平台API)nuget包来实现OAuth标准。 以下视频显示了如何开发Xamarin.iOS应用...
NodeJS工具导出Linkedin数据 安装 git clone https://github.com/nhduy1985/linkedin-export-tool.git cd linkedin-export-tool npm install 配置 mkdir export cp config.json.dist config.json vim config.json ...