2016-04-05 3 views
2

Я пытаюсь построить быстрый скребок для популярного автомобильного сайта. Я могу вернуть результаты для одного автомобиля, но я не могу понять, как вернуть все автомобили на странице. findAll() вызывает ошибку. Любая помощь была бы оцененаИтерация через элементы страницы 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

В вашем примере нет findAll(). Также: какая ошибка вызывается? – vds

+0

В коде не было ошибок, код возвращает только одно значение. –

ответ

2

Я не уверен, какую информацию вы хотите извлечь. Предполагая, что вы хотите, тип автомобиля и данные округа, findAll() работает с чем-то вроде этого:

>>> 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 

Обратите внимание, что для одной страницы только. Вам придется делать URL-адреса других страниц.

Смежные вопросы