作者 主题: 用processing里的client类抓数据,为什么不显示啊?  (阅读 3293 次)

terrytan

  • Newbie
  • *
  • 帖子: 4
用processing里的client类抓数据,为什么不显示啊?
« 于: 六月 16, 2012, 12:39:43 上午 »
import processing.net.*;
Client myClient;
String input="";
String displayString="";
float myScale=1.0, myRatioX = 0.0, myRatioY = 0.0;

void setup() {
  myClient = new Client(this, "baike.baidu.com", 80);
  myClient.write("GET /view/460250.htm HTTP/1.1\n");
  myClient.write("Accept: text/html, text/xml\n");
  myClient.write("Host: baike.baidu.com\n\n");

  size(900, 300, P3D);
  PFont font = loadFont("ArialMT-48.vlw");
  textFont(font, 48);
  frameRate(20);
  smooth();
}

void draw()
{
  background(100);

  if (myClient.available() > 0) {
    input += myClient.readString();
   
    String tokens[] = splitTokens(input, "<>\n");
   
    for (int i = 0 ; i < tokens.length ; i++) {
      if (tokens.equals("Title")) {
        displayString = tokens[i+1];
      }
    }
   
  }
 
  if ((displayString.length() > 0) && (myScale > 0)) {

    myRatioX += (PI/300);
    myRatioY += (PI/460);
    myScale -= 0.005;
 
    scale(myScale);
    pushMatrix();
    translate( 50, height/2, 0);
    rotateX(myRatioX);
    rotateY(myRatioY);
    rotateZ(myRatioY/4);
    text(displayString, 0, 0);
    popMatrix();
  }
}

哪里错了呢?

ChocolateUniverse

  • Jr. Member
  • **
  • 帖子: 97
  • BigQ 勤劳勇敢,爱好艺术
Re: 用processing里的client类抓数据,为什么不显示啊?
« 回复 #1 于: 六月 16, 2012, 11:47:04 上午 »
您的代码中,GET的内容取到了,内容的解析有些问题。建议在代码中加入 print来调试。
BigQ 勤劳勇敢 爱好艺术

lanthec

  • Newbie
  • *
  • 帖子: 5
Re: 用processing里的client类抓数据,为什么不显示啊?
« 回复 #2 于: 九月 19, 2012, 02:52:35 下午 »
同楼上,因为您这里的条件是当某个token是title的时候
但是事实上抓到的整个数据中,没有一个单独的token是title,
可以尝试在for 中加入
if(i<100){
      println(i);
      println(tokens);
      }
来查看前100个token分别是什么,您就明白了

主要原因还是因为收到的信息太乱了,建议换个网站试试