Как извлечь ссылку из - PullRequest
       10

Как извлечь ссылку из

0 голосов
/ 21 февраля 2019

Я пытался извлечь ссылку из html-источника веб-сайта, но не могу распечатать результат.Я немного новичок в извлечении ссылок, поэтому мой код может быть неправильным (любые пояснения будут полезны).Ссылка, которую я ищу для вывода: https://shop.ccs.com/checkout/cart/add/uenc/aHR0cHM6Ly9zaG9wLmNjcy5jb20vaGFwcHktc29ja3Mtd2l6LWtoYWxpZmEtYmxhY2stYW5kLWJsdWUtc29ja3MtOS0xMQ,,/product/383628/ из productUrl https://shop.ccs.com/happy-socks-wiz-khalifa-black-and-blue-socks-9-11

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.ListIterator;
import java.util.Map;
import java.util.Scanner;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.jsoup.Connection.Method;

public class mains {
    public static void main(String[] args) throws IOException {
        Document doc = Jsoup.connect(productUrl)
                .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36")
                .get();
        Elements links = doc.select("form[action]");
        Elements imports = doc.select("link[action]");
        String absHref = links.attr("abs:action");
        System.out.println(absHref);
    }
}

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

Короткий ответ: если вы хотите добавить товар в корзину, вы можете просто посетить этот URL: https://shop.ccs.com/checkout/cart/addAjax/?product=383628&related_product=&qty=1

Длинный ответ заключается в том, что этот сайт отправляет форму URL, который не имеет реального содержимого HTMLно использует JavaScript для дальнейшей обработки вашего запроса.Jsoup не может справиться с этим, но мы можем обмануть и использовать отладчик веб-браузера, чтобы посмотреть, что будет дальше, и вот как я получил URL выше.

enter image description here

Вы можете легко использовать одну и ту же ссылку с другим идентификатором продукта и количеством.Помните, что если вы хотите сделать еще один запрос, например, чтобы проверить содержимое корзины, вы также должны передать куки, полученные из предыдущего запроса.Без этого ваша корзина всегда будет пустой.

0 голосов
/ 22 февраля 2019

Использование htmlunit Для очистки веб-сайта, он также поддерживает также javascript и также поддерживает xpath и cssSelector. Используйте Maven

<dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.33</version> </dependency>

Спасибо.

0 голосов
/ 22 февраля 2019

Извините, но отклик на сайте не очень хороший. Он загружает элементы, используя JavaScript, и jsoup не поддерживает javascript.

   <html style="height:100%">
 <head>
  <meta NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
  <meta name="format-detection" content="telephone=no">
  <meta name="viewport" content="initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 </head>
 <body style="margin:0px;height:100%">
  <iframe src="/_Incapsula_Resource?SWUDNSAI=28&amp;xinfo=2-19174853-0%200NNN%20RT%281550817024158%20820%29%20q%280%20-1%20-1%20-1%29%20r%280%20-1%29%20B12%284%2c316%2c0%29%20U2&amp;incident_id=433000770024986768-116635626567173330&amp;edet=12&amp;cinfo=04000000" frameborder="0" width="100%" height="100%" marginheight="0px" marginwidth="0px">Request unsuccessful. Incapsula incident ID: 433000770024986768-116635626567173330</iframe>
 </body>
</html>
...