Webscraping с помощью jsoup html вопрос разбора - PullRequest
0 голосов
/ 19 января 2020

У меня есть приложение весенней загрузки, которое очищает веб-сайт, и я могу заставить его работать, но, похоже, не могу понять, как добраться до внутренних элементов html для итерации. Похоже, я всегда просто достигаю только 10000 * вещей. Ниже мой код

private void fetchData() {
    try {
        Document doc =
                Jsoup.connect("https://www.i-90motorsports.com/default.asp?page=xPreOwnedInventory").userAgent("Mozilla/17.0").get();

        Elements elementList = doc.select("doc.info"); 
        Elements vehBody = doc.select("div#VehBody"); 
        if(doc.getAllElements().isEmpty()) {
            aStringBuilder.append("Nothing found for " );
            addLineBreak();
            return;
        }   
        for(Element anElement : vehBody) {
            //if(isElementValid(anElement)) {
                aStringBuilder.append(anElement.getElementsByTag("a").first().text() ); 
                addLineBreak();
            //}
        } 
        aStringBuilder.append("Finished Scraping websites. Found  "+ elementList.size() +" elements");
        addLineBreak();

    } catch (IOException e) { 
        e.printStackTrace(  );
    }

}

Это html, который я пытаюсь получить. Я пытаюсь перебрать каждую строку транспортного средства и не уверен, какое значение ввести в части «выбор». Предложения?

<div id="VehBody">


<div class="vehicle_row dspYear-2020 dspCondition-PREOWNED dspBodyType-SNOWMOBILE dspSubType-MOUNTAIN dspMake-SKI-DOO dspModel-SUMMIT-X-850-E-TEC-175-SS-POWDERMAX-LIGHT-3-0-S-LEV-BLUE images-1" rel="8382204"><div class="unitImage"><div class="imageRow">

1 Ответ

0 голосов
/ 19 января 2020

В этом случае <div id="VehBody"> - это пустой элемент , который заполнен через JavaScript и поэтому не может быть прочитан jsoup (который предназначен для чтения источника страниц, а не для чтения DOM, измененного JavaScript). Вместо этого вы можете получить нужные данные, проанализировав файл JavaScript, который включен в конец заголовка :

<script id='jsCachedFile' src='/imglib/Inventory/cache/2366/UVehInv.js?v=1892194' type='text/javascript' ></script></head>

Обратите внимание, что параметр v меняется каждый раз при запросе страницы HTML.

...