• Какую регулярку использовать?

    @Tinezar Автор вопроса
    Сергей П, Что вы имеете ввиду?
    Написано
  • Какую регулярку использовать?

    @Tinezar Автор вопроса
    Сергей П, я прочитал Ваш комментарий полностью. Просто перепробовал уже варианты с селекторами, я думаю есть способы не использовать регулярки, но сроки поджимают и нужно рабочее решение. Ниже привел код разбора внутренней страницы.
    Сразу поясню на входе функция принимает ссылку, параметр доступна или нет страница без лицензии и третий параметр это шаблон. Я буду только рад комментариям, если это поможет оптимизировать, ну и просто правильнее сделать)

    def inner_page(link, license_check, sample):
        inner_r = requests.get(link, headers=headers, timeout=7)
    
    
        try:
            inner_r = requests.get(link, headers=headers, timeout=7)
            if inner_r.status_code == 200:
                inner_r.encoding = 'utf8'
                inner_soup = BeautifulSoup(inner_r.text, 'html.parser')
                list_content = []
                page_content = inner_soup.find('div', class_='single_entry')
                try:
                    check_inner_page = page_content.find('div', 'news-hide')
                    sting_page = check_inner_page.find_all('p')
                    for i in sting_page:
                        list_content.append(str(i))
    
                    st = ''.join(list_content)
                    data_body = f'<![CDATA[{st}]]>'
                except:
                    sting_page = page_content.find_all('p')
                    for i in sting_page:
                        try:
                            img = i.find('img').attrs['data-src']
                            i = f'<p><img src="{img}"></p>'
                            list_content.append(str(i))
                        except:
                            pattern = '<p><a.*?</a></p>'
                            if re.match(pattern, str(i)) is not None:
                                list_content.append('<p></p>')
                            else:
                                list_content.append(str(i))
                    st = ''.join(list_content)
                    data_body = f'<![CDATA[{st}]]>'
                return data_body
    
            else:
                return 'Недоступно'
        except requests.ConnectionError:
            return 'Недоступно'


    В комментариях предложили регулярку и это оказалось рабочее решение.
    Написано
  • Какую регулярку использовать?

    @Tinezar Автор вопроса
    WbICHA, Спасибо большое, кажется сработало, единственное убрал > посе "a"
    <p><a.*?</a></p>
    там же идет href, поэтому вначале не срабатывало.
    Написано
  • Какую регулярку использовать?

    @Tinezar Автор вопроса
    WbICHA, Это не затронет строчки
    <p>текст<a>ссылка</a></p>
    Написано
  • Какую регулярку использовать?

    @Tinezar Автор вопроса
    Перебрал базовые варианты, ссылки самые обычные, у них нет отличий от простых ссылок в тексте, а проходить по дом дереву не получается, потому что слишком много исключений. Вот некоторые примеры, которые встретились и на памяти. Я не знаю почему так вышло, скорее всего ошибки при наполнении.

    <p>Текст</p>
    <p>Текст</p>
    <p>Текст</p>
    <p><a>Ссылка</a></p>
    <p><a>Ссылка</a></p>


    <p>Текст</p>
    <p>Текст</p>
    <p>Текст</p>
    <p><a>Ссылка</a></p>


    <p>Текст</p>
    <p>Текст</p>
    <p>Текст</p>


    <p>Текст</p>
    <p>Текст</p>
    <p>Текст</p>
    <p><a>Ссылка</a></p>
    <p><a>Ссылка</a></p>
    <p>&nbsp;</p>
    Написано
  • Какую регулярку использовать?

    @Tinezar Автор вопроса
    Malmind, Нет мне нужно убрать эти ссылки совсем, либо на пустые строчки, либо удалить.
    Написано
  • Какую регулярку использовать?

    @Tinezar Автор вопроса
    WbICHA,

    Я их описал, варианты могут быть такие
    <p>Текст</p>
    <p>Текст</p>
    <p>Текст</p>
    <p><a>Ссылка</a></p>
    <p><a>Ссылка</a></p>

    <p>Текст</p>
    <p>Текст</p>
    <p>Текст</p>
    <p><a>Ссылка</a></p>

    <p>Текст</p>
    <p>Текст</p>
    <p>Текст</p>

    <p>Текст</p>
    <p>Текст</p>
    <p>Текст</p>
    <p><a>Ссылка</a></p>
    <p><a>Ссылка</a></p>
    <p>&nbsp;</p>


    Это те варианты которые мне постречались и после которых я понял что подсчетом не вариант, искать ссылки тоже не подходит, потому что просто в тексте ссылки надо оставить
    Написано