2015-09-17 16 views
6

Tôi đang sử dụng mô-đun splinter 0.7.3 trong python 2.7.2 trên nền tảng Linux để xóa danh sách thư mục trên trang web bằng trình duyệt Firefox mặc định.Splinter lưu html vô thể

Đây là đoạn mã lặp qua danh sách web được phân trang bằng cách nhấp vào liên kết 'Tiếp theo' trong 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 

Tôi biết rằng các liên kết đang làm việc, như tôi nhìn thấy đầu ra trông như thế này:

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: [] 

Khi html được lưu tại mỗi trang sử dụng f.write(browser.html.encode('utf-8')) nó hoạt động tốt cho trang đầu tiên. Trên các trang tiếp theo, mặc dù tôi có thể xem các trang kết xuất trong Firefox, một trong hai tập tin html/regiser_...html rỗng hoặc thẻ nội dung là mất tích như thế này:

<!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> 

Đây có phải là một tính năng nổi tiếng tiết kiệm html từ ly khai? Có cách nào tốt hơn để làm điều đó không?

+0

Tôi vừa thử nâng cấp bản Mint Mint của mình ion của Firefox từ 7.0.1 đến 20.0. Vấn đề vẫn còn tồn tại. – ChrisGuest

Trả lời

3

Nó thực sự trông giống như vấn đề về thời gian - bạn đang nhận được nguồn trang khi trang không được tải đầy đủ. Có một số cách để giải quyết vấn đề này:

  • chờ đợi cho bodyto be present:

    browser.is_element_present_by_tag("body", wait_time=5) 
    
  • tăng page load timeout - đặt quyền này sau khi bạn khởi động đối tượng browser:

    browser.driver.set_page_load_timeout(10) # 10 seconds 
    
+0

Chỉ muốn xác nhận rằng bạn đã nhận được Tiền thưởng. Tôi đang đi nghỉ và làm điều này thông qua điện thoại của tôi. – ChrisGuest

+0

@ChrisGuest cảm ơn, đã nhận được tiền thưởng. Hy vọng câu trả lời đã giúp. – alecxe

Các vấn đề liên quan