2015-09-17 7 views
6

बचाता है मैं मॉड्यूल का उपयोग python 2.7.2 में लिनक्स प्लेटफॉर्म पर डिफ़ॉल्ट फ़ायरफ़ॉक्स ब्राउज़र का उपयोग कर वेबसाइट पर निर्देशिका सूची को स्क्रैप करने के लिए कर रहा हूं।स्प्लिंटर बॉडीलेस एचटीएमएल

यह कोड का स्निपेट है जो HTML में 'अगला' लिंक पर क्लिक करके पृष्ठांकित वेब प्रविष्टि के माध्यम से पुनरावृत्त करता है।

links = True 
    i = 0 
    while links: 
     with open('html/register_%03d.html' % i, 'w') as f: 
      f.write(browser.html.encode('utf-8')) 
     links = browser.find_link_by_text('Next') 
     print 'links:', links 
     if links: 
      links[0].click() 
     i += 1 

मुझे पता है कि लिंक, काम कर रहे हैं के रूप में मैं उत्पादन है कि इस तरह दिखता है देख रहा हूँ:

links: [<splinter.driver.webdriver.WebDriverElement object at 0x2e6da10>, <splinter.driver.webdriver.WebDriverElement object at 0x2e6d710>] 
links: [<splinter.driver.webdriver.WebDriverElement object at 0x2e6d5d0>, <splinter.driver.webdriver.WebDriverElement object at 0x2e6d950>] 
links: [<splinter.driver.webdriver.WebDriverElement object at 0x2e6d710>, <splinter.driver.webdriver.WebDriverElement object at 0x2e6dcd0>] 
links: [] 

जब एचटीएमएल f.write(browser.html.encode('utf-8')) का उपयोग कर प्रत्येक पृष्ठ पर सहेजा जाता है यह प्रथम पृष्ठ के लिए ठीक काम करता है। बाद के पृष्ठों पर, हालांकि मैं पृष्ठों Firefox में गाया देख सकते हैं, या तो html/regiser_...html फ़ाइल रिक्त है या शरीर टैग इस तरह याद आ रही है:

<!DOCTYPE html> 
<!--[if lt IE 7]>  <html prefix="og: http://ogp.me/ns#" class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en-gb"> <![endif]--> 
<!--[if IE 7]>   <html prefix="og: http://ogp.me/ns#" class="no-js lt-ie9 lt-ie8" lang="en-gb"> <![endif]--> 
<!--[if IE 8]>   <html prefix="og: http://ogp.me/ns#" class="no-js lt-ie9" lang="en-gb"> <![endif]--> 
<!--[if gt IE 8]><!--> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-gb" class="no-js" prefix="og: http://ogp.me/ns#"><!--<![endif]--><head> 
     <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible" />  
    ... 
    </style> 
    <script src="/media/com_magebridge/js/frototype.min.js" type="text/javascript"></script></head></html> 

इस खपच्ची से एचटीएमएल बचत का एक ज्ञात सुविधा है? इसे करने का कोई बेहतर तरीका है?

+0

मैंने अभी अपने मिंट लिसा के बनाम को अपग्रेड करने का प्रयास किया है फ़ायरफ़ॉक्स का आयन 7.0.1 से 20.0 तक। समस्या अभी भी बनी हुई है। – ChrisGuest

उत्तर

3

यह वास्तव में एक समय की समस्या जैसा दिखता है - जब पृष्ठ पूरी तरह से लोड नहीं होता है तो आपको पृष्ठ स्रोत मिल रहा है

browser.driver.set_page_load_timeout(10) # 10 seconds 
: -: body to be present के लिए

  • इंतजार: आप browser वस्तु को प्रारंभ करने के बाद यह सही डाल

    browser.is_element_present_by_tag("body", wait_time=5) 
    
  • page load timeout वृद्धि वहाँ मुद्दे से निपटने के कई तरीके हैं

+0

बस पुष्टि करना चाहते हैं कि आपको बाउंटी मिली है। मैं छुट्टी पर हूं और अपने फोन के माध्यम से ऐसा कर रहा हूं। – ChrisGuest

+0

@ChrisGuest धन्यवाद, बक्षीस मिला। उम्मीद है कि जवाब मदद की। – alecxe

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