/ / Проблеми с Xpath в Google Spreadsheets (ImportXML) - xml, xpath, google-spreadsheet

Проблеми с Xpath в Google Електронни таблици (ImportXML) - xml, xpath, google-spreadsheet

Това е страхотен сайт и аз вече имах многона въпроси, отговаряни просто чрез превъртане и търсене в други публикации. За съжаление не мога да намеря отговор, който конкретно помага на този проблем, и реших, че ще опитам да публикувам и да търся помощ,

Използвам ImportXML и google електронни таблици, за да "изстържа" няколко описания на продукти от сайт за търговия на дребно. Работи добре в по-голямата си част и го направих по 2 начина:

1) Специфично обаждане към описателната част на публикацията:

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

2) Обадете се на цялата „продуктова карта“, която също връща информация като заглавие на продукта, цена, публикувано време и поставя тези елементи в съседни клетки в моята електронна таблица на Google:

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

И двете са работили добре, но аз се натъкнах наразличен проблем при използването на всеки метод. Ако успея да разреша дори един от тези проблеми, ще щастливо бракувам другия метод, просто ми трябва един от тях да работи. Проблемите са:

Метод 1) Уебсайтът забранява на продавачите давключително информация за контакт в публикации на продукти - когато те така или иначе включват имейл адрес, сайтът автоматично го блокира, така че в публикуването той просто се появява като „... можете да се свържете с мен на [затъмнено]“ или нещо подобно. [Затъмненият] се появява в различен цветен текст и очевидно се третира по различен начин по някакъв начин. Когато изстъргвам тези описания с помощта на Метод 1, ImportXML се появява "блъснат", когато удари думата [затъмнен], и прехвърли останалия текст от това описание на продукта в следващата клетка в моята електронна таблица. Това съсипва цялата организация на листа и бих искал да намеря начин, по който мога да накарам ImportXML просто да игнорира [затъмненото] и все пак да поставя целия текст на описанието на продукта в една клетка.

Метод 2) Моят разговор за цялата „продуктова карта“ е както следва:

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

Както споменахме, това работи добре (за повечетопродукти) и нямам нищо против допълнителната информация (цена, дата и т.н.) да бъде публикувана в съседни клетки. Въпреки това, уебсайтът също така позволява определени продукти да бъдат „представени“, където те се появяват в различна цветова кутия на сайта и следователно е по-вероятно да привлекат вниманието на купувача. Използвайки този метод, „представените“ продукти не се бракуват или импортират в моята електронна таблица, а просто се прехвърлят.

Изходният код (на действителния сайт) (чрез "инспектиранеелемент "в Safari) както за описанието (Метод 1), така и за продуктовата карта (Метод 2) изглежда по следния начин (за нормален продукт (а) и представен продукт (б)):

(А)

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

(Б)

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

Можете да видите и в двата (a) и (b) класа "desc"че призовавам в метод 1, който изглежда работи добре. От моя прочит на този сайт мисля, че научих, че даден клас не може да има повече от една дума и затова използването на „desc срина descFull“ и „productCard trackled“ и „productCard включваше проследено„ don “t представляват класове с 3, 2 и 3 думи в заглавието, но вместо това случаите, когато са зададени няколко класа?

Независимо от това, призивът към "desc" (метод 1) работидобре и изглежда получават всички описания. Следователно в метод 2 бих си помислил, че при повикване към "productCard" ще получите информация за всички продукти, както представени, така и редовни, тъй като "Featured" е допълнителен клас, присвоен на някои "productCard". Ако се обадя на всички "productCard", не трябва ли да се върнат нормалните И чертите? Това в момента не е така. Опитах да се обадя просто "проследяван" и просто "представен" като класове и нито едно не връща нищо, така моята логика, че те са техен собствен клас, еквивалентен на "productCard", може да е недостатък.

В обобщение, обаждането "desc" в метод 1 работиглоба и дори получава описания за продукти с „черта“. Когато обаче информацията за контакт е включена в описанието и е показана като [затъмнена], тя блъска моите данни в следващата клетка в електронната таблица, веднага след думата. Това изхвърля и съсипва цялата организация.

В метод 2 изобщо не получавам представените продукти, което значително отслабва това, което се опитвам да правя. Може ли (или и двата!) От тези проблеми да бъдат отстранени ??

Благодаря толкова много за всяка помощ, която можете да ми окажете.

*** UPDATE: Както се вижда в коментарите по-долу, използвайте "съдържа", както е предложено подобрен метод 2, чрез извличане както на обикновени, така и на популярни продукти. Въпреки това, представените продуктови карти имат допълнителни текстови елементи и тъй като цялата карта се изстъргва по този метод, представените продукти не съответстват на подравняването на клетките, което правят обикновените продукти. Ако има начин да се определи метод 1, това би било много по-добре. Както е посочено в коментарите по-долу, [затъмненият] текст се появява в "педя", който следва отдолу / отстъпен от

<div class="desc descFull collapsed"

като

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

Има ли някакъв начин, по който мога да импортирам "desc" s катоБил съм, но кажете на XPath по същество да "игнорира" [затъмнения] педя или поне да се справи с него по начин, който не прави текста на описанието веднага след като [затъмнен] се появява една клетка?

Благодаря толкова много на всички!

Отговори:

4 за отговор № 1

Можете да обвиете функцията си с concatenate()-функция, за да сте сигурни, че всичко се показва в една клетка:

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