에 대한
package com.androidbegin.parselogintutorial;
import com.androidbegin.parselogintutorial.SingleRecipe.urlTask;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.koushikdutta.urlimageviewhelper.sample.UrlImageViewHelperSample;
import com.parse.GetCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.parse.ParseUser;
public class Bla extends Activity
{
ImageView iv,bm;
TextView recipeTitle;
String urlForImage = "";
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.bla_layout);
new urlTask("grilled mexican chicken").execute("grilled mexican chicken");
//new DownloadImageTask((ImageView)findViewById(R.id.RecipeImage)).execute(urlForImage);
}
public class DownloadImageTask extends AsyncTask<String, Void, Bitmap>
{
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls)
{
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try
{
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
in.close();
}
catch (Exception e)
{
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result)
{
bmImage.setImageBitmap(result);
}
}
public class urlTask extends AsyncTask<String, Void, String>
{
String str;
public urlTask(String str)
{
this.str = str;
}
String tmpResult = str;
Document doc;
protected String doInBackground(String... urls)
{
String urldisplay = urls[0];
String url = "https://www.google.co.il/search?q=grilled+mexican+chicken&es_sm=93&source=lnms&tbm=isch&sa=X&ei=h1OqVOH6B5bjaqGogvAP&ved=0CAgQ_AUoAQ&biw=1920&bih=955";
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24); // Chrome not working
HtmlPage page = null;
try
{
page = webClient.getPage(url);
} catch (FailingHttpStatusCodeException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
catch (MalformedURLException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
catch (IOException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
try
{
Document doc = Jsoup.parse(page.asXml());
Elements divs = doc.select(".rg_di");
for(Element div : divs)
{
Element img = div.select("a").get(0);
String link = img.attr("href");
System.out.println(link);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return tmpResult;
}
protected void onPostExecute(String result)
{
result = tmpResult;
urlForImage = tmpResult;
}
}
}
감사 this :
doc = Jsoup.connect(url).userAgent("Mozilla").get();
link은 동적으로 생성 된 것으로 보입니다. Jsoup 그러므로 .rg_di 클래스,
doc.select("div.rg_di").first();
반환 널 (null)을 포함하지 않는 HTML을 가져와 우리는 NullPointerException이 얻을.
HTML은 우리가 할 수있는 베스트이다
<img height="104" src="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcT-pctOxpuUcdq118aFU3s2miRfUa6Ev8eF-UsxARHV-vbcOUV8byEtt2YT" width="140">
모든 img
태그를 얻고 우리가 분석하는 다양한 솔루션이 있습니다 아이콘 목록이
Document doc = Jsoup.connect(url).userAgent("Mozilla").get();
Elements imgs = doc.select("img");
for(Element img : imgs){
String link = img.attr("src");
System.out.println(link);
}
/textinputassistant/tia.png
https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcT-pctOxpuUcdq118aFU3s2miRfUa6Ev8eF-UsxARHV-vbcOUV8byEtt2YT
https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQMq354p43ddqPcpV9-q_05YkmY7XUPgv6Sl2oQLqFxQ5-IkpGAAuFTLMM
https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTW-RinkkW_fBdlHzTJn6vNmR85TR58geQgfjQnEJmOqzjq0Oi-z-8zXjg
https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRUXLzKi3UyQ6mF9JD20Z1jYNhVxQz7tkhJIEGOL3kua8ptoQrvo8-Nco_X
https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTverQlzF_hauCabscWF4wHLb_q7g9M_UDKO6LaldSRHhsTj7CxtVF2yvc
...
을 연결 얻을 그들을 반복하는 jsoup에 의해 다운로드 니펫 동적 콘텐츠.link
나는 페이지를 렌더링하는 HtmlUnit과을 구현 한
편집
import java.io.IOException;
import java.net.MalformedURLException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
public class Main {
public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
String url = "https://www.google.co.il/search?q=grilled+mexican+chicken&es_sm=93&source=lnms&tbm=isch&sa=X&ei=h1OqVOH6B5bjaqGogvAP&ved=0CAgQ_AUoAQ&biw=1920&bih=955";
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24); // Chrome not working
HtmlPage page = webClient.getPage(url);
try {
Document doc = Jsoup.parse(page.asXml());
Elements divs = doc.select(".rg_di");
for(Element div : divs){
Element img = div.select("a").get(0);
String link = img.attr("href");
System.out.println(link);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
HtmlUnit과는 자신의 HTML 구문 분석 API를 가지고 있지만, 좀 더 직관적 jsoup
을 맡기 겠소
수정 2
는만큼 당신의 목표는 렌더링 및 안드로이드 장치 HtmlUnit과에 HTML 페이지를 구문 분석하는 것입니다으로 source
HtmlUnit과 안드로이드에 사용할 수없는 Java 클래스를 사용하는 좋은 옵션이 아닙니다. 그 외에, HtmlUnit은 다른 라이브러리를 사용합니다. 일부 라이브러리는이 라이브러리에 대한 종속성을 가질 수 있습니다. 그래서 HmlUnit만큼 멋진데, 안드로이드에서 실행되도록하는 것이 쉬운 일이 아닐 수도 있습니다.
- 당신은 솔루션의 this 종류를 시도 할 수 있습니다. 또는
- 자신을 고문하고 this 해결책을 시도해보십시오 (그렇지 않을 수도 있습니다).
- 가 웹 페이지를 렌더링하고 그것을 구문 분석 자바 서버를 만들 : 당신이 고려에 this 사람의 경험을 가지고가는 경우에 당신이 당신의 소프트웨어 아키텍처를 재 설계하는 경우 또는
- , 그것은 더 좋을 것이다. HTMLUnit + Jsoup
- 구문 분석 된 데이터를 서버의 파일 시스템에 JSON 형식으로 저장합니다. Gson
- android 앱이 JSON 파일을 요청할 때 JSON 파일을 보내는 서블릿을 만듭니다.
_error 403_가 표시 되나요? – gkiko
문제를 해결 했습니까? – gkiko