2017-02-15 18 views
0

У меня есть html-страница на моем сайте продукта, я хочу проанализировать документ и получить версии продукта со страницы html.Parsing and greping html in ansible

HTML страница будет выглядеть следующим образом:

<html> 
....... 
....... 
<body> 
....... 
....... 
<div id='version_info'> 
    <div class="product-version"> 
     <div class="product-title">Name of the product 1:</div><div class="product-value">ver_123</div> 
    </div> 
    <div class="product-version"> 
     <div class="product-title">Name of the product 2:</div><div class="product-value">ver_456</div> 
    </div> 
    <div class="product-version"> 
     <div class="product-title">Name of the product 3:</div><div class="product-value">ver_845</div> 
    </div> 
    <div class="product-version"> 
     <div class="product-title">Name of the product 4:</div><div class="product-value">ver_146</div> 
    </div> 
</div> 
....... 
....... 
</body> 
....... 
....... 
</html> 

как я могу Grep документ и форма строк что-то вроде этого? productname1 = ver_123, productname2 = ver_456, productname3 = ver_845 и т.д.

+0

вам нужно ответить для этого конкретного формата HTML ли? Или это может быть иначе? –

+0

Было бы хорошо, если бы я получил ответ на этот HTML. Но если у вас есть аналогичный пример, это также будет очень полезно. –

+0

grepping xml/html, теперь у вас есть две проблемы. – tedder42

ответ

1

Я работал на этом конкретном HTML файл и в результате я получаю словарь необходимых переменных при переменной result

Примечание:

1. Пожалуйста, измените путь к файлу html в playbook.

2. Эта специальная игра для этого примера HTML. Для дальнейших требований и улучшений предоставляется HTML.

--- 
- hosts: localhost 
    name: "Getting varibles from HTML" 
    vars: 
    result: {} 
    tasks: 
    - name: "Getting content of the file" 
    command: cat /path/to/html/file 
    register: search 
    - name: "Creating dictionary while Looping over file" 
    ignore_errors: true 
    vars: 
    key: "{{item | replace('<div class=\"product-title\">','') | replace('</div>','') | regex_replace('<div.*','') | regex_replace('^\\s*','')}}" 
    value: "{{item | replace('<div class=\"product-title\">','') | replace('</div>','') | regex_replace('^[\\w\\s\\:]*','') | replace('<div class=\"product-value\">','') | regex_replace('\\s*$','')}}" 
    set_fact: 
    result: "{{ result | combine({ key: value }) }}" 
    when: "'product-title' in item" 
    with_items: "{{search.stdout_lines}}" 

    - name: "Getting register" 
    debug: 
    msg: "{{result}}" 
... 

ВЫВОД

ok: [localhost] => { 
    "msg": { 
     "Name of the product 1:": "ver_123", 
     "Name of the product 2:": "ver_456", 
     "Name of the product 3:": "ver_845", 
     "Name of the product 4:": "ver_146" 
    } 
} 
+1

Спасибо. Я проверю ваш код сегодня и дам вам знать :) –

+0

Добро пожаловать ..... :) –

+1

@SRNathan Я вижу, что прошло почти 7 месяцев с этого поста, но похоже, что Sahil решил вашу проблему; вы должны принять его. Если вы решили это самостоятельно и его ответ помог, подумайте о том, чтобы принять его и предоставить свое решение в качестве редактирования в вашем OP. –