Python Scrapy Получите HTML тег ‹script›

У меня есть проект, и мне нужен скрипт получения в html-коде.

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

Как я могу получить только этот код "adım 12 \ ndön sağ \ nadım 13 \ ndön sol \ nadım 11"?

Спасибо за помощь


person CezmiChef    schedule 09.05.2017    source источник
comment
Возможно, это удастся сделать с помощью парсера beautifulsoup html   -  person mbudge    schedule 09.05.2017


Ответы (1)


Используйте для этого Regex

Сначала возьмите содержимое этого тега 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)
person Umair Ayub    schedule 09.05.2017
comment
Что касается вашего регулярного выражения, почему бы не просто Level\.cozum = '(.*?)';? OP явно хочет, чтобы там было только значение переменной, так зачем 3 группы захвата? - person Granitosaurus; 09.05.2017