• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    ANGEL333node.js - Evented I/O for V8 JavaScript
    FEDY
    FEDY --- ---
    tak mam jeste jednu a obavam se, ze na to si sam neodpovim...

    zatim velmi obecne - pouzival jste nekdy nekdo knihovnu mikronode ? (ovladani Mikrotik routeru pomoci jejich API) vse normalne funguje, az na to, ze po nekolikatem pripojeni a uspesnem provedeni vsech prikazu me zacne router vykopavat , aniz bych dokoncil vsechny prikazy... jakmile router otocim, vse zase funguje, jen se situace opakuje. vzdy uzavru "channel" a pote ukoncim "connection", jak bych asi spravne mel. jiste to nebude chyba node.js a mozna ani chyba knihovny, ale neco musim delat blbe...

    pripadne predem diky.
    FEDY
    FEDY --- ---
    FEDY: no parada, jeste staci na zacatku poslat "terminal length 0" a je to bez paging :-D ...kdyby se nekomu nekdy hodilo
    FEDY
    FEDY --- ---
    FEDY: a jsem zase u toho - jakmile sem napisu, vzapeti si sam odpovim.... ono je tam totiz strankovani a mam ocekavat "--More--" ... diky :-)
    FEDY
    FEDY --- ---
    ahoj,

    nedelate nekdo pomoci nodejs ovladani sitovych prvku skrze telnet/ssh ? zkousim expect-telnet, asi by to mohlo delat co potrebuju, ale nejak se mi nedari ziskat jakykoliv delsi vypis.

    
    var et = require("expect-telnet");
    
    et("host_IP:23", [
      {expect: "Username", send: "......\r"},
      {expect: "Password", send: "......\r"},
      {expect: ">"       , send: "enable\r" },
      {expect: "Password", send: "......\r"},
      {expect: "#"       , send: "show version\r"},
      {expect: "", out: function(output) { console.log(output); }, send: "exit\rexit\r"} ],
    
      { timeout: 5000 },
    
      function(err) {
        if (err) console.error(err);
      }
    );
    


    vysledek je "s" nebo "sh"... :-D pricemz tcpdumpem vidim, ze mi cely vypis prisel...
    KOC256
    KOC256 --- ---
    SUCZKER:
    No nejsem v tom expert, tak at se tu pak o to nekdo neopira jako o bernou minci...

    1/ zvedl jsem timeout... (cas neni mym nepritelem)

    2/ cele to obalil do try catch
    
    try {
    	await page.goto('https://.../?profile_name=' + nick + '&type[]=' + type +'&submit=Filter', {waitUntil: 'load'});
    	await page.waitForSelector('textarea:not(#support_body)');
    	const txt = await page.$eval('textarea:not(#support_body)', el => el.value);
    	...
    } catch (e) { ... }
    


    Obcas to neprojde, ale cele to nespadne a nacte se to proste jindy...
    SUCZKER
    SUCZKER --- ---
    KOC256: Da se vysvetlit, cos udelal jinak, kdyby se to treba nekdy nekomu hodilo ??
    KOC256
    KOC256 --- ---
    SUCZKER:
    No uz to mam "nejak" odladene. Zase to asi nestoji za to, aby se tim nekdo vice zabyval a i ta chyba je jen nekdy... Kdyby to blblo, tak si s tim jeste pohraju jak jsi psal...

    Diky!
    SUCZKER
    SUCZKER --- ---
    KOC256: Bylo by lepsi, kdybys napsal, co delas. Proste document.ready nebo ekvivalent ke vzdycky lepsi. Je stranka staticka, nebo je v ni JS, co ji na klidntovi vyrendruje? Tohle vse muze hrát roli? Kdyztak hod Vic info do posty, jestli to neni top secret project.

    Zkusit stranku po loadu ulozit a podivat se, jestli tam skutecne je Dom structural, ktera odpovedi tomu selectoru, neni od veci.

    Proc proste nevyzlousis jiny timeout eventy z toho page.goto a uvidis? A pak napis, pokud to nebudete fungovat.

    Ja nevim, co chces scrapovat, se pak tezko ladi, když neco nefacha.
    KOC256
    KOC256 --- ---
    SUCZKER:
    Jsi dost tajemný...

    Jaká je tedy nejlepší praxe na úpravu toho řádku, když waitUntil: 'load' není to pravé...:
    await page.goto('https://example.com/Tools/?name=' + nick + '&loop=' + loop + '&submit=Filter', {waitUntil: 'load'});

    Patří do parametru něco jiného?
    SUCZKER
    SUCZKER --- ---
    koukam, ze to "page.goto" ma jeste varianty "domcontentloaded" a "networkidle0", atd.. mozna zkus neco z nich.
    SUCZKER
    SUCZKER --- ---
    KOC256: To si zrejme load mysli. Nevim, co se snazis scrapovat, ale udalost "document.load" neni to samy, co udalost "document.ready", jen tak na okraj. Bylo by asi vhodny si dokument pote, co skonci load, nekam ulozit, aby bylo jisty, ze tam skutecne je to, co hledas.
    KOC256
    KOC256 --- ---
    SUCZKER:
    Dik... ale proc tam je teda toto:
    {waitUntil: 'load'}

    Myslel jsem ze to resi ten load. Pokud by load dobehl, tak tam třen prvek urcite je. Leda ze by dobehl ale vratil prazdnou stranku (bila streanka) a load by se myslel ze tedy hotovo...
    SUCZKER
    SUCZKER --- ---
    KOC256: process.on('unhandledRejection', (err) => { ... }) asi znas, to pisu jenom tak do foroty. Celou porceduru mas urcite oznaceno jako async, takze to problem nebude.

    Co ctu dokumentaci k waitforselector, tak pokud se proste neobjevi markup, kterej by odpovidal selectoru behem danyho timeout (defaultne asi tech 30000ms, ale nastavitelne pomci druhyho parameteru options), tak to proste throwne. Rekl bych, ze proste na strance se behem tech 30 sekund ten selektor neobjevi nebo tam proste nikdy nebyl.

    Je to prijatelne vysvetleni ?
    KOC256
    KOC256 --- ---
    Jinak ten chrome na linuxu oproti phantomu+casperu na widlich je 2x pomalejsi... (3 vs 7 minut).
    Nevim na kolik je to srovnatelne, protoze to muze byt klidne i vykonem.
    Win 10, 4 jadra i, 12GB RAM
    vs
    Debian jessie (VPS), 2 jadra, 1GB RAM (RAm je dost), procak obcas na 100%
    KOC256
    KOC256 --- ---
    
    for (loop of [2, 3, 5, 7]) {
    	try {
    		await page.goto('https://example.com/Tools/?name=' + nick + '&loop=' + loop + '&submit=Filter', {waitUntil: 'load'});
    	} catch (error) {
    		console.log('ERROR TU');
    		continue;
    	}
    console.log('17');
    	await page.waitForSelector('textarea:not(#support_body)');
    console.log('18');
    ...
    


    mám to v rámci webserveru a chci aby při nedostupnosti (timeout) jedné URL aby mi to skočilo na další... Takže otrocky takto všude dávám try+catch. Ale stává se mi, že i když mi to projde tím page.goto(), tak mi to spadne na:
    UnhandledPromiseRejectionWarning: Error: waiting failed: timeout 30000ms exceeded
    v page.waitForSelector().



    - Nějak jsem hloupě doufal, že waitUntil: 'load' se tam dává, aby se čekalo na load...
    - Mám nastaveno await page.setDefaultNavigationTimeout(3000);, což ale platí jen pro goto().

    Nějaké know-how k tomuto pls?
    KOC256
    KOC256 --- ---
    Jinak drobné zastavení nad rozdíly Puppeteer a CasperJS... ...pokud by to někoho zajímalo.


    C:
    var txt = casper.fetchText('textarea');
    P:
    const txt = await page.$eval('textarea:not(#support_body)', el => el.value);

    Protože ve stránce jsou dva prvky textarea a z toho ten #support_body je neviditelný a ten co chci použít nemá žádný identifikátor (ani nadřazený). Vyplývá z toho, že Chrome pracuje i s neviditelnými elementy.


    C:
    nicks.forEach(function(nick) {
    P:
    for (nick of nicks) {


    C:
    pageSettings: { loadImages: false, }
    P:
    await page.setRequestInterception(true);
    page.on('request', request => {
    	if (request.resourceType() === 'image')
    		request.abort();
    	else
    		request.continue();
    })



    const nicks = [
    	//'pepa'
    	,'koc256'
    	,'karel'
    ];

    C:
    projde
    P:
    hodí chybu - vadí mu ta první čárka


    U Chrome se mi líbí, že se nekonečně nezanořuje syntaxe...


    A jeden z hlavních je že PhantomJS je jeden velký problém s instalací a provozováním... :(
    KOC256
    KOC256 --- ---
    SUCZKER: code
    ...
    /code
    BULHI
    BULHI --- ---
    SUCZKER: to je nyx feature, syntax highlighting
    SUCZKER
    SUCZKER --- ---
    a ja se zeptam naprosto debilne a offtopic, jak sem dostavate ty barevny logy z terminalu ??
    KOC256
    KOC256 --- ---
    MARYO:
    zatim jsem si vzal od Forpsi VPS na 2 mesice zdarma. Jinak stoji 25kc/mesic. To na to hrani mi i stoji za to...
    Kliknutím sem můžete změnit nastavení reklam