Не верный результат при парсинге html страницы при помощи lxml

Имеется код на Python, который парсит страницу https://wordpress.org/plugins/. В коде используется фреймворк BeautifulSoup в связке с парсером lxml. Страница имеет 4 блока по 4 плагина. Результат парсинга получается следующий - первый блок парсится с плагинами, которых нет на этой странице, остальные блоки парсятся корректно. Первый блок со временем может иметь разные результаты парсинга.

При этом, если вместо lxml указать парсер html.parser, то страница распарсится корректно.

Вот код:

import requests
from bs4 import BeautifulSoup

def get_data(url):
    soup = BeautifulSoup(requests.get(url).text, 'lxml')
    sections = soup.find_all('section')
    for section in sections:
        header = section.find('h2', class_="section-title").text
        print(header)
        for plugin in section.find_all('article'):
            name = plugin.find('h3').find('a').text
            print('\t', name)

def main():
    url = 'https://wordpress.org/plugins/'
    get_data(url)
 
if __name__ == '__main__':
    main()
 

А вот результат выполнения кода:

Block-Enabled Plugins
     Five Star Restaurant Reservations – WordPress Booking Plugin
     Gallery, Images, Slider in Robo Gallery
     Easy restaurant menu upload
     Smart Slider 3
Featured Plugins
     Classic Editor
     Akismet Spam Protection
     Jetpack – WP Security, Backup, Speed, & Growth
     Gutenberg
Beta Plugins
     Gutenberg
     Two-Factor
     Preferred Languages
     Application Passwords
Popular Plugins
     Contact Form 7
     Yoast SEO
     Classic Editor
     Elementor Website Builder

Парсер lxml работает не правильно, или я чего-то не так делаю?


Ответы (0 шт):