2016-04-05 9 views
2

Ich versuche, einen schnellen Schaber für eine beliebte Auto-Website zu bauen. Ich kann Ergebnisse für ein Auto zurückbekommen, aber ich kann nicht herausfinden, wie man alle Autos auf der Seite zurückbringt. findAll() wirft einen Fehler auf. Jede Hilfe wäre willkommenIterieren durch Seitenelemente beautifulsoup

from bs4 import BeautifulSoup 
import requests 

#search = input('Enter car to search: ') 
url = 'https://www.donedeal.ie/cars?words=bmw' #+ search 
site = requests.get(url) 
page = site.content 
soup = BeautifulSoup(page, 'html.parser') 
print("URL: ", site.url) 

if site.status_code == 200: 
    print("HTTP Status: ", site.status_code, "\n") 
else: 
    print("Bad HTTP response", "\n") 

cars = soup.find('div', attrs={'class': 'top-info'}) 
county = soup.find('span', attrs={'class': 'county-disp icon-pin'}) 
span = cars.find('span') 

for result in span: 
    for result2 in county: 
     print(result, "-", result2) 
+1

In Ihrem Beispiel wurde findAll() nicht verwendet. Außerdem: Welcher Fehler wird ausgelöst? – vds

+0

Im obigen Code sind keine Fehler enthalten, der Code gibt nur einen Wert zurück. –

Antwort

2

Ich bin nicht sicher, welche Informationen Sie extrahieren möchten. Vorausgesetzt, dass Sie den Fahrzeugtyp und den Landkreis Info wollen, findAll() arbeitet mit so etwas wie folgt aus:

>>> cars = soup.findAll('div', attrs={'class': 'top-info'}) 
>>> for car in cars: 
...  loc = car.find('span', attrs={'class': 'county-disp icon-pin'}) 
...  if loc: 
...   print('type:', car.text, 'location:', loc.text) 
...  else: 
...   print('type:', car.text) 
type: Bmw 320 CdTipperary location: Tipperary 
type: Bmw 520d MsportDonegal location: Donegal 
type: BMW2004 
type: BMW2010 
type: Bmw2010 
type: Bmw2000 
type: Bmw2001 
type: Bmw2004 
type: Bmw2004 
type: bmw2003 
type: BMW2009 
type: Bmw2010 
type: Bmw1990 
type: BMW2004 
type: BMW2012 
type: Bmw2000 
type: bmw2001 
type: BMW2004 
type: BMW2008 
type: BMW2005 
type: Bmw2006 
type: Bmw2002 
type: BMW2004 
type: Bmw2000 
type: BMW2003 
type: BMW2011 
type: BMW2001 
type: Bmw2000 
type: Bmw2002 
type: BMW2007 

beachten Sie, dass für eine Seite nur. Sie müssen die anderen Seiten URLs tun.