python
  • scrapy
  • scrapy-spider
  • 2017-05-09 83 views 0 likes 
    0

    我有一個項目,我需要在html代碼中獲取腳本。Python Scrapy獲取HTML <script>標籤

     <script> 
         (function() { 
         .../More Code 
         Level.grade = "2"; 
    
         Level.level = "1"; 
    
         Level.max_line = "5"; 
    
         Level.cozum = 'adım 12\ndön sağ\nadım 13\ndön sol\nadım 11'; 
    .../More Code 
    </script> 
    

    我如何獲得唯一的 「ADIM 12 \ NDON SAG \納迪姆13 \ NDON溶膠\納迪姆11」 這個代碼?

    感謝幫助

    +1

    也許能beautifulsoup HTML解析器 – budge

    回答

    0

    使用正則表達式來做到這一點

    首先搶到就是SCRIPT標籤像

    response.css("script").extract_first() 
    

    然後內容使用正則表達式

    (Level\.cozum =)(.*?)(\;) 
    

    觀看演示這裏https://regex101.com/r/YxHRmR/1

    這是代碼

    import re 
    regex = r"(Level\.cozum =)(.*?)(\;)" 
    
    test_str = ("<script>\n" 
        "  (function() {\n" 
        "  .../More Code\n" 
        "  Level.grade = \"2\";\n\n" 
        "  Level.level = \"1\";\n\n" 
        "  Level.max_line = \"5\";\n\n" 
        "  Level.cozum = 'adım 12\\ndön sağ\\nadım 13\\ndön sol\\nadım 11'; \n" 
        ".../More Code\n" 
        "</script>") 
    
    matches = re.findall(regex, test_str, re.MULTILINE) 
    
    print(matches) 
    
    +0

    做到這一點關於你的正則表達式,爲什麼不'級\ .cozum = '(*?)';'? OP顯然只想要那裏的變量的值,那麼爲什麼3個捕獲組呢? – Granitosaurus

    相關問題