BeautifulSoup Python не захватывает все HTML в файле - PullRequest
0 голосов
/ 10 апреля 2020

, поэтому я использую BeautifulSoup в Python (bs4), и я пытаюсь извлечь информацию из веб-страницы. Для ссылки на веб-страницу, на которую я смотрю, используется расширенный поисковый движок, соответствующий HTML, который мне нужен:

<p class="viewing">
     Viewing: <strong>        
     1</strong> - <strong>       
     50</strong> of <strong>    
     11,204</strong> papers
</p>

После использования bs4 в Python я пытаюсь извлечь его, используя:

num_papers = soup.find_element_by_xpath('//*[@id="maincontent"]/div/div[1]/div/div[1]/p/strong[3]')

Где это Xpath значения 11,204 из HTML. Я использую синтаксический анализатор lxml, и большинство ответов в Stack указали, что это проблема синтаксического анализа, поэтому я посмотрел на html5lib, но это тоже не сработало. Для ясности, мой вывод дает type как NoneType, потому что он не может найти это. Я фактически распечатал суп для этой страницы и увидел, что соответствующий HTML даже не записан в супе, следовательно, NoneType. Я чувствую, что это парсер, но я не знаю, где я ошибаюсь.

1 Ответ

0 голосов
/ 10 апреля 2020
from bs4 import BeautifulSoup
html = """<p class="viewing">
     Viewing: <strong>        
     1</strong> - <strong>       
     50</strong> of <strong>    
     11,204</strong> papers
</p>
"""


soup = BeautifulSoup(html, 'html.parser')


target = soup.find("p", class_="viewing")

print(target.contents[-2].get_text(strip=True))

Выход:

11,204

Или

target = soup.find("p", class_="viewing").find_all_next("strong")[2]

print(target.get_text(strip=True))

Выход:

11,204
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...