2017-04-26 7 views
1

이 표에서 환율을 보여주는 데이터를 추출하고 싶습니다. 나는이 방법을 시도했지만 그것 이 테이블에서 데이터 가져 오기 html python

 table_id = driver.find_element(By.ID, 
    'data_configuration_feeds_ct_fields_body0') 
     rows = table_id.find_elements(By.TAG_NAME, "tr") # get all of the 
     rows in the table 
     for row in rows: 

     col = row.find_elements(By.TAG_NAME, "td")[1] #note: index start from 
     0, 1 is col 2 
     print(col.text) #prints text from the element 

작동하지 https://www.iceplc.com/travel-money/exchange-rates

방문은 HTML

</td> 

        <td valign="top" class="OuterProdCell test"> 

           <table class="ProductCell"> 
            <tr> 
            <td class="rateCountryFlag"> 
             <ul id="prodImages"> 
              <li> 
               <a href="/travel-money/buy-chilean-peso" title="Buy Chilean Peso" class="flags chilean-peso" ></a> 
              </li> 
             </ul> 
            </td> 

            <td class="ratesName"> 
            <a href="/travel-money/buy-chilean-peso" title="Buy Chilean Peso"> 
            Chilean Peso</a> 
            </td> 

            <td class="ratesClass"> 
            <a class="orderText" href="/travel-money/buy-chilean-peso" title="Buy Chilean Peso">774.8540</a> 
            </td> 
            <td class="orderNow">           
             <ul id="prodImages"> 
              <li> 
               <a class="reserveNow" href="/travel-money/buy-chilean-peso" title="Buy Chilean Peso">Order<br/>now</a> 
              </li> 
              <li> 
               <a href="/travel-money/buy-chilean-peso" title="Buy Chilean Peso" class="flags arrowGreen" ></a> 
              </li> 
             </ul> 
            </td> 
            </tr> 
           </table> 
입니다

나는 또한 파이썬 셀레늄 접근 방식을 시도했다 그러나 나는를 얻을 수 있습니다 각자의 환율 (이름은 제외)

   driver.get("https://www.iceplc.com/travel-money/exchange- 
      rates") 
      rates = driver.find_elements_by_class_name("ratesClass") 

      for rate in rates: 
      print(rate.text) 
+0

이름 : 당신이 find_element_by_tag_namefind_element_by_class_name

(여기 http://selenium-python.readthedocs.io/locating-elements.html 문서)

driver.get("https://www.iceplc.com/travel-money/exchange-rates") rates=driver.find_elements_by_tag_name('tr') for i in rates: print i.find_element_by_class_name('ratesName').text, i.find_element_by_class_name('ratesClass').text 

출력은을 사용하여 관심있는 두 가지 요소를 추출 각 행에 대해

? 예상되는 결과는 무엇입니까? –

+0

출력 1.146 – xys234

+0

이 형식으로 전체 테이블을 출력하는 의미입니다. – xys234

답변

1

환율을 받으려고한다면 API를 사용하는 것이 더 낫습니다 (this question 참조). 웹 스크래핑으로 대상 웹 페이지의 코드가 변경 될 수 있습니다.

근근이 살아가는 것이 목표 인 경우 셀렌 접근 방식을 다시 사용하면서 "ratesName"클래스를 검색하면됩니다. 예를 들어

:

driver.get("https://www.iceplc.com/travel-money/exchange-rates") 
rates.append((driver.find_elements_by_class_name("ratesName"), driver.find_elements_by_class_name("ratesClass"))) 

for rate in rates: 
print("Name: %s, Rate: %s" % (rate[0], rate[1])) 
1

당신이 행 단위로 분석 할 필요가 당신은 당신이 관심이 열 구성 요소를 선택해야 할 것이 분명하다 페이지의 구조를 분석하여.

US - Dollar 1.2536 
Croatia - Kuna 8.3997 
Canada - Dollar 1.7006 
Australia - Dollar 1.6647 
Euro - 1.1469 
...