捕捉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,在这个需求如扯淡的时代,需要的就是万能。。。。

posted on 2013-02-05 14:00  IT Ⅳ  阅读(486)  评论(0编辑  收藏  举报

导航