2015-10-19 315 views
0

所以我試圖做一個程序,告訴用戶多遠,旅行者1號是從地球上,美國航空航天局有這方面的信息在他們的網站http://voyager.jpl.nasa.gov/where/index.html ... 我似乎無法管理在專區內獲得的信息,這裏的DIV:<div id="voy1_km">Distance goes here</div>使用BeautifulSoup的HTML抓取

我現在的程序如下:`

import requests 
from BeautifulSoup import BeautifulSoup 


url = "http://voyager.jpl.nasa.gov/where/index.html" 
response = requests.get(url) 
html = response.content 
soup = BeautifulSoup(html) 
test = soup.find('div', {'id' : 'voy1_km'}) 

print test 

所以長話短說,我如何獲得的股利內容?

+0

什麼是輸出?嘗試打印迴應HTML和湯,檢查它是否破的任何地方 – MohitC

+0

它只是輸出

...

+1

檢查來源,

什麼也沒有。改變的價值由JS – MohitC

回答

2

從網頁本身可以看到,距離不斷變化,實際上由Javascript驅動。你可能只是閱讀javascrip代碼,所以你甚至不需要颳去以獲得距離......(我討厭使用JavaScript的網站和你一樣:))

如果你真的想讓數字他們的網站。你可以使用Selenium。

# pip install selenium 
from selenium import webdriver 
import time 

driver = webdriver.Firefox() 
driver.get("http://voyager.jpl.nasa.gov/where/index.html") 
time.sleep(5) 
elem = driver.find_element_by_class_name("tr_dark") 
print elem.text 
driver.close() 

這裏是輸出:

Distance from Earth 
19,964,147,071 KM 
133.45208042 AU 

當然,請參考條款他們的網站&條件就到什麼水平,你可以刮他們的網站和分發數據。

+0

提供謝謝這工作,有沒有辦法從像ububtu服務器的操作系統運行這個?據我可以告訴它由於缺乏網絡瀏覽器而出現錯誤 –

+0

當然,請參閱[this](http://scraping.pro/use-headless-firefox-scraping-linux/)文章中有關如何設置無頭瀏覽器。 –

0

更大的問題是爲什麼即使打擾它。如果您深入瞭解Javascript file,您可以以非常簡單的方式重複計算:

import time 

epoch_0 = 1445270400 
epoch_1 = 1445356800 

dist_0_v1 = 19963672758.0152 
dist_1_v1 = 19966727483.2612 

current_time = time.time() 

current_dist_km_v1 = (((current_time - epoch_0)/(epoch_1 - epoch_0)) * (dist_1_v1 - dist_0_v1)) + dist_0_v1 

print("{:,.0f} KM".format(current_dist_km_v1))