2017-01-21 2 views
1

Я пытаюсь очистить данные о машине. Их теги «id» увеличиваются на 1, однако я просто не могу понять, как это сделать. Вот что у меня есть:Простой веб-скребок Python с красивым супом

import bs4 as bs 
import urllib 

source = urllib.request.urlopen('http://www.25thstauto.com/inventory.aspx?cursort=asc&pagesize=500').read() 
soup = bs.BeautifulSoup(source, 'lxml') 

#finds the total number of cars 
count = soup.find('span', {'id': 'ctl00_cphBody_inv1_lblVehicleCount'}).getText()[:2] 
count = int(count) 

i = 1 
for url in range(1,count): 
url = soup.find_all('a', {'id': 'ctl00_cphBody_inv1_rptInventoryNew_ctl0'+i+'_nlVehicleDetailsTitle'}) 
    print(url['href']) 
    i = i + 1 
+0

Я не знаю, почему этот вопрос ниспровергнут, я поддержал вас. –

ответ

1
import bs4 as bs 
import urllib 
import re 

source = urllib.request.urlopen('http://www.25thstauto.com/inventory.aspx?cursort=asc&pagesize=500').read() 
soup = bs.BeautifulSoup(source, 'lxml') 

for a in soup.find_all('a', id=re.compile('ctl00_cphBody_inv1_rptInventoryNew')): 
    print(a.get('href')) 

из:

2008_Chevrolet_Malibu_Easton_PA_265928462.veh 
2008_Chevrolet_Malibu_Easton_PA_265928462.veh 
2008_Chevrolet_Malibu_Easton_PA_265928462.veh 
2002_Nissan_Xterra_Easton_PA_266894015.veh 
2002_Nissan_Xterra_Easton_PA_266894015.veh 
2002_Nissan_Xterra_Easton_PA_266894015.veh 
2009_Chevrolet_Cobalt_Easton_PA_265621796.veh 
2009_Chevrolet_Cobalt_Easton_PA_265621796.veh 

Использование regex найти a тег которого id атрибут содержит ctl00_cphBody_inv1_rptInventoryNew

ИЛИ использовать CSS selector:

for a in soup.select('a[id*=ctl00_cphBody_inv1_rptInventoryNew]'): 
    print(a.get('href')) 

Идея такая же.

+1

вы бог среди крестьян в королевстве stackoverflow –

+0

@Sean Kelly игнорирует нижний план, я думаю, что есть кто-то, кто-то все вниз. Если у вас есть какие-либо вопросы, пожалуйста, пометьте «beautifulsoup», и я буду там для вас. –

+0

Спасибо, друг. Оставайтесь с нами, потому что у меня может быть больше! –