2017-05-05 5 views
1

내가 BeautifulSoup로 다음과 같은 데이터를 구문 분석하는 데 성공했습니다아름다운 수프로 파싱하기. 스팬 태그 외부 찾기 문자열 (숫자)

<span class="price-currency">$</span>200.00</span>, <span class="j-original-price"> 
<span class="price-currency">$</span>1,000.00</span>, <span class="j-original-price"> 
<span class="price-currency">$</span>1,300.00</span>, <span class="j-original-price"> 
<span class="price-currency">$</span>550.00 <span class="price-type price-type--negotiable">Negotiable</span></span>, <span class="j-original-price"> 
<span class="price-currency">$</span>450.00 <span class="price-type price-type--negotiable">Negotiable</span></span>, <span class="j-original-price"> 
<span class="price-currency">$</span>50.00 <span class="price-type price-type--negotiable">Negotiable</span></span>, <span class="j-original-price"> 

가 지금은 각 라인의 중간에 숫자를 구문 분석 할 필요가있다. nextSibling을 사용할 것이라고 생각했지만 실패했습니다. 일부 숫자 뒤에는 닫기 범위 태그가오고 일부 숫자 뒤에는 열린 범위 태그가옵니다.

이 숫자를 beautifulsoup와 (과) 어떻게 구문 분석합니까? 이것은 내가 위의 데이터를 가지고하는 방법입니다

span = soup("span", { "class" : "price-currency" }) 

감사를

답변

0

데이터가 귀하가 제시 한 것과 정확히 동일하다면,

In [1]: from bs4 import BeautifulSoup 

In [2]: data = """ 
    ...: <span class="price-currency">$</span>200.00</span>, <span class="j-original-price"> 
    ...: <span class="price-currency">$</span>1,000.00</span>, <span class="j-original-price"> 
    ...: <span class="price-currency">$</span>1,300.00</span>, <span class="j-original-price"> 
    ...: <span class="price-currency">$</span>550.00 <span class="price-type price-type--negotiable">N 
    ...: egotiable</span></span>, <span class="j-original-price"> 
    ...: <span class="price-currency">$</span>450.00 <span class="price-type price-type--negotiable">N 
    ...: egotiable</span></span>, <span class="j-original-price"> 
    ...: <span class="price-currency">$</span>50.00 <span class="price-type price-type--negotiable">Ne 
    ...: gotiable</span></span>, <span class="j-original-price"> 
    ...: """ 

In [3]: soup = BeautifulSoup(data, "html.parser") 

In [4]: for item in soup("span", {"class": "price-currency"}): 
    ...:  print(item.next_sibling) 
    ...:  
200.00 
1,000.00 
1,300.00 
550.00 
450.00 
50.00 
+0

저 역시 저에게 효과적이었습니다. 감사합니다 !! 저는 어리석게도 반복하지 않고 조금씩 next_sibling을 사용하는 것과 혼동했습니다. –

0

데이터를 통해 반복 시도하고 soup

[s.extract() for s in soup("span", {"class":"price-currency"})] 

에서 .price-currency 태그를 추출한 다음에서 필요한 통화 값을 가져 오기 :

list_price = soup("span", {"class":"j-original-price"}) 
print [pr.text for pr in list_price]