Bird
Raised Fist0
Google Sheetsspreadsheet~20 mins

IMPORTXML for structured data in Google Sheets - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
IMPORTXML Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
📊 Formula Result
intermediate
2:00remaining
Extracting all headlines from a news website
You want to extract all the main headlines from a news website using IMPORTXML. The headlines are inside <h2> tags with class 'headline'. Which formula will correctly extract these headlines?
A=IMPORTXML("https://example-news.com", "//div[@class='headline']")
B=IMPORTXML("https://example-news.com", "//h2[@class='headline']")
C=IMPORTXML("https://example-news.com", "//h1[@class='headline']")
D=IMPORTXML("https://example-news.com", "//headline")
Attempts:
2 left
💡 Hint
Remember that IMPORTXML uses XPath syntax to select elements by tag and attribute.
📊 Formula Result
intermediate
2:00remaining
Extracting all links from a webpage
You want to get all URLs from the links (<a> tags) on a webpage using IMPORTXML. Which formula will return the href attribute of all <a> tags?
A=IMPORTXML("https://example.com", "//href")
B=IMPORTXML("https://example.com", "//a/href")
C=IMPORTXML("https://example.com", "//a/@href")
D=IMPORTXML("https://example.com", "//a[href]")
Attempts:
2 left
💡 Hint
To get attribute values in XPath, use @attribute_name.
Function Choice
advanced
2:00remaining
Choosing the right XPath to extract product prices
A webpage shows product prices inside <span> tags with class 'price'. Which XPath expression will correctly extract all prices using IMPORTXML?
A//span[@class='price']
B//span[class='price']
C//span[@class=price]
D//span[@class='Price']
Attempts:
2 left
💡 Hint
XPath attribute values must be in quotes and attribute name is case-sensitive.
🎯 Scenario
advanced
2:00remaining
Handling dynamic content with IMPORTXML
You try to use IMPORTXML to get data from a webpage, but the formula returns #N/A with 'Imported content is empty'. The webpage content is loaded dynamically by JavaScript after page load. What is the best explanation?
AIMPORTXML cannot extract data generated by JavaScript after page load because it fetches only static HTML.
BThe XPath expression is incorrect and does not match any elements.
CThe website blocks IMPORTXML requests with a firewall.
DThe spreadsheet has reached its formula limit and cannot process more IMPORTXML calls.
Attempts:
2 left
💡 Hint
Think about how IMPORTXML fetches webpage data and what it can see.
data_analysis
expert
2:00remaining
Counting the number of items extracted by IMPORTXML
You use the formula =IMPORTXML("https://example.com/products", "//div[@class='item-name']") to get product names. The result fills cells A1:A10. What is the formula to count how many product names were extracted?
A=ROWS(A1:A10)
B=COUNT(A1:A10)
C=COUNTIF(A1:A10, "*")
D=COUNTA(A1:A10)
Attempts:
2 left
💡 Hint
Think about which function counts non-empty cells regardless of data type.

Practice

(1/5)
1. What does the IMPORTXML function do in Google Sheets?
easy
A. It fetches data from a web page using a URL and XPath query.
B. It imports data from another Google Sheet only.
C. It creates charts based on web data automatically.
D. It exports your sheet data to a web page.

Solution

  1. Step 1: Understand IMPORTXML purpose

    IMPORTXML is designed to pull data from web pages by using a URL and an XPath query to specify what data to extract.
  2. Step 2: Compare options

    Only "It fetches data from a web page using a URL and XPath query." correctly describes this function. The other options describe unrelated features.
  3. Final Answer:

    It fetches data from a web page using a URL and XPath query. -> Option A
  4. Quick Check:

    IMPORTXML = fetch web data [OK]
Hint: IMPORTXML grabs web data using URL + XPath [OK]
Common Mistakes:
  • Thinking IMPORTXML only works with other sheets
  • Confusing IMPORTXML with chart creation
  • Assuming it exports data instead of importing
2. Which of these is the correct syntax for using IMPORTXML to get all <h2> elements from a webpage URL in cell A1?
easy
A. =IMPORTXML(A1, "//h2/@text")
B. =IMPORTXML(A1, "//h2[]")
C. =IMPORTXML(A1, "h2")
D. =IMPORTXML(A1, "//h2")

Solution

  1. Step 1: Recall IMPORTXML syntax

    The function takes two arguments: a URL and an XPath query. To select all <h2> elements, the XPath is "//h2".
  2. Step 2: Evaluate options

    =IMPORTXML(A1, "//h2") uses correct XPath syntax. =IMPORTXML(A1, "//h2[]") has invalid brackets. =IMPORTXML(A1, "h2") misses the XPath axis. =IMPORTXML(A1, "//h2/@text") tries to get an attribute "text" which doesn't exist.
  3. Final Answer:

    =IMPORTXML(A1, "//h2") -> Option D
  4. Quick Check:

    Correct XPath syntax = =IMPORTXML(A1, "//h2") [OK]
Hint: Use double slashes and tag name for XPath [OK]
Common Mistakes:
  • Adding brackets [] incorrectly in XPath
  • Omitting // in XPath
  • Trying to get text as attribute with @text
3. Given the formula =IMPORTXML("https://example.com", "//ul/li"), what will the output be?
medium
A. All paragraphs (<p>) from the page.
B. Only the first list item from the page.
C. All list items (<li>) inside unordered lists (<ul>) from the page.
D. An error because XPath is invalid.

Solution

  1. Step 1: Understand the XPath query

    The XPath "//ul/li" selects all
  2. elements that are children of any <ul> element on the page.
  3. Step 2: Predict IMPORTXML output

    IMPORTXML will return all matching list items, not just the first, and it won't return paragraphs or error since XPath is valid.
  4. Final Answer:

    All list items (
  5. ) inside unordered lists (<ul>) from the page.
  6. -> Option C
  7. Quick Check:

    XPath selects all matching nodes = All list items (
  8. ) inside unordered lists (<ul>) from the page. [OK]
Hint: XPath //ul/li selects all list items under ul [OK]
Common Mistakes:
  • Assuming only first match is returned
  • Confusing <li> with <p> tags
  • Thinking XPath syntax is wrong here
4. You wrote =IMPORTXML("https://example.com", "//div[@class='price']") but get a #N/A error. What is the likely problem?
medium
A. The URL is invalid or unreachable.
B. The XPath syntax for class attribute is incorrect.
C. IMPORTXML does not support attribute filters.
D. You must use single quotes inside the XPath instead of double quotes.

Solution

  1. Step 1: Check XPath syntax

    The XPath "//div[@class='price']" is correct for selecting divs with class 'price'.
  2. Step 2: Consider other causes of #N/A

    #N/A often means the URL is unreachable or blocked. IMPORTXML supports attribute filters and double quotes inside XPath strings are allowed if escaped properly.
  3. Final Answer:

    The URL is invalid or unreachable. -> Option A
  4. Quick Check:

    #N/A often means URL problem [OK]
Hint: Check URL accessibility if #N/A error occurs [OK]
Common Mistakes:
  • Assuming XPath syntax is wrong when it's correct
  • Not verifying the URL is accessible
  • Thinking IMPORTXML can't filter by attributes
5. You want to import the latest news headlines from https://news.example.com where headlines are in <h3 class='headline'> tags. Which formula correctly imports only the text of these headlines?
hard
A. =IMPORTXML("https://news.example.com", "//h3[@class='headline']")
B. =IMPORTXML("https://news.example.com", "//h3[@class='headline']/text()")
C. =IMPORTXML("https://news.example.com", "//h3[@class='headline']/@text")
D. =IMPORTXML("https://news.example.com", "//h3[@class='headline']/innerText")

Solution

  1. Step 1: Understand XPath to get text content

    To get only the text inside elements, use the XPath function /text() after selecting the element.
  2. Step 2: Evaluate options

    =IMPORTXML("https://news.example.com", "//h3[@class='headline']/text()") correctly uses /text(). =IMPORTXML("https://news.example.com", "//h3[@class='headline']") returns the whole element including tags. =IMPORTXML("https://news.example.com", "//h3[@class='headline']/@text") tries to get an attribute 'text' which doesn't exist. =IMPORTXML("https://news.example.com", "//h3[@class='headline']/innerText") uses invalid XPath syntax.
  3. Final Answer:

    =IMPORTXML("https://news.example.com", "//h3[@class='headline']/text()") -> Option B
  4. Quick Check:

    Use /text() to get element text [OK]
Hint: Add /text() to XPath to get only text content [OK]
Common Mistakes:
  • Omitting /text() and getting full HTML tags
  • Using @text which is not an attribute
  • Trying invalid XPath like innerText