2017-08-17 2 views
0

Je travaille sur mon projet personnel, où je veux stocker des stocks qui ont fait tout le temps haut et bas.Impossible d'extraire des données réelles de HTML/Javascript en utilisant Python

Site Web comme suit:

enter image description here

Lorsque j'ai essayé de chercher HTML, je me suis Javascripts, Jsons comme la page devient rendre postfaces.

J'obtenu HTML comme ceci:

function loadData(val){ 
    var url1 ; 
    if (val=='high'){ 
     url1 = '/products/dynaContent/equities/equities/json/online52NewHigh.json'; 
    }else{ 
     url1 = '/products/dynaContent/equities/equities/json/online52NewLow.json'; 
    } 
    $.get(url1, 
     function(data,curr){ 
      obj = eval('('+data+')');   

      maxPage= parseInt((obj.data.length)/ recordPerPage); 

      if (((obj.data.length)%recordPerPage)>0){ 
       maxPage++; 
      } 
      setData(0); 
     } 
    ); 
} 

Je ne suis pas sûr de savoir comment obtenir des données réelles, j'ai essayé sélénium, écharde, urllib2 mais ne pas travaillé dans mon cas.

code:

from selenium import webdriver 
from urllib2 import urlopen 
import urllib2,cookielib 

url = 'https://www.nseindia.com/products/content/equities/equities/eq_new_high_low.htm' 
file_name = 'C:/Users/ASUS/Desktop/test.txt' 


site= "https://www.nseindia.com/products/content/equities/equities/eq_new_high_low.htm" 
hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11', 
     'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
     'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 
     'Accept-Encoding': 'none', 
     'Accept-Language': 'en-US,en;q=0.8', 
     'Connection': 'keep-alive'} 

req = urllib2.Request(site, headers=hdr) 


conn = urlopen(req) 
data = conn.read() 
conn.close() 

file = open(file_name,'wt') 
file.write(data) 
file.close() 

browser = webdriver.Firefox() 
browser.get('file:///'+file_name) 
html = browser.page_source 
browser.quit() 

ai-je raté quelque chose? Existe-t-il un autre moyen d'obtenir des données javascript/json après le rendu?

Répondre

0

Lorsque vous avez navigable JSON, pourquoi mélangez-vous tant de choses? Votre chemin JSON est fixe, utilisez-le directement.

from urllib2 import urlopen 
import urllib2, cookielib 
import json 

url = "https://www.nseindia.com/products/dynaContent/equities/equities/json/online52NewHigh.json" 
hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11', 
     'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
     'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 
     'Accept-Encoding': 'none', 
     'Accept-Language': 'en-US,en;q=0.8', 
     'Connection': 'keep-alive'} 
req = urllib2.Request(url, headers=hdr) 

conn = urlopen(req) 
data = conn.read() 
conn.close() 

data_json = json.loads(data) 

print (data_json["data"][0]["symbol"])