Como extrair o texto principal de uma determinada página web
Extrair texto de páginas web é mais complicado do que parece. Ao mínimo você precisa fazer duas coisas
- Encerrar a fonte HTML de uma página web. Isto pode ser feito com qualquer função nativa como file_get_contents() incluída com linguagens de programação avançadas. Esta é a opção mais simples mas eu recomendo que você verifique as bibliotecas como cURL, que lhe dará mais opções e eu explicarei porque mais tarde.
- li>Extraindo o texto do HTML. Eu recomendo que você veja o Document Object Model, que permite extrair o texto de uma forma estruturada. O HTML pode ser considerado texto semi-estruturado, em comparação com um arquivo de texto simples. Com o DOM você pode obter mais informações estruturais que o ajudariam muito no processamento do texto.
Então, se você precisar lidar com várias páginas web, dizendo que todas as páginas web de um determinado site, você precisará de um web crawler, que extrai hiperlinks de uma página web e depois processa esses links recursivamente.
Leitura de páginas web é muitas vezes lenta. Portanto, se você precisar processar milhares de páginas web, você pode ter que processar páginas web em vários threads. Neste caso, funções como curl_multi() ajudam muito. Elas podem acelerar a velocidade em dez ou mais pastas.
Após trabalhar com páginas web por um tempo, você verá que o que o seu programa obtém é muitas vezes diferente do que você vê em um navegador. Existem duas razões principais
>ul>li>Muitos websites fornecem conteúdos personalizados baseados nos idiomas do seu browser/OS e nos seus endereços IP. Às vezes você só quer páginas em inglês, mas elas alimentam as suas com páginas em espanhol.>Muitos websites usam JavaScript/AJAX para carregar parte ou mesmo todo o seu conteúdo de texto.Para o primeiro número, você pode configurar seus cURL's para trabalhar em torno dele, parcialmente ao menos. Se isso não funcionar, você precisará identificar a linguagem da página e selecionar as linguagens indesejadas com seu programa.
Para conteúdos carregados em JavaScript, você precisa de um navegador como um programa que execute os códigos JS ao processar o HTML. Um exemplo de tal programa é o Chrome sem cabeça. A desvantagem dos browsers sem cabeça é que eles são realmente lentos em comparação com cURL.
Finalmente, quando você prosseguir para a fase de produção, você verá que o programa não recebe nada de uma grande parte dos websites. Looking into these websites, you will find the following problems.
- Many websites are too slow - You have to balance the speed and availability by choosing the right timeout.
- Many websites are too fragile - They crashes once you read two or three pages from them in parallelism. An “intelligent” crawler is needed to prevent from breaking them.
To summarize, to extract text from web pages, the following tools are all that you need
- cURL
- DOM
To develop a program that can extract text from web pages at a large scale, in an efficient and reliable manner, there are some additional jobs to do.
- Crawling
- Handling languages
- Handling JS
- Throttling
I myself gained the above experiences when developing a self-learning AI application, acobot.ai, which learns from a given domain and interacts with users by itself.
You may check out a demo of self-learning AI and see how it extracts text from web pages.
Artigos semelhantes
- Como extrair a cópia de segurança do meu chat WhatsApp para texto simples no meu telemóvel Android que está no formato crypt.db
- Se o texto começa como iMessage e muda para verde e diz enviado como mensagem de texto, você está bloqueado e o texto foi enviado?
- Como um método principal é chamado em outra classe de método principal em Java?
- Como pesquisar o meu histórico do YouTube com uma pesquisa por palavra-chave em vez de apenas afiar página por página