Как получить URL-адрес из фонового изображения с помощью Selenium и Javascript - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь получить URL-адрес из фонового изображения с помощью Xpath или Javascript, но пока безуспешно. это то, что у меня

<div style="width: 100%; display: inline-block;">
 <div tws-article-images-preload="item" class="tws-article-images--preload ng-scope tws-article-images-- 
   image-small" ng-click="closeImage()" use-original="useOriginal" style="background-image: 
   url(&quot;https://i.pinimg.com/originals/59/54/b4/5954b408c66525ad932faa693a647e3f.jpg;);">
 </div>
</div>

И пробовал эти два с разными модификациями

//*[starts-with(@style, 'background-image: url()] <--Did not work 

return document.getElementsByClassName('tws-article-images--preload ng-scope tws-article-images--image-small').src

Ответы [ 4 ]

1 голос
/ 19 июня 2020

Чтобы получить URL-адрес из фонового изображения, вы можете использовать следующее решение:

  • Использование slice():

    var img = document.getElementsByClassName('tws-article-images--preload')[0],
    style = img.currentStyle || window.getComputedStyle(img, false),
    bgImage = style.backgroundImage.slice(4, -1).replace(/"/g, "");
    //printing the url
    console.log('Image URL: ' + bgImage);
    
  • Использование регулярное выражение :

    var img = document.getElementsByClassName('tws-article-images--preload')[0],
    style = img.currentStyle || window.getComputedStyle(img, false),
    var url = backgroundImage.match(/url\(["']?([^"']*)["']?\)/)[1];
    //printing the url
    console.log('Image URL: ' + url);
    
1 голос
/ 19 июня 2020

Можете попробовать

return document.getElementsByClassName('tws-article-images--preload ng-scope tws-article-images--image-small').style.backgroundImage.slice(4, -1).replace(/["']/g, "");
1 голос
/ 19 июня 2020

Ваше выражение XPath неверно (отсутствует ' и, возможно, раздражает CRLF). Исправьте это с помощью:

//*[starts-with(@style, 'background-image:')]/@style

Затем используйте регулярное выражение для очистки результата:

txt = 'background-image: url("https://i.pinimg.com/originals/59/54/b4/5954b408c66525ad932faa693a647e3f.jpg;);'
result = re.sub(r"^.+\"(.+?);.+", r"\1", txt)
print(result)

С XPath:

substring-after(substring-before(//*[starts-with(@style, 'background-image:')]/@style,';)'),'"')

Вывод: https://i.pinimg.com/originals/59/54/b4/5954b408c66525ad932faa693a647e3f.jpg

1 голос
/ 19 июня 2020
document.getElementsByClassName('classname')[0].style.backgroundImage.slice(4, -1).replace(/"/g, "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...