Hirdetés
- TCL LCD és LED TV-k
- Kormányok / autós szimulátorok topikja
- SSD kibeszélő
- Gaming notebook topik
- Milyen billentyűzetet vegyek?
- Mini-ITX
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- A megszokottól eltérő képaránnyal jön a JapanNext monitora
- Meghozta az első, memórapánikból eredő áremelését az NVIDIA
- 3D nyomtatás
-
PROHARDVER!
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
Hunmugli
aktív tag
válasz
maestro87
#6922
üzenetére
Ami neked kell, az a reguláris kifejezés. Egy hasonló bonyolultságú
Hogy a javascriptbe hogy teszed be, annak már nézz te magad utána - én nem szeretném megtanulni.Egyébként a linkelt oldalon a Tools menü alatt van is egy code generator, az már kész kódot ad neked

Szerk.: lemaradt a * a kifejezés végéről...
-
Doink
aktív tag
válasz
maestro87
#6690
üzenetére
Ezt a fát nem akarod kiiratni mert azt látod a böngészőben F12->source. <html> a fa csúcsa, annak van 2 gyereke <head> <body> és így tovább. A belső adatszerkezet lesz egy fa ahogy a gép tárolni fogja a memóriában hogy gyorsan tudj benne keresni és módosítani.
Ennek a libnek meg pont az a lényege hogy css selectorokkal tudj keresni/módosítani ebben a html-ben és ne kelljen stringkezelési műveletekkel bajlódni.
Ha mégis be szeretnéd járni a fát akkor a a dokumentációban találsz olyan metódust hogy .children() ami visszadaja egy node közvetlen gyerekeit és így már adja magát hogy rekurzívan elég egyszerű bejárni.A részfát úgy értettem hogy ha van az oldalon egy ilyened és neked kell a price és a name
<!-- többmillió html kód felette -->
<div id="product">
<p class="price">1</p>
<p class="name">name</p>
</div>
<!-- többmillió html kód alatta -->és amúgy az oldalon még van ezer más html tag mindenfelé akkor azt így csinálod:
var $ = cheerio.load(html);
var product = $("#product");
var result = {
price: product.children(".price").text(),
name: product.find(".name").text()
}és nem ezt:
var $ = cheerio.load(html);
var result = {
price: $("#product > .price").text(),
name: $("#product > .name").text()
}mert így kétszer végig fog menni az egész fán megkeresni a #product-ot.
Ettől függetlenül a cheerio oldalán van elég sok példa amit érdemes lenne átfutnod. -
Doink
aktív tag
válasz
maestro87
#6688
üzenetére
A fenti kódot nodejs-ben futtattam mert a lényegi rész ugyan az google scriptben is:
var cheerio = cheeriogasify.require('cheerio');
function run() {
var response = UrlFetchApp.fetch("https://www.gearbest.com/smart-watches/pp_362705.html");
var $ = cheerio.load(response.getContentText());
var result = {
url: $("meta[property='og:url']").attr('content'),
price: $(".price_area > .goods_price > .my_shop_price").data('orgp'),
name: $(".goods-info-top > h1").text()
}
Logger.log(result);
}A cheerionak lassabbnak kell lennie amíg csak pár adatra van szükséged, ettől függetlenül így is elég gyors és ugyan úgy lehet rajta gyorsítani ahogy jquery-ben is tudsz (nem az egész fában keresel hanem csak részfában). Az hogy a google script-re milyen korlátozások vannak és ott miért ilyen lassú már maga az url lekérdezés is annak neked kell utánanézni, nodejs-ben 180ms alatt végez a felparseolással és az eredmény kiírással, google scripben pedig ugyan ez a művelet több mint 10 másodperc.
-
Doink
aktív tag
válasz
maestro87
#6685
üzenetére
Szia, sima css selectorokkal:
var request = require('request');
var cheerio = require('cheerio');
request('https://www.gearbest.com/smart-watches/pp_362705.html', function (error, response, html) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
var url = $("meta[property='og:url']").attr('content');
var price = $("meta[property='og:price:amount']").attr('content');
console.log(url, price);
}
}); -
Doink
aktív tag
válasz
maestro87
#6674
üzenetére
Azért nem működik mert szerver oldalon lehúzol egy stringet valahonnan és azt még fel kéne parse-olni hogy ne szövegként kelljen kezelni hanem fába legyen rendezve mint a DOM.
Erre én kb csak a cheerio nevű lib-et ismerem de szerintem bármilyen xml parser megteszi ha az oldal valid. -
Jim-Y
veterán
válasz
maestro87
#6671
üzenetére
Szerintem csak
1: az eredeti kerdesed csak annak vilagos aki epp azzal foglalkozik amivel te
2: kevesen vannak akik ezzel a temaval foglalkoznakPl nekem sem vilagos hogy mire is van szukseged. Olyan mintha egy mezei URL-bol kene valamit kinyerned, de abban nem szokott "og:image" lenni szoval megiscsak valami mas url-rol van szo. A google script nem tudom pontosan, hogy micsoda. Szoval szerintem csak nem vilagos a kerdes es ezert sem valaszol ra senki. Az is lehet hogy a kerdesed nem javascript specifikus inkabb valami XY (google script vagy fene se tudja mi) specifikus.
-
maestro87
őstag
válasz
maestro87
#6656
üzenetére
A függvényemben meg nem működik rendesen.

20 órát 22-re konvertálja, mikor 14-re kellene. Mit rontottam el?function convertTime()
{
var range = SpreadsheetApp.getActiveRange();
var data = [];
var output = [];
data = range.getValues();
for(var i = 0, iLen = data.length; i < iLen; i++) {
var HongKong = m.moment.tz(data[i][0].toString(), 'Asia/Hong_Kong');
var Budapest = HongKong.tz('Europe/Budapest').format('YY/MM/DD HH:mm');
output.push([Budapest]);
}
range.offset(0,1).setValues(output);
} -
PumpkinSeed
addikt
válasz
maestro87
#6244
üzenetére
Az ilyet Javascriptben írják meg. Ha megnézed a forrást találsz ilyet, hogy
remainTimeamiben van day, hour, mini és sec. Ezeket kell figyelni, hogy 0 legyen mind, viszont azt is figyelembe kell venni, hogy van egy betű is ott. Szóval ha mondjuk a.remainTime .dayegyenlő0d-vel és így tovább akkor egy esemény következik a gombon ami alatta van.
Új hozzászólás Aktív témák
- Építő/felújító topik
- Samsung Galaxy Z Fold5 - toldozás-foldozás
- TCL LCD és LED TV-k
- Kormányok / autós szimulátorok topikja
- Amit látnod kell 80’ – 90’ évek, egész estét betöltő mozi filmjei.
- Wise (ex-TransferWise)
- EA Sports WRC '23
- PlayerUnknown’s Battlegrounds
- SSD kibeszélő
- Gaming notebook topik
- További aktív témák...
- AOC Q27G3XMN 27" 180Hz 1440p gamer monitor
- Iphone 13 mini mobiltelefon eladó
- Ryzen 5 5500 (ÚJ, 2 ÉV GARI) - 16 GB DDR4 3200 MT/s CL16 - 1 TB NVMe SSD (G4) - MSI MAG Vampiric ház
- Samsung NP270E5E-K07PL Notebook 3 órás akkuval
- Új Gamer PC - Ryzen 7 5700X / RTX 5060 Ti / B550M WIFI / 16GB RAM / 1TB SSD / 650W
- Lenovo Thunderbolt 3 kábel (4X90U90617)
- Gyors és kedvező csomagküldés Magyarországon és külföldre!
- HIBÁTLAN iPhone 11 64GB White-1 ÉV GARANCIA - Kártyafüggetlen, MS4389, 100% Akksi
- AKCIÓ! BESZÁMÍTÁS! Részletfizetés 0% THM ÚJ RTX 5090 több típusban 3 év garanciával 27% áfával
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Hogy a javascriptbe hogy teszed be, annak már nézz te magad utána - én nem szeretném megtanulni.





