Я новичок в android. Я пытаюсь создать приложение, которое получает исходный код веб-страницы, получает URL-адреса всех изображений в нем, а их заголовки объявления отображают его в виде изображения. Хотя я могу получить исходный код, текст, который я получаю, кажется каким-то слитным текстом, и поэтому я не могу найти URL-адреса в тексте. Что мне делать, чтобы получить расширенную версию исходного кода.
'' '
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.concurrent.ExecutionException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MainActivity extends AppCompatActivity {
ArrayList<Bitmap> imageSet;
ArrayList<String> names;
String sourceCode;
protected class SourceCodeDownloader extends AsyncTask<String, Void, String >{
@Override
protected String doInBackground(String... urls) {
URL url;
HttpURLConnection connection;
try {
url= new URL(urls[0]);
connection= (HttpURLConnection) url.openConnection();
InputStream in = connection.getInputStream();
InputStreamReader reader= new InputStreamReader(in);
int data= reader.read();
while(data!=-1){
sourceCode+=(char)data;
data=reader.read();
}
return sourceCode;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
protected class ImageDownloader extends AsyncTask<String, Void, Bitmap >{
@Override
protected Bitmap doInBackground(String... urls) {
try {
URL url= new URL(urls[0]);
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
connection.connect();
InputStream in = connection.getInputStream();
Bitmap img= BitmapFactory.decodeStream(in);
return img;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageSet= new ArrayList<>(); names= new ArrayList<>(); sourceCode="";
SourceCodeDownloader sourceCodeDownloader= new SourceCodeDownloader();
try {
sourceCode=sourceCodeDownloader.execute("https://www.ranker.com/list/forbes-100-most-powerful-celebrities/worlds-richest-people-lists").get();
} catch (Exception e) {
e.printStackTrace();
}
/*
Pattern p= Pattern.compile("<img src=\"(.*?)\"");
Pattern q= Pattern.compile("title=\"(.*?)\"");
Matcher m=p.matcher(sourceCode);
Matcher n=q.matcher(sourceCode);
ImageDownloader imageDownloader= new ImageDownloader();
while(m.find()){
try {
Bitmap img= imageDownloader.execute(m.group(1)).get();
imageSet.add(img);
} catch (Exception e) {
e.printStackTrace();
}
}
while(n.find()) {
try {
String name = m.group(1);
names.add(name);
} catch (Exception e) {
e.printStackTrace();
}
}
*/
Log.i("done", sourceCode);
/*
Log.i("done", String.valueOf(imageSet.size())+" "+String.valueOf(names.size()));
*/
}
}
'''
Это журнал, который я получаю. По сути, я получаю весь заголовок исходного кода, но подзаголовки отсутствуют, и поэтому я не могу получить желаемый URL-адрес изображения. Что делать?
<!DOCTYPE html>
<!--
/$$$$$$$ /$$
| $$__ $$ | $$
| $$ \ $$ /$$$$$$ /$$$$$$$ | $$ /$$ /$$$$$$ /$$$$$$
| $$$$$$$/ |____ $$| $$__ $$| $$ /$$/ /$$__ $$ /$$__ $$
| $$__ $$ /$$$$$$$| $$ \ $$| $$$$$$/ | $$$$$$$$| $$ \__/
| $$ \ $$ /$$__ $$| $$ | $$| $$_ $$ | $$_____/| $$
| $$ | $$| $$$$$$$| $$ | $$| $$ \ $$| $$$$$$$| $$
|__/ |__/ \_______/|__/ |__/|__/ \__/ \_______/|__/
-->
<html lang="en" xmlns:og="//opengraphprotocol.org/schema/" xmlns:fb="//www.facebook.com/2008/fbml"> <head> <link rel="dns-prefetch" href="//prd.rnkr-static.com/146"> <link rel="dns-prefetch" href="//api.ranker.com"> <link rel="dns-prefetch" href="https://imgix.ranker.com"/> <link rel="dns-prefetch" href="//imgix.ranker.com"> <link rel="dns-prefetch" href="https://fonts.googleapis.com/"> <link rel="dns-prefetch" href="//fonts.gstatic.com"> <link rel="dns-prefetch" href="https://polyfill.io"> <link rel="dns-prefetch" href="//assets.adobedtm.com"> <link rel="dns-prefetch" href="//www.google-analytics.com"> <link rel="dns-prefetch" href="//www.facebook.com"> <link rel="dns-prefetch" href="//www.googletagmanager.com"> <link rel="dns-prefetch" href="//content.jwplatform.com"> <link rel="dns-prefetch" href="//pixel.quantserve.com"> <link rel="dns-prefetch" href="//cdn.yldbt.com"> <link rel="dns-prefetch" href="//www.googletagservices.com"> <link rel="dns-prefetch" href="//ox-d.ranker.servedbyopenx.com"> <link rel="dns-prefetch" href="//apex.go.sonobi.com"> <link rel="dns-prefetch" href="//ib.adnxs.com"> <link rel="dns-prefetch" href="//pagead2.googlesyndication.com"> <link rel="dns-prefetch" href="//assets.pinterest.com"> <link rel="dns-prefetch" href="cdn.petametrics.com"> <link rel="dns-prefetch" href="www.youtube.com"> <link rel="dns-prefetch" href="//adserver.adtechus.com"> <link rel="dns-prefetch" href="//btlr.sharethrough.com"> <link rel="dns-prefetch" href="https://cdn.rebel.ai"> <link rel="dns-prefetch" href="https://secure.rebel.ai"> <link rel="preconnect" href="//prd.rnkr-static.com/146"> <link rel="preconnect" href="//api.ranker.com"> <link rel="preconnect" href="https://imgix.ranker.com"/> <link rel="preconnect" href="//imgix.ranker.com"> <link rel="preconnect" href="https://fonts.googleapis.com/"> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://polyfill.io" crossorigin> <link rel="preconnect" href="//assets.adobedtm.com"> <link rel="preconnect" href="//www.google-analytics.com"> <link rel="preconnect" href="//s3.amazonaws.com"> <link rel="preconnect" href="//sync.bfmio.com"> <link rel="preconnect" href="//beacon.krxd.net"> <link rel="preconnect" href="//pre.ads.justpremium.com"> <link rel="preconnect" href="//pixel.quantserve.com"> <link rel="preconnect" href="//secure.quantserve.com"> <meta name="MobileOptimized" content="width"/> <meta name="HandheldFriendly" content="true"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"/> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=contain"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <link rel="shortcut icon" href="/favicon.png"/> <link rel="apple-touch-icon" href="/touch-icon-iphone.png"> <link rel="apple-touch-icon" sizes="76x76" href="/touch-icon-ipad.png"> <link rel="apple-touch-icon" sizes="120x120" href="/touch-icon-iphone-retina.png"> <link rel="apple-touch-icon" sizes="152x152" href="/touch-icon-ipad-retina.png"> <meta name="msapplication-TileColor" content="#1E3E66"/> <meta name="msapplication-square150x150logo" content="/msapplication-square150x150logo.png"/> <meta name="theme-color" content="#ffffff"/> <!-- Open Graph Metadata --> <title>The Power 100 | Forbes 100 Most Powerful Celebrities </title> <meta name="description" content="The Power 100 list from Forbes contains the 100 most powerful people in Hollywood and the highest paid celebrities. The richest actors, actresses and media power players are here. These are the top richest people in the world of entertainment. M