Красивый суп с использованием питона - PullRequest
0 голосов
/ 07 мая 2018

Я пишу скрипт для загрузки всех версий пакетов с сайта Ubuntu

Ниже приведен пример URL, который я использовал в своем коде

https://lists.ubuntu.com/archives/ubuntu-security-announce/2018-April/004359.html

Вот мой код

#!/usr/bin/python

import re,sys,shutil,requests,bs4

def main():
    a = []
    b = []
    c = []
    url = raw_input("Please enter url\n")
    res = requests.get(url)
    soup = bs4.BeautifulSoup(res.text, 'html.parser')
    test = soup.find('pre')
    test_text = str(test.text.encode('ascii','replace')).replace("?"," ")
    result = test_text[test_text.find("package versions:"):test_text.find("References:")]
    versions=re.findall(r'Ubuntu.*', result)
    for i in range(len(versions)):
        if (i+1 < len(versions)):
            a.append(re.sub(' +', ' ',test_text[test_text.find(versions[i]):test_text.find(versions[i+1])]))
        else:
            a.append(re.sub(' +', ' ',test_text[test_text.find(versions[len(versions)-1]):test_text.find("References:")]))
    print a        



if __name__ == "__main__":
    main()

Я хочу выводить способом, то есть, если существует несколько версий пакетов с одинаковыми пакетами, их можно объединить вместе и хранить в отдельной коллекции по отношению к версии ОС Ubuntu, т.е. Ubuntu 17.10 или Ubuntu 16.04 LTS или Ubuntu 14.04 LTS в зависимости от на консультативном содержании

Например, мне нужен вывод в следующем формате:

Ubuntu 14.04 LTS:
  (libruby1.9.1|ruby1.9.1|ruby1.9.3) => 1.9.3.484-2ubuntu1.11


  (libruby2.0|ruby2.0)       =>         2.0.0.484-1ubuntu2.9

Мой текущий вывод

[
'Ubuntu 17.10:\n libruby2.3 2.3.3-1ubuntu1.5\n ruby2.3 2.3.3-1ubuntu1.5\n\n',
'Ubuntu 16.04 LTS:\n libruby2.3 2.3.1-2~16.04.9\n ruby2.3 2.3.1-2~16.04.9\n\n',
'Ubuntu 14.04 LTS:\n libruby1.9.1 1.9.3.484-2ubuntu1.11\n libruby2.0 2.0.0.484-1ubuntu2.9\n ruby1.9.1 1.9.3.484-2ubuntu1.11\n ruby1.9.3 1.9.3.484-2ubuntu1.11\n ruby2.0 2.0.0.484-1ubuntu2.9\n\nIn general, a standard system update will make all the necessary\nchanges.\n\n'
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...