поиск определенного тега на сайте - PullRequest
0 голосов
/ 01 июля 2019

Есть задача найти определенный товар на сайте. Как это можно сделать с помощью JAVA?

А более конкретно, есть запрос на следующий тип стали - г X120Mn12 / 1.3401, диаметр: 130 мм, количество: 500 кг, эта позиция находится по следующему адресу - https://www.steelinox.nl/en/ качества / специальные -качество / 1.3401-a128-x120mn12.

Это список переменных, которые вам даны. самый высокий балл наиболее отвечает на запрос клиента.

Задача состоит в том, чтобы поиск был более или менее универсальным для разных сайтов с разной структурой. Аналогичную задачу для сайтов с PDF-файлами я создаю следующим образом, анализирую PDF-файл с помощью pdfbox в txt, а затем ищу строку с наибольшим соответствием входящих аргументов (характеристики металла на разных сайтах (..или разные постановки?) по разному).

То есть я ищу строку [] и ссылку на файл PDF, результат в виде переменной List c, которая содержит количество совпадений в конструкциях с переданным массивом String [] соответственно строки с наивысшей оценкой больше всего отвечают на запрос клиента. Вот что-то вроде html-страниц, которые можно посоветовать, и с html ссылка на определенную страницу не будет работать, вы можете дать только ссылку на хост (адрес сайта), так как структура сайтов может отличаться. Заранее спасибо!

Это мой код для поиска PDF:

public class PdfParserService {

private String path;
private static final String pathToResource = "..\\websitestillparser\\src\\main\\resources\\";
private static String pdfFileName;
private static String txtFileName;
private static String host;

@Autowired
private PdfParser parser;

public List<ResultLine> getResult(RequestFoPdfArguments argument) {
    this.setPathForFile(argument.getPathForLink());
    this.setPdfFileName(argument.getPathForLink());
    this.setTxtFileName(argument.getPathForLink());
    if (parser.downloadFileFRomUrl(argument.getPathForLink(), path, pdfFileName)) {
        parser.generateTxtFromPDF(path + txtFileName, path + pdfFileName);
    }
    List<ResultLine> result = parser.setListWithSearchWords(host, path + txtFileName, argument.getArgs());
    result = result.stream().filter(s -> s.getCountEquals() > 1).collect(Collectors.toList());
    result.forEach(System.out::println);
    return result;
}

public String setPathForFile(String url) {
    try {
        URL partOfurl = new URL(url);
        if (!Files.exists(Paths.get(pathToResource + partOfurl.getHost()))) {
            Files.createDirectories(Paths.get(pathToResource + partOfurl.getHost()));
        }
        path = pathToResource + partOfurl.getHost() + "\\";
    } catch (IOException e) {
        log.error(e.getMessage());
        e.printStackTrace();
    }
    return path;
}

public String setPdfFileName(String url) {
    try {
        URL partOfurl = new URL(url);
        pdfFileName = FilenameUtils.getName(partOfurl.getPath());
        host = partOfurl.getHost();
    } catch (IOException e) {
        log.error(e.getMessage());
        e.printStackTrace();
    }
    return pdfFileName;
}

public String setTxtFileName(String url) {
    try {
        URL partOfurl = new URL(url);
        txtFileName = FilenameUtils.getName(partOfurl.getPath());
        txtFileName = txtFileName.replace("pdf", "txt");
    } catch (IOException e) {
        log.error(e.getMessage());
        e.printStackTrace();
    }
    return txtFileName;
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...