Beautiful Soup 4 find_all не нашел ссылки, которые нашел Beautiful Soup 3

Я заметил очень раздражающую ошибку: BeautifulSoup4 (пакет: bs4 ) часто находит меньше тегов, чем предыдущая версия (пакет: BeautifulSoup ).

Вот воспроизводимый пример этой проблемы:

 import requests import bs4 import BeautifulSoup r = requests.get('http://wordpress.org/download/release-archive/') s4 = bs4.BeautifulSoup(r.text) s3 = BeautifulSoup.BeautifulSoup(r.text) print 'With BeautifulSoup 4 : {}'.format(len(s4.findAll('a'))) print 'With BeautifulSoup 3 : {}'.format(len(s3.findAll('a'))) 

Вывод:

 With BeautifulSoup 4 : 557 With BeautifulSoup 3 : 1701 

Разница не незначительна, как вы можете видеть.

Вот точные версии модулей, если кто-то задается вопросом:

 In [20]: bs4.__version__ Out[20]: '4.2.1' In [21]: BeautifulSoup.__version__ Out[21]: '3.2.1' 

  • как извлечь текст в теге font с помощью beautifulsoup
  • Python переадресовывает, а затем загружает страницу?
  • отправить запрос с использованием python на страницу asp.net
  • веб-соскабливание динамического содержимого с помощью python
  • Может ли соскабливаться на этой странице, которая активно пересчитывается?
  • Удалите несколько страниц с помощью BeautifulSoup и Python
  • Скремблирование и анализ результатов поиска Google с использованием Python
  • Как я могу визуализировать JavaScript HTML в HTML в python?
  • One Solution collect form web for “Beautiful Soup 4 find_all не нашел ссылки, которые нашел Beautiful Soup 3”

    У вас установлен lxml , что означает, что BeautifulSoup 4 будет использовать этот анализатор поверх стандартной html.parser -библиотеки.

    Вы можете обновить lxml до 3.2.1 (что для меня возвращает 1701 результат для вашей тестовой страницы); Сам lxml использует libxml2 и libxslt которые могут быть виноваты здесь. Возможно, вам придется обновить их вместо этого. См. Страницу требований lxml ; в настоящее время рекомендуется использовать libxml2 2.7.8 или новее.

    Или явно укажите другой парсер при разборе супа:

     s4 = bs4.BeautifulSoup(r.text, 'html.parser') 
    Interesting Posts

    Как включить сторонние библиотеки Python в Google App Engine?

    Pandas: преобразовать значения столбцов DataFrame в новые индексы и столбцы Dataframe

    error UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xff в позиции 0: недопустимый стартовый байт

    Загрузите файл по определенному пути, используя Selenium WebDriver

    Ожидаемые условия в транспортире

    Невозможно заставить MySQL-исходный запрос работать с использованием модуля mysqldb Python

    Контур / imshow график для нерегулярных данных XYZ

    help нужно написать регулярное выражение в необязательном состоянии

    Как принять keypress в командной строке python?

    Как использовать urllib для загрузки изображения из Интернета

    Простая реализация сходства N-Gram, tf-idf и косинуса в Python

    python записывает строку непосредственно в tarfile

    Строка, столбец, матрица Python

    Зачем нам нужен «окончательный» оператор в Python?

    Как я могу фильтровать символы Emoji из моего ввода, поэтому я могу сохранить в MySQL <5.5?

    Python - лучший язык программирования в мире.