2

So I've been trying to figure out how to get jsoup to work in Android studio for web scraping. I'm trying to get it to load pictures that it pulls from another site such as google images.

When I do jsoup.parse("[anything]") it runs, but doesn't load anything, but if I do jsoup.connect("[anything]").get() and add the try-catch statement it breaks.

I've followed numerous tutorials to see if I loaded the dependency incorrectly, but that wasn't the problem. At this point, I'm not sure why parse works, but connect doesn't.

Here's the stack trace...

--- beginning of crash
06-06 20:52:40.220 2844-2844/com.[private].learnjsoup E/AndroidRuntime:FATAL EXCEPTION: main
                                                                      Process: com.[private].learnjsoup, PID: 2844
                                                                      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.[private].learnjsoup/com.[private].learnjsoup.MainActivity}: android.os.NetworkOnMainThreadException
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                          at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                          at android.os.Looper.loop(Looper.java:148)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                       Caused by: android.os.NetworkOnMainThreadException
                                                                          at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
                                                                          at java.net.InetAddress.lookupHostByName(InetAddress.java:431)
                                                                          at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
                                                                          at java.net.InetAddress.getAllByName(InetAddress.java:215)
                                                                          at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
                                                                          at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188)
                                                                          at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157)
                                                                          at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100)
                                                                          at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357)
                                                                          at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340)
                                                                          at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
                                                                          at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
                                                                          at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
                                                                          at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)
                                                                          at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:563)
                                                                          at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540)
                                                                          at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227)
                                                                          at org.jsoup.helper.HttpConnection.get(HttpConnection.java:216)
                                                                          at com.shaynamehta.learnjsoup.MainActivity.onCreate(MainActivity.java:19)
                                                                          at android.app.Activity.performCreate(Activity.java:6237)
                                                                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                          at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                          at android.os.Looper.loop(Looper.java:148) 
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                          at java.lang.reflect.Method.invoke(Native Method) 
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Shay
  • 21
  • 3

1 Answers1

0

I'm trying to get it to load pictures that it pulls from another site(...)

Here is how to load a picture with Jsoup.

String imageUrl = "...";

Connection.Response response = Jsoup //
    .connect(imageUrl) //
    .ignoreContentType(true) // Needed for fetching image
    .execute();

byte[] imageData = response.bodyAsBytes();

See also

Community
  • 1
  • 1
Stephan
  • 41,764
  • 65
  • 238
  • 329