2016-11-14 49 views
0

我粘貼了一些HTML數據。這不是整個頁面。還有很多其他divs等等,以及我不需要的東西。下面是這個例子中最相關的部分。用美麗的湯解析這個數據

<div class="prox_sub22"><a onclick="return srpVehicleNameGAEvent();" 
    data-bind="attr:{href:VehicleDetailUrl, id: GetVehicleTitleId()}, html:AN.DSF.Data.SearchObjects.GetShortenVehicleName(Year+' '+Make+' '+Model+' '+StyleName)" 
    href="/new/2016/ford/expedition-el/king ranch/1FMJK1JTXGEF06926" 
    id="Vehicle_Title_0">2016 Ford Expedition EL 4WD 4d...</a> 
</div> 
<div class="prod_vin txt11"><span data-bind="attr:{ id: GetVinLabelId()}" 
    id="VIN_Label_0">VIN:</span> 
    <span data-bind="attr:{ id: GetVehicleVinId()}, text:Vin" 
    id="Vehicle_Vin_0">1FMJK1JTXGEF06926</span> 
</div> 
<div class="prox_sub22"><a onclick="return srpVehicleNameGAEvent();" 
    data-bind="attr:{href:VehicleDetailUrl, id: GetVehicleTitleId()}, html:AN.DSF.Data.SearchObjects.GetShortenVehicleName(Year+' '+Make+' '+Model+' '+StyleName)" 
    href="/new/2017/ford/super-duty-f--250-srw/xl/1FT7W2BT3HEC24765" 
    id="Vehicle_Title_1">2017 Ford Super Duty F-250 SRW...</a> 
</div> 
<div class="prod_vin txt11"><span data-bind="attr:{ id: GetVinLabelId()}" 
    id="VIN_Label_1">VIN:</span> 
    <span data-bind="attr:{ id: GetVehicleVinId()}, text:Vin" 
    id="Vehicle_Vin_1">1FT7W2BT3HEC24765</span> 
</div> 

我只粘貼HTML文件的一小部分以供參考......頁面上有72個(包含0個)這些內容。我正在嘗試遍歷此頁面並獲取頁面上的所有Vehicle_Vin。

這裏是我的代碼

soup = BeautifulSoup(f,"html.parser") 
    stock = soup.find_all("div", attrs={"class" : "prod_vin txt11"}) 


    for j in range(0,72): 

     vinlist = [] 

     for subvins in stock: 
      vins = subvins.find_all("span", attrs={"id" : "Vehicle_Vin_{}".format(j)}) 
     for vin in vins: 
      vinlist.append(vin.string) 
     print(j,vinlist) 

所以,問題是,我不斷收到一個空列表時,這個貫穿我似乎無法找出原因。

任何意見是非常感謝。

+0

你可能會看到這個帖子http://stackoverflow.com/questions/6396655/parsing-html-using-beautifulsoup-in-python –

+0

我想有一個缺少縮進行 - >對於vin vin: vinlist.append(vin.string)。這個for循環應該放在外循環中。 –

+0

謝謝你的收穫。你是對的,我應該把它放在循環外部。但是,爲什麼每個新的VIN都不添加到我創建的列表中?最後,我應該有一個列表,其中有72個項目,但我最終只有一個列表中有1項? – enderwigg

回答

0
doc = """ 
<div class="prox_sub22"><a onclick="return srpVehicleNameGAEvent();" data-bind="attr:{href:VehicleDetailUrl, id: GetVehicleTitleId()}, html:AN.DSF.Data.SearchObjects.GetShortenVehicleName(Year+' '+Make+' '+Model+' '+StyleName)" href="/new/2016/ford/expedition-el/king ranch/1FMJK1JTXGEF06926" id="Vehicle_Title_0">2016 Ford Expedition EL 4WD 4d...</a></div> 
    <div class="prod_vin txt11"><span data-bind="attr:{ id: GetVinLabelId()}" id="VIN_Label_0">VIN:</span> <span data-bind="attr:{ id: GetVehicleVinId()}, text:Vin" id="Vehicle_Vin_0">1FMJK1JTXGEF06926</span></div> 
    <div class="prox_sub22"><a onclick="return srpVehicleNameGAEvent();" data-bind="attr:{href:VehicleDetailUrl, id: GetVehicleTitleId()}, html:AN.DSF.Data.SearchObjects.GetShortenVehicleName(Year+' '+Make+' '+Model+' '+StyleName)" href="/new/2017/ford/super-duty-f--250-srw/xl/1FT7W2BT3HEC24765" id="Vehicle_Title_1">2017 Ford Super Duty F-250 SRW...</a></div> 
    <div class="prod_vin txt11"><span data-bind="attr:{ id: GetVinLabelId()}" id="VIN_Label_1">VIN:</span> <span data-bind="attr:{ id: GetVehicleVinId()}, text:Vin" id="Vehicle_Vin_1">1FT7W2BT3HEC24765</span></div> 
""" 

from bs4 import BeautifulSoup 
import re 
soup = BeautifulSoup(doc,'lxml') 

for i in soup.find_all(id=re.compile(r"Vehicle_Title_\d+")): 
    print(i.get('id'), i.get_text(), sep='\t\t') 

out_put:

Vehicle_Title_0  2016 Ford Expedition EL 4WD 4d... 
Vehicle_Title_1  2017 Ford Super Duty F-250 SRW... 
0

我現在,我需要把vinlist實現= []中的有效範圍內的Ĵ()循環的外部。

感謝大家的幫助!