IMPORTXML Imported Content is Empty - See Demo Sheet [duplicate] - xpath

This question already has answers here:
Scraping data to Google Sheets from a website that uses JavaScript
(2 answers)
Closed last month.
I'm trying to import the Company Profile 'Description' from this site: https://finance.yahoo.com/quote/IVR
I made a demo sheet and all of my tries have failed (see cells D8 - E8):
=IMPORTXML("https://finance.yahoo.com/quote/IVR","//*[#id='Col2-11-QuoteModule-Proxy']/div/div/div/p")
=IMPORTXML("https://finance.yahoo.com/quote/IVR","//p[#class='businessSummary.Mt(10px).Ov(h).Tov(e)']")
Does this have to do with the div the content is in?
On the left side of the page, I was successful in pulling in the data for 52 Week Range. The formula for this is in cell G8.
I've looked at these questions on stack and they don't look like they apply:
Importxml Imported Content Empty
Import table using IMPORTXML
Any help would be much appreciated, thanks.

Another option :
=IMPORTXML(B2;"substring-before(substring-after(//script[#id='fc'],'""longBusinessSummary"":""'),'"",""city""')")

in the meantime try:
=REGEXEXTRACT(QUERY(QUERY(ARRAY_CONSTRAIN(TRANSPOSE(
IMPORTDATA("https://finance.yahoo.com/quote/IVR")), 2500, 60),
"select Col57 limit 10 offset 2021", 0),,999), "\:""(.+?)""")

Related

Using Google Sheets for web scraping. Need the correct xpath for IMPORTXML function

There is a google sheet containing a list of MPN's (manufacturer part numbers). Trying to scrape a site called wikiarms for the UPC Codes when I have the MPN for an item.
I have the correct formula for doing this on another site.
=IMPORTXML("http://gun.deals/search/apachesolr_search/"&B1,"//dd/a[../../dt[contains(text(),'UPC')]]|//dd/span[../../dt[contains(text(),'UPC')]]")
Trying to figure out what the correct xpath to complete this formula. Some videos I have watch said to open the page in Chrome and use inspector to select and copy the xpath to complete the importxml function. I tried this with no luck.
Sample
Visit https://www.wikiarms.com/guns?q=20071
In the table there is a button "available in 6 stores" click that to reveal the list. The UPC should be listed after the MPN.
If I copy the xpath in Chrome this is the result
/html/body/div[1]/div/div/div[2]/div/div/div[2]/div[2]/table/tbody/tr[2]/td[5]
=IMPORTXML("https://www.wikiarms.com/guns?q="&B2,"xpath here")
What do I have to add at the end of this formula to pull in the UPC code? I will be using this formula to pull in UPC code for about 1000 items.
Thank you for your help.
Using your sample link, try
=IMPORTXML("https://www.wikiarms.com/guns?q=20071","//td[#class='upc']/a/#title")
and see if it works for you.

Data table not importing from morningstar

I am trying to take data from https://financials.morningstar.com/ratios/r.html?t=0P0000032S&culture=en&platform=sal and use the values in the table in a Google sheet. This is table1 when I inspect the element but when I use:
=IMPORTHTML("https://financials.morningstar.com/ratios/r.html?t=0P0000032S&culture=en&platform=sal","table",1)
on google sheets, it says the imported content is empty? Any help on how to import this data?
I've tried importhtml using table number references found when I inspected the page.
unfortunately, that won't be possible because the site is controlled by JavaScript and Google Sheets can't understand/import JS. you can test this simply by disabling JS for a given link and you will see a blank page:

How Do I Import Data Into My Google Sheet from a Website Using importXML

Today when experimenting with using importXML in Google Sheets, I ran into a problem. I was attempting to import the title header of a USTA Tournament page into the Google Sheet, however, this did not work as it just resulted in the HTML title of the webpage being displayed ('TournamentHome'). Below is the Google Sheet, and the website that is used:
Google Sheet and Function:
=importXML(F2, "//html//body[#id='thebody']//div[#id='content']//div[#id='pagetitle']")
Website and Section of Source Code Being Used
The title that I am trying to extract from the website is TOWPATH 24th ANNUAL THANKSGIVING JR SINGLES.
The link to the website is https://m.tennislink.usta.com/tournamenthome?T=225779
update:
=REGEXEXTRACT(QUERY(ARRAY_CONSTRAIN(IMPORTDATA(
"https://m.tennislink.usta.com/tournamenthome?T=225779"), 555, 1),
"where Col1 contains 'escape'"), "\(""(.*)""\)")
unfortunately, that won't be possible the way you trying because the field you attempt to scrape is controlled by JavaScript and Google Sheets can't understand/import JS. you can test this simply by disabling JS for a given link and you will see what exactly can be imported into Google Sheets:
How about this sample formula? In this formula, the title value is directly retrieved from the script before the value is put to #pagetitle. Please think of this as just one of several answers.
Sample formula:
=REGEXEXTRACT(IMPORTXML(A1,"//div[#class='tournament_search']/script"),"escape\(""([\w\s\S]+)""")
Result:
When https://m.tennislink.usta.com/TournamentHome/tournament.aspx?T=38079 and https://m.tennislink.usta.com/tournamenthome?T=225779 are put in "A1" and "A2", the results are as follows.
Reference:
REGEXEXTRACT

xpath query to a specific number on a page

I couldn't manage to write the correct XPATH code to import a number from the following page into my google sheet cell. I want to use the IMPORTXML function of google sheet.
Any help is highly appreciated in advance.
Source page: https://www.xe.com/currencycharts/?from=USD&to=AED
The number I want to insert into a cell is shown below
Tried
//div[#id='rates_detail_desc']/strong[2]

Import data from ebay to google spreadsheet using IMPORTXML

I'm trying to Import a table from "https://www.ebay.com/itm/100-NEW-ALTERNATOR-VW-GOLF-GTI-GL-GLS-1-8T-1-8-2L-99-06-90A-1-YR-WARRANTY-13852/301364941754?fits=Model%3AJetta&hash=item462ac013ba:g:v7oAAOSw~YRagU4N&vxp=mtr" to a Google Spread sheet using =IMPORTXML function, The Formula I was using as below,
A1 = https://www.ebay.com/itm/100-NEW-ALTERNATOR-VW-GOLF-GTI-GL-GLS-1-8T-1-8-2L-99-06-90A-1-YR-WARRANTY-13852/301364941754?fits=Model%3AJetta&hash=item462ac013ba:g:v7oAAOSw~YRagU4N&vxp=mtr
A2 = //*[#id="w1-20ctbl"]
A3 = =IMPORTXML(A1,A2)
But it returns nothing and It says "Imported content is empty."
Can Somebody help me, I'm new to google sheet scripting and I'll really grateful if somebody can help me.
waiting to hearing from somebody....
Thanks
You cannot access the pictured table using IMPORTXML or any built-in Google Sheets formula because the table is generated when a user visits the website.
If you look at the page source, you'll see that the table does not exist. IMPORTPATH looks at this page source, which is the content before javascript rendering by the browser. When you "inspect" an element in your browser, it's inspecting the content after the javascript has been rendered.
Unfortunately, there is not a simple way to get the data you're looking for. You'll have to find or build your own scraping tool. Be careful not to violate eBay terms of use or any local laws.

Resources