Ze strony internetowej https://www.google.co.uk/finance?cid=704531 Próbuję zaimportować pola „Zasięg” i „52 tydzień”, a inni w tej grupie pośrodku. Spojrzałem na XPath i jestem tym bardzo zdezorientowany.
W komórce A1 mam https://www.google.co.uk/finance?cid=704531
.
W komórce B1 mam
=importxml(A1,//*[@id="market-data-div"]/div[2]/div[1]/table[1]/tbody/tr[4]/td[1])
Ale wynikiem jest błąd.
Jakie jest prawidłowe wyrażenie XPath dla tej struktury HTML?
Odpowiedzi:
4 dla odpowiedzi № 1Dom i <tbody/>
Wygląda na to, że utworzyłeś to wyrażenie XPath w Firebug lub podobnych narzędziach programistycznych. Podczas gdy HTML nie wymaga <tbody/>
tagi, DOM robi; i te narzędzia programistyczne działają na DOM, a tym samym zawijają wiersze tabeli w takim elemencie. Różnicę można łatwo zobaczyć, patrząc na źródło strony (pobrane przez wget
lub inne narzędzia, jeśli to konieczne) oraz strukturę przedstawioną przez Firebug.
Po prostu pomiń /tbody
krok osi w wyrażeniu:
//*[@id="market-data-div"]/div[2]/div[1]/table[1]/tr[4]/td[1]
W każdym razie wolałbym pobrać komórki według opisu, który jest nieco słabszy w odniesieniu do zmian w sformułowaniu, ale o wiele bardziej odporny na zmiany w strukturze:
//*[@id="market-data-div"]//tr[td = "Vol / Avg."]/td[2]
Cytując wyrażenie
Drugi problem polega na zacytowaniu wyrażenia XPath w podwójnych cudzysłowach, więc na przykład użyj:
=importxml(A1,"//*[@id="market-data-div"]//tr[td = "Vol / Avg."]/td[2]")