Home > front end >  Using beautifulsoup to scrape <h2>
Using beautifulsoup to scrape <h2>

Time:11-10

I'm trying to scrape the text of a specific 'h2', but I keep getting this error when i use .text or .get_text. what should i do?

import requests
from bs4 import BeautifulSoup
url = 'https://www.ocupacoes.com.br/cbo-mte/251205-economista'
reqs = requests.get(url)
soup = BeautifulSoup(reqs.text, 'lxml')
print(soup.find_all('h2')[1])

and i got this : <h2>Descrição Sumária</h2>

but i would like to receive this "Descrição Sumária

Analisam o ambiente econômico; elaboram e executam projetos de pesquisa econômica, de mercado e de viabilidade econômica, entre outros. participam do planejamento estratégico e de curto prazo e avaliam políticas de impacto coletivo para o governo, ong e outras organizações. gerem programação econômico-financeira; atuam nos mercados internos e externos; examinam finanças empresariais. podem exercer mediação, perícia e arbitragem."

and when i use text or get.text i get this AttributeError: 'NoneType' object has no attribute 'text' What should i do?

CodePudding user response:

You could use next_sibling.

text = soup.find_all('h2')[1].next_sibling.string

print('\n'.join(text[idx:idx 80] for idx in range(0, len(text), 80)))
Analisam o ambiente econômico; elaboram e executam projetos de pesquisa econômi
ca, demercado e de viabilidade econômica, entre outros. participam do planejamen
to estratégicoe de curto prazo e avaliam políticas de impacto coletivo para o go
verno, ong e outrasorganizações. gerem programação econômico-financeira; atuam n
os mercados internos eexternos; examinam finanças empresariais. podem exercer me
diação, perícia e arbitragem.

Note, I've used a list comprehension to print the text solely to limit it to 80 characters to make it more readable.

This means some words will be split

CodePudding user response:

The solution from norie working but at the slightest change may break due to hardcoded for in range()

You may want something like this (example in the online IDE):

text = soup.select_one('#container-principal > section > h2:nth-child(11)').next_sibling.strip()
print(text)

'''
Analisam o ambiente econômico; elaboram e executam projetos de pesquisa econômica, demercado e de viabilidade econômica, entre outros. participam do planejamento estratégicoe de curto prazo e avaliam políticas de impacto coletivo para o governo, ong e outrasorganizações. gerem programação econômico-financeira; atuam nos mercados internos eexternos; examinam finanças empresariais. podem exercer mediação, perícia e arbitragem.
'''
  • Related