Wymored Login

Curso de web scraping em python 3 - Parte 2 - Definir os dados a serem extraidos

31 de janeiro de 2019 por Alexandre Miguel de Andrade Souza

Neste curso, vamos capturar os dados de avaliações dos usuários para um atrativo no site Tripadvisor, no caso o Parque Nacional da Serra do Cipó

Acesse a página com o seu navegador e veja seu conteúdo. Que dados podemos capturar? Lembre-se que estamos buscando dados que estejam presentes em todas as páginas 'semelhantes' dentro do site. No caso, dados que aparecem em qualquer atrativo.

Selecione o título (Parque Nacional Serra do Cipó) e clique com o Botão direito do mouse e selecione 'Inspecionar Elemento',

Observe a linha destacada no 'Inspetor'. No momento em que acessei, era:

 <h1 id="HEADING" class="ui_header h1">Parque Nacional Serra do Cipó</h1>

Destaco aqui as marcações id="HEADING" e class="ui_header h1". Elas são extremamente úteis no processo de captura de dados.

Na marcação html/css, id identifica um elemento único na página, enquanto class identifica elementos semelhantes. A página se refere a um úníco atrativo, e só precisamos capturar o nome do atrativo uma única vez, então o id nesse momento nos será mais útil que o class

A outra informação que queremos são as avaliações dos usuários.

Mas temos que prestar atenção a um detalhe: A página é um tanto redundante quanto às informações das avaliações. Há uma caixa com a avaliação média geral, há o total de avaliações, há o total por nota, e há a avaliação individual dos usuários, com nota, usuário, titulo, texto e data. o importante é saber qual informação que vocẽ quer.

Note que há várias informações que podem nos interessar:

nota
título da avaliação
avaliação
usuário 
data

Ao clicar nas bolhas que representam a nota em cada avaliação de usuário, vemos a seguinte linha no inspetor:

<span class="ui_bubble_rating bubble_50"></span>

Temos um elemento span, com as classes ui_bubble_rating e bubble_50 e que os dois últimos números desta representam a nota (50 = 5, 45 = 4,5, etc) Mas antes precisamos identificar o elemento que engloba todas as informações da avaliação de cada usuário.

Usando o inspetor, identifique a div que tenha uma estrutura semelhante a

<div class="review-container" data-reviewid="649109728" data-collapsed="false" data-deferred="false">

Percebemos que a class 'review-container' contém obviamente todos os elementos de cada avaliação. Isso nos será muito útil

Agora podemos identificar os elementos de cada informação que precisamos:

Nota:

<span class="ui_bubble_rating bubble_50"></span>

Título da avaliação

<span class="noQuotes">Incrível</span>

Avaliação

<div class="entry"><p class="partial_entry">Pra quem gosta de cachoeira, trilhas, escaladas!!! Tem muito o que ver, muito local bom pra tomar banho de cachoeira!!! Vegetação linda do cerrado.</p></div>

Usuário

<div class="info_text" onclick="widgetEvCall('handlers.usernameClick', event, this);"><div>caroldalsoglio</div></div>

Data

<div class="prw_rup prw_reviews_stay_date_hsx" data-prwidget-name="reviews_stay_date_hsx" data-prwidget-init=""><span class="stay_date_label">Data da experiência:</span> janeiro de 2019</div>

Identificamos nossos dados na página, mas como vamos coletá-los e armazená-los com python?

Vamos ver isso na parte 3


Voltar à parte 1