-
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
remainTime
amiben 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 .day
egyenlő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
Hirdetés
- iPhone topik
- Gurulunk, WAZE?!
- Egérpad topik
- Az AMD-vel tervezi a következő generációs Xboxokat a Microsoft
- Csíkszélességben verné az Exynos 2600 a Snapdragon 8 Elite 2-t
- Formula-1 humoros
- Kazy Computers - Fehérvár - Megbízható?
- Linux kezdőknek
- Crohn betegség
- alza vélemények - tapasztalatok
- További aktív témák...
- Eladó Konfig Ryzen 7 9700X 32GB DDR5 1TB SSD RX6900XT 16GB!
- Eladó Gamer PC i7 14700, RTX 5070, 32 GB 6000mhz RAM, Vizhűtés, 850W 80+ Táp, 2 év Garanciával
- Google Pixel 9 Pro 5G 16/256GB Szürke Színben Bontatlan 12 Hó Garanciával
- iPhone XS Max 64GB LEÍRÁST OLVASS!
- Eladó: Bowers & Wilkins PX7S2e - garanciás
- Lenovo ThinkPad X270 (16) - i5-7300U, 16GB, 512GB SSD, 12" FULL HD
- 119 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 7 7745HX, RTX 4070 (48 hónap garancia!) (ELKELT)
- ÁRGARANCIA! Épített KomPhone Ryzen 5 5500 16/32/64GB RAM RTX 4060 8GB GAMER PC termékbeszámítással
- Wilbur Smith könyvek (15 db) egyben
- Beszámítás! HP Z2 G4 Tower Workstation számítógép garanciával, hibátlan működéssel
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest