Невозможно l oop через строку навигации с помощью BeautifulSoup CSS Selector - PullRequest
0 голосов
/ 16 июня 2020

Я хотел бы извлечь содержимое внутри тега p ниже.

<section id="abstractSection" class="row">
<h3 class="h4">Abstract<span id="viewRefPH" class="pull-right hidden"></span>
</h3>
<p> Variation of the  (<span class="ScopusTermHighlight">EEG</span>), has functional and. behavioural effects in sensory <span class="ScopusTermHighlight">EEG</span We can interpret our. Individual <span class="ScopusTermHighlight">EEG</span> text to extract <span class="ScopusTermHighlight">EEG</span> power level.</p>
</section>

Одна строка Selenium, как показано ниже,

document_abstract = WebDriverWait(self.browser, 20).until(
    EC.visibility_of_element_located((By.XPATH, '//*[@id="abstractSection"]/p'))).text

может легко извлечь содержимое тега p и получить следующий результат:

Variation of the EEG, has functional and. behavioural effects in sensoryEEG. We can interpret our. Individual EEG text to extract EEG power level.

Тем не менее, я хотел бы использовать BeautifulSoup из-за соображений скорости.

после bs путем обращения к селектору css (т.е. #abstractSection) был протестирован

url = r'scopus_offilne_specific_page.html'
with open(url, 'r', encoding='utf-8') as f:
    page_soup = soup(f, 'html.parser')
    home=page_soup.select_one('#abstractSection').next_sibling
    for item in home:
        for a in item.find_all("p"):
            print(a.get_text())

Однако компилятор вернул следующую ошибку:

AttributeError: Объект 'str' не имеет атрибута 'find_all'

Кроме того, поскольку Scopus требует идентификатора входа, указанная выше проблема может быть воспроизведена с помощью автономного html, доступного через это ссылка .

Могу ли я узнать, где я сделал не так, благодарю за любую информацию

1 Ответ

0 голосов
/ 16 июня 2020

Благодаря этому OP проблема, указанная выше, по-видимому, может быть решена просто, как показано ниже

document_abstract=page_soup.select('#abstractSection > p')[0].text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...