Невозможно прочитать номер мобильного телефона с веб-страницы - PullRequest
0 голосов
/ 06 мая 2018

Сегодня я натолкнулся на интересный вопрос о стековом потоке на стороне Java Selenium Binding, я пытаюсь найти решение через WATIR, но у меня не получилось,

Я пытаюсь прочитать номер мобильного телефона со страницы, а вот веб-страница

<span class="telnowpr">
<a class="tel mtel">
<span class="mobilesv icon-ba"/>
<span class="mobilesv icon-ts"/>
<span class="mobilesv icon-oqp"/>
<span class="mobilesv icon-wx"/>
<span class="mobilesv icon-nlm"/>
<span class="mobilesv icon-ts"/>
<span class="mobilesv icon-ji"/>
<span class="mobilesv icon-ji"/>
<span class="mobilesv icon-ji"/>
<span class="mobilesv icon-fde"/>
<span class="mobilesv icon-fde"/>
<span class="mobilesv icon-nlm"/>
<span class="mobilesv icon-lk"/>
</a>
,
<a class="tel mtel">
<span class="mobilesv icon-ba"/>
<span class="mobilesv icon-ts"/>
<span class="mobilesv icon-oqp"/>
<span class="mobilesv icon-wx"/>
<span class="mobilesv icon-nlm"/>
<span class="mobilesv icon-ts"/>
<span class="mobilesv icon-ji"/>
<span class="mobilesv icon-ji"/>
<span class="mobilesv icon-ji"/>
<span class="mobilesv icon-fde"/>
<span class="mobilesv icon-fde"/>
<span class="mobilesv icon-nlm"/>
<span class="mobilesv icon-ikj"/>
</a>
</span>

Каждый диапазон содержит одно число, которое я вижу, когда перемещаю стрелку инструмента firebug, но в html нет номера, но оно появляется на странице. Я пытался извлечь значение и текст, но пока безуспешно, таких страниц пока не видел.

код

b = Watir::Browser.new @driver

b.goto 'https://www.justdial.com/Ahmedabad/Knife-Fork-Restaurant-Shah-E-Alam-Tollnaka-Opposite-Swaminarayan-College-Shah-Alam/079PXX79-XX79-170524174654-D3J2_BZDET?xid=QWhtZWRhYmFkIEFmZ2hhbmkgUmVzdGF1cmFudHM='

p b.span(class: 'telnowpr').text

, который на самом деле печатает запятую, это печатает запятую, потому что запятая появляется между двумя <a>, но я не знаю, как вывести все числа. Может кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Попробуйте что-то вроде ниже:

List<WebElement> allSpans = driver.findElements(By.cssSelector("ul#comp-contact span.telnowpr >a > span.icon-acb"));

System.out.println(allSpans.size());
//for(WebElement item : allSpans) {
        String script = "return window.getComputedStyle(document.querySelector('ul#comp-contact span.telnowpr >a > span.icon-acb'),':before').getPropertyValue('content')";
        JavascriptExecutor js = (JavascriptExecutor) driver;
        String content = (String) js.executeScript(script);
        System.out.println("Value : " + content);
//}

это для отдельного элемента span, показанного на изображении ниже, вам нужно сделать это для всех <span> элементов в

<ul id="comp-contact">

enter image description here:

0 голосов
/ 06 мая 2018

Похоже, они используют значки для отображения цифр, а не только цифры. Я предполагаю, что это предотвращает сбор ботов и автоматизированного программного обеспечения всех номеров для спама.

Кажется, что каждое число имеет уникальный класс CSS, так почему бы вам не создать функцию, которая будет проверять текст в классе и возвращать число, которому он соответствует?

...