zoukankan      html  css  js  c++  java
  • 捕捉Facebook Like的数据

    领导的要求向来稀奇古怪,这里让我爬Facebook 的Like数据了,页面看了半天,没找到好的方法,毕竟是一段JS,而selenium总是抓不住JS的内容,于是想到了一个很折中的方法。

     1 import java.io.BufferedReader;
     2 import java.io.BufferedWriter;
     3 import java.io.File;
     4 import java.io.FileReader;
     5 import java.io.FileWriter;
     6 import org.openqa.selenium.By;
     7 import org.openqa.selenium.WebDriver;
     8 import org.openqa.selenium.WebElement;
     9 import org.openqa.selenium.firefox.FirefoxDriver;
    10 
    11 public class facebook {
    12     public static void main(String args[]){
    13         File f1 = new File("C:/new9.txt");
    14         File f2 = new File("C:/facebook.txt");
    15         String line="";
    16         String value="0";
    17         WebDriver dr = new FirefoxDriver();    
    18          try {
    19              
    20                FileReader reader = new FileReader(f1);
    21                FileWriter writer = new FileWriter(f2,true);
    22                BufferedReader br = new BufferedReader(reader);
    23                BufferedWriter bw = new BufferedWriter(writer);
    24                while((line=br.readLine())!=null){
    25                    //文字处理根据自己的需求来处理
    26                    if(line.indexOf(".com//")!=-1){
    27                        line=line.replaceAll(".com//", ".com/");
    28                        line=line.replaceAll(":","%3A");
    29                        line=line.replaceAll("/","%2F");
    30                        //获取站点上的facebook JS内容
    31                        dr.get("https://www.facebook.com/plugins/like.php?api_key=&locale=en_US&sdk=joey&channel_url=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D18%23cb%3Df27c66007%26origin%3Dhttp%253A%252F%252Fwww.idealhomegarden.com%252Ff313e3c198%26domain%3Dwww.idealhomegarden.com%26relation%3Dparent.parent&href="+line+"&node_type=link&width=100&font=arial&layout=button_count&colorscheme=light&show_faces=false&send=false&extended_social_context=false");
    32                        try{
    33 //                           等待时间,如有需要可以添加,有时候网速太好,会报错
    34 //                           dr.manage().timeouts().implicitlyWait(10000, TimeUnit.SECONDS);
    35                            WebElement element = dr.findElement(By.xpath("//span[@class='pluginCountTextDisconnected']"));
    36                            value=element.getText();
    37                            System.out.println(value);
    38                            bw.write(value);
    39                            bw.newLine();
    40                            bw.flush();
    41                        }catch(Exception e){
    42                            System.out.print("未找到网站");
    43                        }      
    44                    }
    45                    else{
    46                        value="0";
    47                        bw.write(value);
    48                        bw.newLine();
    49                        bw.flush();
    50                    }
    51                }
    52                dr.close();
    53                reader.close();
    54                writer.close();
    55           }catch (Exception e){
    56               System.out.print("系统错误");
    57           }
    58     }
    59 }

     有些人会问,为什么用selenium,这个性能比较慢,而且多占内存,这个主要考虑衍生性了,这个还能抓google的,google的URL是HTTPS的,防止爬虫获取数据,当然写个多线程会更好。另外,这样的方式能抓各式各样的LIKE,在这个需求如扯淡的时代,需要的就是万能。。。。

  • 相关阅读:
    mui-app 拍照、视频、图片选择,自动上传
    vue table大屏自动刷新滚动效果
    ant-design vue table表格高亮某一行 某一格
    vue-cli@3 ht 引入使用
    JAVA匿名内部类
    JAVA基本类型和引用类型
    引用 IO流学习详细教程
    JAVA多态
    JAVA数据类型能串门不?
    JAVA基本数据类型
  • 原文地址:https://www.cnblogs.com/leonxiaosi/p/2892897.html
Copyright © 2011-2022 走看看