我试图从此网页上抓取纬度,经度,速度和海拔 http://www.isstracker.com/
这是图片 https://i.stack.imgur.com/OousE.png
该网站的数据每1秒更新一次
import time
import requests
from bs4 import BeautifulSoup
l=[]
def get_data():
url='http://www.isstracker.com/'
r=requests.get(url,headers={'User-Agent':'Mozilla/5.0'})
c=r.content
soup=BeautifulSoup(c,'html.parser')
d={}
all=soup.find_all('div',{'id':'longitudeMarker'})
d['lon']=all[0].find('p',{'id':'longitudeValue'}).text
all=soup.find_all('div',{'id':'latitudeMarker'})
d['lan']=all[0].find('p',{'id':'latitudeValue'}).text
all=soup.find_all('div',{'id':'velocityMarker'})
d['speed']=all[0].find('p',{'id':'velocityValue'}).text
all=soup.find_all('div',{'id':'altitudeMarker'})
d['alt'] =all[0].find('p',{'id':'altitudeValue'}).text
l.append(d)
while True:
print(get_data())
time.sleep(1)
这总是返回
`None`
当我打印它们的值时,它总是显示
longitude:-000.000
latitude:-000.000
speed:17225.00
altitude:225.00
我想进一步使用此值。
有人知道有关此方法或任何其他获取当前值的方法吗?
答案 0 :(得分:0)
import time
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument("--headless")
driver = webdriver.Firefox(firefox_options=options, executable_path= r'pathto\geckodriver.exe')
driver.get("http://www.isstracker.com/")
d={}
while True:
d['lon']=driver.find_element_by_id('longitudeValue').text
d['lat']=driver.find_element_by_id('latitudeValue').text
d['speed']=driver.find_element_by_id('velocityValue').text
d['alt']=driver.find_element_by_id('altitudeValue').text
print(d)
time.sleep(1)
driver.quit()
您似乎在def中什么也不返回,python默认返回'None'。你应该有回报l? 我是一个学习者-所有错误都是我的。 此代码使用无头firefox从似乎是由javascript更新的网页获取信息。 我不知道在我控制C控制台的情况下是否执行driver.quit()。
答案 1 :(得分:0)
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless")
options.add_argument("--window-size=1920x1080")
driver = webdriver.Chrome(chrome_options=options, executable_path= r'pathtochrome\chromedriver.exe')
driver.get("http://www.isstracker.com/")
d={}
while True:
try:
d['lon']=driver.find_element_by_id('longitudeValue').text
d['lat']=driver.find_element_by_id('latitudeValue').text
d['speed']=driver.find_element_by_id('velocityValue').text
d['alt']=driver.find_element_by_id('altitudeValue').text
print(d)
time.sleep(1)
except KeyboardInterrupt:
#get out of while loop on control-c
driver.quit()
print('Exit program')
break
finally:
pass