0

I want to extract the image url from the tag using XPath but the only problem is it returning whole src attr using the below XPath.

Query used in Chrome inspect tool:

$x("//div[@class='specs-photo-main']//img/@src")

Output:

[src]
0: src
baseURI: "https://www.gsmarena.com/xiaomi_11i_hypercharge-11186.php"
childNodes: NodeList []
firstChild: null
isConnected: false
lastChild: null
localName: "src"
name: "src"
namespaceURI: null
nextSibling: null
nodeName: "src"
nodeType: 2
nodeValue: "https://fdn2.gsmarena.com/vv/bigpic/xiaomi-11i-hypercharge.jpg"
ownerDocument: document
ownerElement: img
parentElement: null
parentNode: null
prefix: null
previousSibling: null
specified: true
textContent: "https://fdn2.gsmarena.com/vv/bigpic/xiaomi-11i-hypercharge.jpg"
value: "https://fdn2.gsmarena.com/vv/bigpic/xiaomi-11i-hypercharge.jpg"
[[Prototype]]: Attr
length: 1
[[Prototype]]: Array(0)

Is there is a way to get the "nodeValue" of "src" attribute?

Wiktor Stribiżew
  • 607,720
  • 39
  • 448
  • 563
Rajat Das
  • 55
  • 1
  • 8
  • `document.querySelector("div.specs-photo-main img").getAttribute("src")` ?? – Gurmanjot Singh Jan 23 '22 at 06:36
  • Thanks for the answer Gurmanjot, But I need the value using the XPath rule only and not using javascript, just like we can extract the innerText of a p tag using the //*div/p/text(). – Rajat Das Jan 23 '22 at 06:56

1 Answers1

2

You need to access the first element (as you need to get the first node found) and then you can get the properties of the found node:

$x("//div[@class='specs-photo-main']//img/@src")[0].nodeValue

Or,

$x("//div[@class='specs-photo-main']//img/@src")[0].textContent

if you need to get the plain text value.

See also nodeValue vs innerHTML and textContent. How to choose? and innerText vs innerHTML vs label vs text vs textContent vs outerText.

Wiktor Stribiżew
  • 607,720
  • 39
  • 448
  • 563