2012-08-15 13 views
5

मैं ब्राउज़र में किसी लिंक पर क्लिक करते समय जावास्क्रिप्ट क्रिया के माध्यम से अनुरोध किए गए पृष्ठ के HTML को डाउनलोड करने का प्रयास कर रहा हूं। क्योंकि यह एक सामान्य यूआरएल है मैंने प्रथम पृष्ठ डाउनलोड कर सकते हैं:पायथन में एचटीएमएल डाउनलोड करें?

http://www.locationary.com/stats/hotzone.jsp?hz=1 

लेकिन अगर उस पृष्ठ संख्या (1 से 10) कर रहे हैं के नीचे के साथ लिंक कर रहे हैं। तो अगर आप एक पर क्लिक करें, यह जाता है, उदाहरण के लिए, पेज 2 के लिए:

http://www.locationary.com/stats/hotzone.jsp?ACTION_TOKEN=hotzone_jsp$JspView$NumericAction&inPageNumber=2 

जब मैं डाल दिया है कि मेरे कार्यक्रम में यूआरएल और एचटीएमएल डाउनलोड करने के लिए प्रयास करते हैं, यह मेरे पर एक अलग पेज के HTML देता है वेबसाइट और मुझे लगता है कि यह होम पेज है।

मैं इस यूआरएल का एचटीएमएल कैसे प्राप्त कर सकता हूं जो जावास्क्रिप्ट का उपयोग करता है और जब कोई विशिष्ट यूआरएल नहीं होता है?

धन्यवाद।

कोड:

import urllib 
import urllib2 
import cookielib 
import re 

URL = '' 

def load(url): 

    data = urllib.urlencode({"inUserName":"email", "inUserPass":"password"}) 
    jar = cookielib.FileCookieJar("cookies") 
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar)) 
    opener.addheaders.append(('User-agent', 'Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1')) 
    opener.addheaders.append(('Referer', 'http://www.locationary.com/')) 
    opener.addheaders.append(('Cookie','site_version=REGULAR')) 
    request = urllib2.Request("https://www.locationary.com/index.jsp?ACTION_TOKEN=tile_loginBar_jsp$JspView$LoginAction", data) 
    response = opener.open(request) 
    page = opener.open("https://www.locationary.com/index.jsp?ACTION_TOKEN=tile_loginBar_jsp$JspView$LoginAction").read() 

    h = response.info().headers 
    jsid = re.findall(r'Set-Cookie: (.*);', str(h[5])) 
    data = urllib.urlencode({"inUserName":"email", "inUserPass":"password"}) 
    jar = cookielib.FileCookieJar("cookies") 
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar)) 
    opener.addheaders.append(('User-agent', 'Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1')) 
    opener.addheaders.append(('Referer', 'http://www.locationary.com/')) 
    opener.addheaders.append(('Cookie','site_version=REGULAR; ' + str(jsid[0]))) 
    request = urllib2.Request("https://www.locationary.com/index.jsp?ACTION_TOKEN=tile_loginBar_jsp$JspView$LoginAction", data) 
    response = opener.open(request) 
    page = opener.open(url).read() 
    print page 

load(URL) 

उत्तर

1

selenium webdriver सेलेनियम उपकरण सूट से मानक ब्राउज़रों का उपयोग करता है (यह मुख्य लक्ष्य वेब अनुप्रयोगों के लिए परीक्षण स्वचालन है), HTML पुनः प्राप्त करने के, तो यह अच्छी तरह से जावास्क्रिप्ट युक्त आवेदन पत्र को खत्म करने के लिए अनुकूल है । यह अच्छा पायथन बाइंडिंग है।

मैं सभी एजेक्स सामान निकाल दिए जाने के बाद पेज स्रोत को पकड़ने के लिए सेलेनियम का उपयोग करता हूं और BeautifulSoup (सुंदर सूप को विकृत HTML के साथ अच्छी तरह से कॉपी करता है) के साथ इसका विश्लेषण करता हूं।

संबंधित मुद्दे