如何抓取实时/实时流数据网站?

时间:2018-08-22 15:19:36

标签: python web-scraping

我试图从此网页上抓取纬度,经度,速度和海拔 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

我想进一步使用此值。

有人知道有关此方法或任何其他获取当前值的方法吗?

2 个答案:

答案 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