2016-12-10 8 views
0

Ich bin einen Schritt vor der Fertigstellung eines Projekts. Soweit ich weiß, funktionieren alle Teile des Codes und ich habe sie separat getestet. Die Ausgabe-CSV wird jedoch aus irgendeinem Grund immer noch leer angezeigt. Mein Code:CSV-Ausgabe ist leer

import requests, bs4, csv, sys 

reload(sys) 
sys.setdefaultencoding('utf-8') 

url = 'http://www.constructeursdefrance.com/resultat/?dpt=01' 
count = 1 

def result(): 
    res = requests.get(url) 
    res.raise_for_status() 
    soup = bs4.BeautifulSoup(res.text,'html.parser') 
    links = [] 
    try:  
     for div in soup.select('.link'): 
      link = div.a.get('href') 
      links.append(link) 

     with open('french.csv', 'wb') as file: 
      writer = csv.writer(file) 
      for i in links: 
       res2 = requests.get(i) 
       soup2 = bs4.BeautifulSoup(res2.text, 'html.parser') 
       for each in soup2.select('li > strong'): 
        writer.writerow([each.text, each.next_sibling]) 

    except: 
     pass 

while not url.endswith('?dpt=010'): 
    print 'downloading %s' %url 
    result() 
    count += 1 
    url = 'http://www.constructeursdefrance.com/resultat/?dpt=0' + str(count) 

url = 'http://www.constructeursdefrance.com/resultat/?dpt=10' 
count = 10 
while not url.endswith('?dpt=102'): 
    print 'downloading %s' %url 
    result() 
    count += 1 
    url = 'http://www.constructeursdefrance.com/resultat/?dpt=' + str(count) 

print 'done' 

Dies ist wirklich eines der ersten größeren Projekte, die ich versuche, als Anfänger zu lösen. Es ist frustrierend, so nah zu sein, aber so feststeckend. Jede Hilfe wird geschätzt.

+1

ich vermute, Sie eine Ausnahme in Ihrem Versuch haben blockieren, und die Ausnahme: Pass sagt Ihnen nicht, was es ist. Verwenden Sie niemals außer: pass, wenn die Ausnahmen für die Logik des Codes wichtig sind. – TigOldBitties

Antwort

0

zuerst, nicht versuchen, außer in einem großen Block, nur an einem kleinen Ort verwenden. wenn Sie Sie versuchen, außer Aussage kommentieren, wird dieser Fehler ausgelöst:

Traceback (most recent call last): 
    File "/home/li/PycharmProjects/tw/1.py", line 29, in <module> 
    result() 
    File "/home/li/PycharmProjects/tw/1.py", line 26, in result 
    writer.writerow([each.text, each.next_sibling]) 
TypeError: a bytes-like object is required, not 'str' 

und diese Fehlermeldung ist klar, wenn es um die Datei zu schreiben, ist es ein bytes_like Objekt benötigen, und Sie können überprüfen, dass die Datei, die Sie geöffnet ist in ‚wb‘ -Modus, ‚b‘ Bytes Modus darstellen, so dass das Problem klar ist, nur den Modus in den Normalmodus ändern, die eine str_like Objekt erfordern:

with open('french.csv', 'w') as file: