Ergebnis 1 bis 6 von 6

Thema: Amazon Crawling

  1. #1
    Senior Avatar von Uranjitsu
    Registriert
    May 2016
    Beiträge
    210
    Gefällt mir!
    223
    Du gefällst: 158

    Amazon Crawling

    Hallo zusammen,

    ich versuche gerade das Image von Amazon auszulesen, allerdings wird mir nichts angezeigt.
    Der Preis ist auslesbar.
    Hat jemand eine Idee?

    Hier der Code:
    PHP-Code:
    function get_data($url)
    {
        
    /* do some curl magic */
        
    $ch curl_init();
        
    curl_setopt($chCURLOPT_URL$url);
        
    curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
        
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    curl_setopt($chCURLOPT_CONNECTTIMEOUT3);
        
    $data curl_exec($ch);
        
    curl_close($ch);
        return 
    $data;
    }

    function 
    get_match($regex$content$pos 1)
    {
        
    /* do your job */
        
    preg_match($regex$content$matches);
        
    /* return our result */
        
    return $matches[intval($pos)];
    }

    function 
    amazonCrawler($url)
    {
        
    /* grab some data */
        
    $amazon_content get_data($url);
        
    $amazon['price'] = @get_match('!<span id="priceblock_ourprice" class="a-size-medium a-color-price">(.+)</span>!iUm'$amazon_content);
        
    $amazon['image'] = @get_match('/<div id="imgTagWrapperId" class="imgTagWrapper" style="(.*?)">.*?<img alt="(.*?)" src="(.*?)" data-old-hires="(.*?)" class="(.*?)" id="landingImage" data-a-dynamic-image="(.*?)" style="(.*?)">.*?<\/div>/s'$amazon_content3);
        
        
    $array = array(
            
    $amazon['price'],
            
    $amazon['image']
        );
        return (
    $array);
    }

    list(
    $amazon['price'], $amazon['image']) = amazonCrawler('https://www.amazon.de/Sony-Kompaktkamera-Klarbild-Zoom-Weitwinkelobjektiv-Bildstabilisator/dp/B00W46KQ5W/ref=s9_ri_gw_g23_i1_r?pf_rd_m=A3JWKAKR8XB7XF&pf_rd_s=&pf_rd_r=XDZ21RBKDZZXXCAT2CMK&pf_rd_t=36701&pf_rd_p=c3435e44-81b4-4c2f-9f8b-9b818660cb26&pf_rd_i=desktop');

    echo 
    "22222<br /><br />";
    echo 
    "Preis: ".$amazon['price']."<br />";
    echo 
    "Image: ".$amazon['image']; 
    LG
    Geändert von Uranjitsu (03.12.2016 um 11:33 Uhr)

  2. Diesen Mitgliedern gefällt dieser Beitrag:

    FLX

  3. #2
    Senior Avatar von Nimbus
    Registriert
    Oct 2015
    Beiträge
    587
    Gefällt mir!
    110
    Du gefällst: 605
    Ich hab mir das mal angeschaut. Die Antwort ist (oh Wunder), dass der 2. RegEx falsch ist

    Eventuell hast du dir den HTML-Source nicht so angeschaut, wie ihn deine cURL Funktion bekommt (der style Tag kommt z.B. bei mir ganz am Ende)
    Vielleicht sind aber auch die Amazon Seiten sind nicht immer identisch aufgebaut (es wäre denkbar, dass je nach Produkt ein leicht anderer Aufbau gewählt wird)

    Amazon Crawling auf diese Art und Weise dürfte onehin wenig Spaß machen, denn es dürfte recht zügig das Bot-Schutz-Captcha kommen.

  4. Diesen Mitgliedern gefällt dieser Beitrag:


  5. #3
    Orakel von Delphi Avatar von 1stAid
    Registriert
    Dec 2015
    Beiträge
    267
    Gefällt mir!
    86
    Du gefällst: 226
    data-old-hires="https://images-na.ssl-images-amazon.com/images/I/61sJVMWE%2BKL._SL1320_.jpg"
    Du hast viel regex für etwas Bild;
    als flag setze sigel-line
    (?<=data-old-hires=\")(.*?)(?=\")
    https://regex101.com/r/UJo9aJ/1
    trifft.
    Wenn du ein anderes format brauchst kannst du dir den link "bauen" da die immer gleich aufgebaut werden z.B.
    https://images-na.ssl-images-amazon...._AC_US480_.jpg
    für ein pic mit 480 pixeln.

    In meinem Amazon(pic)crawler mache ich das seit Jahren ähnlich....
    Geändert von 1stAid (03.12.2016 um 20:09 Uhr)

  6. Diesen Mitgliedern gefällt dieser Beitrag:


  7. #4
    Junior Avatar von bobby
    Registriert
    Nov 2016
    Beiträge
    72
    Gefällt mir!
    92
    Du gefällst: 16
    die preise liegen auf amazon.de, die images auf s3.. sind zwei domains und bei https haste wohl ein Konflikt in deiner config. würde ich aus dem Stehgreif schreiben.

  8. Diesen Mitgliedern gefällt dieser Beitrag:


  9. #5
    Anfänger Avatar von Certain
    Registriert
    Nov 2016
    Beiträge
    19
    Gefällt mir!
    8
    Du gefällst: 14
    mhh ist jetzt etwas spät.
    Morgen kann ich da genaur reinschauen.

    Aber probier doch mal <img id="landingImage"> auszulesen, vielleicht klappt das

  10. Diesen Mitgliedern gefällt dieser Beitrag:


  11. #6
    Senior
    THEMENSTARTER

    Avatar von Uranjitsu
    Registriert
    May 2016
    Beiträge
    210
    Gefällt mir!
    223
    Du gefällst: 158
    Zitat Zitat von 1stAid Beitrag anzeigen
    data-old-hires="https://images-na.ssl-images-amazon.com/images/I/61sJVMWE%2BKL._SL1320_.jpg"
    Du hast viel regex für etwas Bild;
    als flag setze sigel-line
    (?<=data-old-hires=\")(.*?)(?=\")
    https://regex101.com/r/UJo9aJ/1
    trifft.
    Wenn du ein anderes format brauchst kannst du dir den link "bauen" da die immer gleich aufgebaut werden z.B.
    https://images-na.ssl-images-amazon...._AC_US480_.jpg
    für ein pic mit 480 pixeln.

    In meinem Amazon(pic)crawler mache ich das seit Jahren ähnlich....
    Danke, das hat wunderbar geholfen

    PHP-Code:
    function get_data($url)
    {
        
    /* do some curl magic */
        
    $ch curl_init();
        
    curl_setopt($chCURLOPT_URL$url);
        
    curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
        
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    curl_setopt($chCURLOPT_CONNECTTIMEOUT3);
        
    $data curl_exec($ch);
        
    curl_close($ch);
        return 
    $data;
    }

    function 
    get_match($regex$content$pos 1)
    {
        
    /* do your job */
        
    preg_match($regex$content$matches);
        
    /* return our result */
        
    return $matches[intval($pos)];
    }

    function 
    amazonCrawler($url)
    {
        
    /* grab some data */
        
    $amazon_content get_data($url);
        
    $amazon['price'] = @get_match('!<span id="priceblock_ourprice" class="a-size-medium a-color-price">(.+)</span>!iUm'$amazon_content);
        
    preg_match_all('/(?<=data-old-hires=\")(.*?)(?<=\")/s'$amazon_content$amazon['image']);
        
        
    $array = array(
            
    $amazon['price'],
            
    $amazon['image'][0][1]
        );
        return (
    $array);
    }

    list(
    $amazon['price'], $amazon['image'][0][1]) = amazonCrawler('https://www.amazon.de/MSI-GE72-6QD161-Notebook-6700HQ-Skylake/dp/B015CJQAFM/ref=lp_4368994031_1_1?s=computers&ie=UTF8&qid=1480761465&sr=1-1');

    echo 
    "111111<br /><br />";
    echo 
    "Preis: ".$amazon['price']."<br />";
    echo 
    "Image: ".str_replace('"'''$amazon['image'][0][1])."<br />"

  12. Diesen Mitgliedern gefällt dieser Beitrag:


Ähnliche Themen

  1. Amazon Review "Helpful" Votes für mein Amazon Profil
    Von katze im Forum Business Daily Talk & OffTopic
    Antworten: 1
    Letzter Beitrag: 18.04.2021, 08:03
  2. Amazon Underground
    Von id12 im Forum Datenschutz & Privatsphäre (IT-Security)
    Antworten: 0
    Letzter Beitrag: 29.08.2015, 16:28

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
SzeneBox.org... im Mittelpunkt der Szene!
© since 2015 szeneBOX.org - All Rights Reserved
Domains: www.szenebox.org