У меня есть проект Java Maven, и я пытаюсь получить все изображения с веб-сайта и его подстраниц.Моя идея заключалась в том, чтобы найти все теги и затем сохранить их в arraylist.После этого я захотел зациклить их и искать изображения в каждой ссылке.Однако я не получаю никаких результатов.Это сообщение об ошибке Uncaught API call returned bad code: 500
.Любая помощь с благодарностью!
@WebServlet(
name = "HelloAppEngine",
urlPatterns = {"/hello"}
)
public class HelloAppEngine extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
protected static final Gson GSON = new GsonBuilder().create();
//This is just a test array
ArrayList<String> testImages = new ArrayList<String>();
ArrayList<String> list = new ArrayList<String>();
@Override
protected final void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/json");
String servlet = req.getServletPath();
if(servlet.equalsIgnoreCase("/main")){
String urlString = java.net.URLDecoder.decode(req.getParameter("url"),"UTF-8");
// Connect to website. This can be replaced with your file loading implementation
Document doc = Jsoup.connect(urlString).get();
// Get all img tags
Elements img = doc.getElementsByTag("img");
Elements media = doc.select("[src]");
int counter = 0;
// Loop through img tags
for (Element src : media) {
if (src.tagName().equals("img")) {
counter++;
testImages.add(src.attr("abs:src"));
}
}
/*subpage*/
try {
Document docu = Jsoup.connect(urlString).get();
Elements elements = docu.select("a");
for(Element element : elements){
System.out.println(element.absUrl("href"));
list.add(element.absUrl("href")); //<-------HERE get links of website*****
}
} catch (IOException e) {
e.printStackTrace();
}
for(int i = 0; i < list.size(); i++){
doc = Jsoup.connect(list.get(i)).get();
for (Element src : media) {
if (src.tagName().equals("img")) {
counter++;
testImages.add(src.attr("abs:src"));
}
}
System.out.println(testImages);
}
}
/*Line 54 returns an array of test images. Here is where you'll want to implement your crawling logo finding logic.
Here you can use the String "urlString" and perform a crawl on that site.
JSoup is a great basic library for crawling, but you are welcome to use whatever library you would like.
*/
resp.getWriter().println(GSON.toJson(testImages));
}
@Override
protected final void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
}