2016-10-12 5 views
0

이 구조가 있습니다. 스팬 태그가있는 BeautifulSoup을 사용하여 특정 데이터 추출

내 목표

<div id="one" class="tab-pane active"> 
 
<div class="item-content"> 
 
    <a href="/mobilni-uredjaji.4403.html"> 
 
     <div class="item-primary"> 
 
       <div class="sticker-small"> 
 
         <span class=""></span> 
 
        </div> 
 
        <div class="sticker-small-lte"> 
 
         <span class="lte"></span> 
 
        </div> 
 

 
       <div class="item-photo"> 
 
          <img src="/upload/images/thumbs/devices/SAMG935F/SAMG935F_image001_220x230.png" alt="Samsung Galaxy S7 edge"> 
 
       </div> 
 

 

 
       <div class="item-labels"> 
 
        <span class="item-manufacturer">Samsung</span> 
 
        <span class="item-title">Galaxy S7 edge</span> 
 
       </div> 
 
     </div> 
 

 
     <div class="item-secondary"> 
 
       <span class="item-price">94.000<span class="currency">currency!</span></span> 
 
       <span class="item-package"> uz! Sigurica 1500</span> 
 
       <span class="item-installments">na! 24 rate_po!</span> 
 
       <span class="value">100 currency!</span> 
 
       <span class="item-available">device_is_available_on_webshop_list!</span> 
 
     </div> 
 

 
    </a> 
 
</div> 
 
<div class="item-content"> 
 
    <a href="/mobilni-uredjaji.4403.html"> 
 
     <div class="item-primary"> 
 
       <div class="sticker-small"> 
 
         <span class=""></span> 
 
        </div> 
 
        <div class="sticker-small-lte"> 
 
         <span class="lte"></span> 
 
        </div> 
 

 
       <div class="item-photo"> 
 
          <img src="/upload/images/thumbs/devices/SAMG935F/SAMG935F_image001_220x230.png" alt="Samsung Galaxy S7 edge"> 
 
       </div> 
 

 

 
       <div class="item-labels"> 
 
        <span class="item-manufacturer">Samsung</span> 
 
        <span class="item-title">Galaxy S7 edge</span> 
 
       </div> 
 
     </div> 
 

 
     <div class="item-secondary"> 
 
       <span class="item-price">94.000<span class="currency">currency!</span></span> 
 
       <span class="item-package"> uz! Sigurica 1500</span> 
 
       <span class="item-installments">na! 24 rate_po!</span> 
 
       <span class="value">100 currency!</span> 
 
       <span class="item-available">device_is_available_on_webshop_list!</span> 
 
     </div> 
 

 
    </a> 
 
</div> 
 
    
 
-----same structure ---- 
 
    
 
</div>
클래스와 사업부입니다 = 해당 데이터 "항목-라벨"

  • 삼성
  • 갤럭시 S7의 가장자리

및 사업부 스팬 ta 아래의 데이터로 클래스 "item-secondary" class = "item-price", 94.000 인 g.

내가 정확히로 내 출력을 필요

  • 삼성
  • 갤럭시 S7 가장자리
  • 94,000

지금까지 내가 아래에 가격없이 처음 두 데이터를 얻고이 코드 스팬. 나는 꽤 오랫동안 긁적 거리지 않았기 때문에 나는 여기에서 다소 붙어있다. 힌트를주세요. 코드는 다음과 같습니다

from bs4 import BeautifulSoup 
 
import re 
 
import pymysql 
 
import MySQLdb 
 
import urllib 
 

 
#rl = "http://www.vipmobile.rs/mobilni-uredjaji.2631.html#tarifgroup-1|devicetype-1|minprice-0|maxprice-124800|brand-0|model-0" 
 
url = "file:///C:/Users/zika/Desktop/one.html" 
 

 

 

 
html = urllib.urlopen(url) 
 
page = html.read() 
 
#print(page) 
 
# db = MySQLdb.connect(host = 'localhost', 
 
        # user = 'root', 
 
        # passwd = '123456', 
 
        # db = 'lyrics') 
 
soup = BeautifulSoup(page, 'html.parser') 
 

 
#mobData = soup.find("div", {"class": "bxslider items"}).find_all("div", {"class": "item-content"}) 
 
#for mobMan in soup.find("div", {"class": "tab-pane active"}).findAll("span") 
 

 
labelData = soup.find("div", {"class": "tab-pane active"}).find_all("div", {"class": "item-content"}) 
 
labelPrice = soup.find("div", {"class": "tab-pane active"}).find_all("span", class_="item-price") 
 

 
    
 
for label in labelData: 
 
print(label.contents[1].find("div", {"class": "item-labels"}).getText()) 
 
\t 
 
for price in labelPrice: 
 
    print(price.getText()) 
 

 

 
\t 
 
\t 
 
\t 
 

 

 
    
 
    \t 
 

 
    
 

 

 

 

 

 

 
\t \t 
 
\t \t 
 
\t \t 
 

 
input("\n\nPress the enter key to exit!") \t \t

답변

1

당신은 그것을 시도 할 수 :

from bs4 import BeautifulSoup 

soup = BeautifulSoup(source, "html.parser") 
div1 = soup.find("div", { "class" : "item-labels" }).findAll('span', { "class" : "item-manufacturer" }) 
div2 = soup.find("div", { "class" : "item-labels" }).findAll('span', { "class" : "item-title" }) 
div3 = soup.find("div", { "class" : "item-secondary" }).findAll('span', { "class" : "item-price" }) 
for i,j,k in zip(div1,div2,div3): 
    print i.text 
    print j.text 
    print k.text.replace("currency!",'') 

참고 : 난 당신이 게시물에 제공하는 구조를 사용하는 위의 코드에서 source있다.

Samsung 
Galaxy S7 edge 
94.000 
+0

이이 범위에 대한 좋은 힌트 :

다음과 같은 출력을 제공 할 것입니다. 감사합니다 @ 코더 – Miki

관련 문제