2016-10-20 2 views
0

Ich habe Probleme mit Scraping Namen von Spielen aus einer Webseite .. Es wird ein leeres Array zurückgegeben .. Sobald der Name gekratzt ist, möchte ich es in eine neu erstellte Textdatei geschrieben werden .. Mein Code sollte unten sein .. seine bei weitem nicht vollständig, aber ich bin sicher, dass ich eine While Bedingung benötigt ..Python: Scrape Spielnamen

def ScrapeK10(): 
siteToScrape = 'http://www.kiz10.com/new-games' 
print '\n[!] Requesting Kiz10..' 
kizReq = requests.get(siteToScrape) 
print '\n[!] Scraping Newest Games...' 
kizTree - html.fromstring(kizReq.content) 
kizElement = kizTree.xpath('//strong[@class="bx-caption"]/text()') 
print 'Latest Games : ', kizElement, '\n' 
return 

die Probleme im, läuft in ist im ein leeres Array immer so im nicht sicher, ob im Schaben tatsächlich die Website richtig oder sogar mit dem richtigen xpath?

Noch ein wenig neu in diesem .. Dont wollen schöne Suppe verwenden, noch will ich scapy verwenden ..

aber mein Ziel ist es, alle Spiele-Namen in der Web-Seite zu kratzen ich gab, und sie schreiben zu einer neuen Datei ..

+0

Bitte schließen Sie alle Module ein, die Sie verwenden. –

Antwort

0

Können Sie Regex verwenden? Beachten Sie, dass alle Spielnamen in einem JavaScript-Objekt namens "itemsGame" enthalten sind.

Verwenden Sie Regex, um dies herauszufiltern, und verwenden Sie Regex erneut, um jede Zeile zu teilen.

Dies sollte es Alternativ könnte man einfach eval() aufrufen, auf der Saite von var itemsGame = auf die nächste \ n Zeichen tun

def main(): 
    import re 
    import requests 
    url = "http://kiz10.com/index.php?page=newgames" 
    raw = requests.get(url).content 
    match = re.search("var itemsGame = \[(.*?)\];$", raw, re.M) 
    for line in re.findall('\[(.*?)\]', match.group(1)): 
     print(line.replace("'", "").split(",")[3].strip()) 

.

Offensichtlich ist eval jedoch immer gefährlich und nie wirklich empfohlen

+0

Ich glaube es ist in der HTML nicht wahr? '

  • \t \t \t \t \t
    \t
    Five Fights At Freddys \t
  • ' – Xploit

    +0

    Ahh Warte ich denke, seine in beide .. im immer noch neu bei Python war nicht sicher, was genau Regex tat, bevor ich ein paar Dinge darüber gelesen habe, aber gesehen, es war schlechte Praxis zu verwenden, werde ich das ausprobieren, können Sie Ihren Code ein wenig mehr erklären? Ich mag es zu wissen, was ich mache, anstatt nur jemanden Code zu kopieren, ich lerne nicht viel auf diese Weise – Xploit

    +0

    Es funktionierte .. Danke .. Aber ich würde immer noch eine Erklärung lieben, weil ich ein paar mehr Websites habe ich möchte dies auch tun und ich will mehr lernen – Xploit