Outros objetos do BeautifulSoup
Objetos BeautifulSoup Instâncias vistas nos exemplos anteriores de código como a variável bs. Objetos Tag Obtidos na forma de listas – ou individualmente – por meio da chamada a find e find_all em um objeto BeautifulSoup. Objetos NavigableString Usados para representar texto em tags. Objeto Comment Usado para encontrar comentários HTML em tags de comentário, <!—como este-->.
Navegando em Árvores
No Capítulo 1, vimos como navegar em uma árvore do BeautifulSoup em uma única direção. Vamos agora ver como navegar para cima, para os lados e na diagonal em árvores HTML.
Lidando com filhos e descendentes: Os filhos estão sempre exatamente uma tag abaixo de um pai, enquanto os descendentes podem estar em qualquer nível da árvore abaixo de um pai.
Lidando com irmãos: Com a função next_siblings() do BeautifulSoup, é trivial coletar dados de tabelas, particularmente daquelas com linhas de título.
Lidando com pais: Ocasionalmente, poderemos nos ver em situações peculiares que exigirão as funções do BeautifulSoup para encontrar os pais: .parent e .parents.
Expressões Regulares
Um exemplo clássico de expressões regulares pode ser visto na prática de identificação de endereços de email. Ao concatenar todas as regras, temos a seguinte expressão regular: [A-Za-z0-9._+]+@[A-Za-z]+.(com|org|edu|net)
Expressões Regulares e o BeautifulSoup
A maioria das funções que aceita um argumento do tipo string (por exemplo, find(id="umaTagIdAqui")) também aceitará uma expressão regular.
Acessando Atributos
Com frequência no web scraping, não estaremos procurando o conteúdo de uma tag, mas os seus atributos. Com objetos de tag, uma lista Python com os atributos pode ser automaticamente acessada por meio de uma chamada como esta:
Expressões Lambda
É uma função que é passada para outra função como uma variável. O BeautifulSoup permite passar determinados tipos de funções como parâmetros da função find_all. A única restrição é que essas funções devem aceitar um objeto tag como argumento e devolver um booleano. Por exemplo, o código a seguir obtém todas as tags que tenham exatamente dois atributos:
Nesse caso, a função passada como argumento é len(tag.attrs) == 2. Quando ela for True, a função find_all devolverá a tag. Isso significa que ela encontrará as tags com dois atributos, por exemplo:
Last updated