将特定文本块从网站提取到Android App

时间:2013-04-22 17:35:52

标签: android web web-scraping

我正在开发一个Android应用程序,它必须从网站提取数据,提取的数据将显示在应用程序的文本视图中

在尝试了我在谷歌搜索和Stackoverflow中找到的所有可能的方法后,我仍然无法处理数据,现在任何人都可以共享,如果他们已经完成了..

详细 网站:https://www.amrita.edu/campus/bengaluru

在本网站中,我希望提取最新新闻块和即将发生的事件的数据

这是代码:我使用JSOUP来提取

package out.in;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.select.Elements;
import org.w3c.dom.Document;
import android.app.Activity;
import android.os.Bundle;
import android.sax.Element;
import android.widget.TextView;
import android.widget.Toast;

  public class HtmlExtracterActivity extends Activity {
/** Called when the activity is first created. */


//  url
   static final String URL = "https://www.amrita.edu/campus/bengaluru";
@Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);


    try {
        ((TextView)findViewById(R.id.tv)).setText(getdata());
    } 
    catch (Exception ex) {

        ((TextView)findViewById(R.id.tv)).setText("Error");

    }  

 }



  protected String getdata() throws Exception {
        String result = "";
        // get html document structure
        Document document = (Document) Jsoup.connect(URL).get();


        // selector query
       *********Need help 
        // check results
        *********Need help
        return result;
    }

}

我已在Manifest文件中提供了Internet权限 和

Xml文件如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<TextView android:text=" "

android:id="@+id/tv" android:layout_width="wrap_content"
 android:layout_height="wrap_content"></TextView>
 </LinearLayout>

我会提前感谢所需的帮助

1 个答案:

答案 0 :(得分:0)

您没有提到您遇到的确切问题。您是否试图在此处查看返回的内容:

Document document = (Document) Jsoup.connect(URL).get();

我假设这可能是因为上述代码中缺少User-Agent。请尝试此操作,如果您仍然遇到错误,请告诉我们:

  
    

响应响应= Jsoup.connect(位置)                .ignoreContentType(真)                .userAgent(“Mozilla / 5.0(Windows NT 6.1; Win64; x64; rv:25.0)Gecko / 20100101 Firefox / 25.0”)
               .referrer( “http://www.google.com”)
               .timeout(12000)                .followRedirects(真)                .execute();

  
     

Document doc = response.parse();用户代理

     

使用最新的用户代理。这是完整的清单   http://www.useragentstring.com/pages/Firefox/

     

超时

     

另外不要忘记添加timout,因为有时它需要更多   正常超时下载页面。

     

Referer的

     

将引用者设置为谷歌。

     

关注重定向

     

按照重定向进入页面。

     

执行()而不是get()

     

使用execute()获取Response对象。哪个可以帮你查一下   对于内容类型和状态代码的错误。

     

来源:https://stackoverflow.com/a/20284953/1262177