2017-10-30 2 views
0

Ich versuche, Websites zu kratzen und ihre mailto Links greifen:Javascript: Cherrio ist inkonsistente Ergebnisse für Anker-Tag Rückkehr

const url = "https://www.cverification.com/"; 
axios.get(url).then(({ data }) => { 
    const $_ = cheerio.load(data); 
    const mailToLink = $_('a[href^="mailto:"]'); 
    console.log("maillllllllll: ", mailToLink); 
    if (!mailToLink || !mailToLink.length) { 
    console.log("NO EMAILLLL: ", url); // <------------ this prints 
    return; 
    } 

    const email = mailToLink.attr("href").replace("mailto:", ""); 
    console.log("SUCCEEDEDDD", url, email); 
}); 

ist jedoch Cheerio ein seltsames Objekt für einige der Verbindungen der Rückkehr:

maillllllllll: initialize { 
    options: 
    { withDomLvl1: true, 
    normalizeWhitespace: false, 
    xml: false, 
    decodeEntities: true }, 
    _root: 
    initialize { 
    '0': 
     { type: 'root', 
     name: 'root', 
     namespace: 'http://www.w3.org/1999/xhtml', 
     attribs: {}, 

Dieses Skript funktioniert für einige Websites und nicht für andere. Wenn ich https://www.cverification.com/ besuche und den Code Zeile für Zeile (nur mit jQuery) ausführen, funktioniert es. Was mache ich falsch?

+1

zufällige Ahnung hier, aber ich würde überprüfen, dass "Daten" zurückgegeben wird von Ihrer Anfrage erhalten ist ein String, bevor Sie es in cheerio laden. –

+0

nur überprüft und ich kann überprüfen, dass es der HTML ist. guter Versuch, obwohl – Edmund

+2

Ich überprüfte den Quellcode von https://www.cverification.com/ und wir sahen, dass es reagiert. Da cheerio JavaScript-Code nicht ausführt, kann es die Anker, die Sie suchen, nicht finden – kakamg0

Antwort

0

Wie andere in den Kommentaren herausgefunden haben, verwendete die Site React und daher wurde der Link eingefügt, nachdem React alle Komponenten injiziert hat.

Ich reparierte diese durch den User-Agent meiner Anfrage Aktualisierung:

const instance = axios.create({ 
    headers: { 
    "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4" 
    } 
}); 

Dieses es fest!

Verwandte Themen