/ / Problémy s Xpath v tabuľkách Google (ImportXML) - xml, xpath, google-spreadsheet

Problémy so službou Xpath v tabuľkách Google (ImportXML) - xml, xpath, google-spreadsheet

Toto je skvelá stránka a už som toho mal veľaotázok zodpovedaných jednoduchým posúvaním a prehľadávaním ďalších príspevkov. Bohužiaľ, nemôžem vystopovať odpoveď, ktorá konkrétne pomáha tomuto problému, a domyslel som si, že by som skúsil uverejniť príspevok a hľadať pomoc-

Používam tabuľky ImportXML a Google na „zoškrabanie“ niekoľkých popisov produktov z maloobchodných stránok. Väčšinou to funguje dobre a urobil som to dvoma spôsobmi:

1) Konkrétna výzva na popisnú časť príspevku:

=ImportXML(A1,"//div[@class="desc"]")

2) Zavolajte na celú „kartu produktu“, ktorá vráti aj informácie, ako je názov produktu, cena, zverejnený čas, a tieto položky umiestni do susedných buniek v mojej tabuľke Google:

=ImportXML(A1,"//div[@class="productCard"]")

Oba fungovali dobre, ale narazil som napri použití každej metódy iný problém. Ak dokážem vyriešiť čo i len jeden z týchto problémov, s radosťou zruším druhú metódu, stačí, aby jeden z nich fungoval. Problémy sú:

Metóda 1) Webová stránka zakazuje predajcomvrátane kontaktných informácií v príspevkoch k produktom - ak aj tak obsahujú e-mailovú adresu, stránka ich automaticky zablokuje, takže v príspevku sa jednoducho zobrazí ako „... môžete ma kontaktovať na [zakryté]“ alebo podobne. [Zakryté] sa zobrazuje v inom farebnom texte a zjavne sa s ním nejako inak zaobchádza. Keď zoškrabem tieto popisy pomocou metódy 1, zdá sa, že program ImportXML „narazí“ na slovo [zakryté] a zostávajúci text z tohto popisu produktu prešiel do ďalšej bunky v mojej tabuľke. To zruinuje celú organizáciu tabuľky a rád by som našiel spôsob, ako by som mohol dosiahnuť, aby ImportXML ignoroval [zakryté] a stále umiestnil celý text popisu produktu do jednej bunky.

Metóda 2) Moje volanie po celej „karte produktu“ je nasledovné:

=ImportXML(A1,"//div[@class="productCard"]")

Ako už bolo spomenuté, toto funguje dobre (pre väčšinuprodukty) a nevadia mi ďalšie informácie (cena, dátum atď.), ktoré sú zverejnené v susedných bunkách. Webové stránky však tiež umožňujú „odporúčanie“ určitých produktov, keď sa na webe zobrazujú v inej farebnej palete, a preto si s väčšou pravdepodobnosťou získajú pozornosť kupujúceho. Pri použití tejto metódy sa „odporúčané“ produkty neškriabu ani neimportujú do mojej tabuľky, ale jednoducho sa odovzdajú.

Zdrojový kód (na skutočnom webe) (cez „skontrolovať“prvok „v prehliadači Safari) pre popis (Metóda 1) aj produktovú kartu (Metóda 2) vyzerajú takto (pre normálny produkt (a) a odporúčaný produkt (b)):

(A)

<div id="productSearchResults">
<div class="productCard tracked">
<div>...</div>
<div class="stats">...</div>
<div class="desc collapsed descFull">...</div>
</div>

(B)

<div id="productSearchResults">
<div class="productCard featured tracked">
<div>...</div>
<div class="stats">...</div>
<div class="desc collapsed descFull">...</div>
</div>

V obidvoch písmenách (a) a (b) môžete vidieť triedu „desc“že zavolám metódu 1, ktorá, zdá sa, funguje dobre. Z môjho čítania na tejto stránke si myslím, že som sa dozvedel, že daná trieda nemôže mať viac ako jedno slovo, a preto použitie výrazov „desc collapsed descFull“ a „productCard tracked“ a „productCard Feature Tracked„ Don “t predstavujú triedy s 3, 2 a 3 slovami v názve, ale namiesto toho sú prípady, keď bolo priradených viac tried?

Volanie „desc“ (metóda 1) funguje bez ohľadu na tov poriadku a zdá sa, že má všetky popisy. Pri metóde 2 by som si teda myslel, že volaním na kartu „productCard“ sa získajú informácie o všetkých produktoch, odporúčaných aj bežných, pretože „featured“ je extra trieda priradená niektorým produktom „cardCard“. Ak zavolám všetky karty „productCard“, nemali by sa vrátiť tie normálne A odporúčané? Momentálne to tak nie je. Skúšal som volať iba „sledované“ a len „odporúčané“ ako triedy a nič nevráti, takže moja logika, že sú ich vlastnou triedou ekvivalentnou s kartou „productCard“, môže byť chybná.

V súhrne platí, že volanie „desc“ v metóde 1 fungujev poriadku a dokonca dostane popisy „odporúčaných“ produktov. Ak sú však kontaktné informácie uvedené v popise a sú zobrazené ako [skryté], narazí to na moje údaje do nasledujúcej bunky v tabuľke, ktorá nasleduje bezprostredne za slovom. To odhodí a zruinuje celú organizáciu.

V metóde 2 vôbec nedostávam vybrané produkty, čo výrazne oslabuje to, o čo sa pokúšam. Dá sa opraviť jeden (alebo obidva!) Z týchto problémov ??

Ďakujem veľmi pekne za každú pomoc, ktorú mi môžete poskytnúť.

*** AKTUALIZÁCIA:Ako je vidieť v komentároch nižšie, použitie „obsahovať“, ako sa navrhuje, vylepšenú metódu 2 načítaním bežných aj odporúčaných produktov. Karty odporúčaných produktov však majú ďalšie textové prvky, a pretože sa pri tejto metóde scrapuje celá karta, odporúčané produkty sa nezhodujú so zarovnaním buniek, aké majú bežné produkty. Ak existuje spôsob, ako opraviť metódu 1, bolo by to oveľa lepšie. Ako je uvedené v komentároch nižšie, [skrytý] text sa zobrazuje v „rozpätí“, ktoré nasleduje pod / odsadené od

<div class="desc descFull collapsed"

ako

<span class="obscureText">[obscured]</span>

Existuje nejaký spôsob, ako môžem importovať súbory „desc“ akoBol som, ale povedať XPath, aby v podstate „ignoroval“ rozpätie [zakryté], alebo aby sa s ním vysporiadal aspoň tak, že nevytvorí text popisu okamžite po tom, ako sa [zakryté] objaví o jednu bunku viac?

Ďakujem veľmi pekne všetkým!

odpovede:

4 pre odpoveď č. 1

Svoju funkciu môžete zabaliť do concatenate()-funkcia, aby ste sa uistili, že sa to všetko zobrazuje v jednej bunke:

=concatenate(ImportXML(A1,"//div[@class="productCard"]"))