参考链接 Tag: 爬虫
网络爬虫抓取数据一般有两种难度,一种是指对方数据内容有加密的,一般APP软件的数据内容都有加密,这时候就需要逆向解析app数据了。第二种就是,必须登录后才能抓取到数据,就登录后目标网站也会限制IP的访问次数。 对于需要登录采集抓取数据的APP,我们可以指定正确的抓取策略来完成采集工作。 就比如如何抓取脉脉APP: 1、抓取目标,抓取脉脉APP上的职业信息 2、了解脉脉如何使用和分析脉脉APP的产品形态(PC端和APP需要登录才能采集) 3、分析APP对访问的频率控制,可以进行手动测试,登录账号后快速访问页面,访问多次后,就有提示频繁访问,这时候就需要统计下访问了多少次后才会出现频繁。 4、对于脉脉需要大量账号登陆才能抓取的APP,一个账号频繁更换IP抓取也会出问题 5、分析脉脉的分享功能,通过分析功能分析出,我们可以把个人的详细页面分析到微信里,通过微信 打开,就不需要登陆了,通过分享微信后,爬虫抓包后会返回一个URL,URL链接就不需要登陆,这个这个URL链接对访问的次数频率不是很严格。 总结:登陆脉脉,指定抓取目标,解决登陆问题,分享抓取的目标详细信息分析到微信里,返回URL链接,访问URL链接获取数据信息。解决登陆问题后只需要大量的爬虫代理IP就可以成功抓取到数据。具体可以参考以下代码,仅供参考: import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class Demo { public static void main(String[] args) { try{ // 代理服务器(产品官网 www.16yun.cn) final static String ProxyHost = "t.16yun.cn"; final static String ProxyPort = "31111"; System.setProperty("http.proxyHost", ProxyHost); System.setProperty("https.proxyHost", ProxyHost); System.setProperty("http.proxyPort", ProxyPort); System.setProperty("https.proxyPort", ProxyPort); // 代理验证信息 final static String ProxyUser = "username"; final static String ProxyPass = "password"; System.setProperty("http.proxyUser", ProxyUser); System.setProperty("http.proxyPassword", ProxyPass); System.setProperty("https.proxyUser", ProxyUser); System.setProperty("https.proxyPassword", ProxyPass); // 设置IP切换头 final static String ProxyHeadKey = "Proxy-Tunnel"; // 设置Proxy-Tunnel Random random = new Random(); int tunnel = random.nextInt(10000); String ProxyHeadVal = String.valueOf(tunnel); // 处理异常、其他参数 Document doc = Jsoup.connect(url).timeout(3000).header(ProxyHeadKey, ProxyHeadVal).get(); if(doc != null) { System.out.println(doc.body().html()); } }catch (IOException e) { e.printStackTrace(); } } }