Ryan Mitchell
Novatec
Authorized Portuguese translation of the English edition of titled Web Scraping with Python, ISBN
9781491910290 © 2015 Ryan Mitchell. This translation is published and sold by permission of O'Reilly
Media, Inc., the owner of all rights to publish and sell the same.
Tradução em português autorizada da edição em inglês da obra Web Scraping with Python, ISBN
9781491910290 © 2015 Ryan Mitchell. Esta tradução é publicada e vendida com a permissão da O'Reilly
Media, Inc., detentora de todos os direitos para publicação e venda desta obra.
© Novatec Editora Ltda. 2015.
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta
obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora.
Editor: Rubens Prates
Tradução: Aldir José Coelho Corrêa da Silva
Revisão gramatical: Marta Almeida de Sá
Assistente editorial: Priscila A. Yoshimatsu
Editoração eletrônica: Carolina Kuwabata
ISBN: 978-85-7522-447-2 IG20150806
Histórico de impressões:
Agosto/2015
Primeira edição
Novatec Editora Ltda.
Rua Luís Antônio dos Santos 110
02460-000 – São Paulo, SP – Brasil
Tel.: +55 11 2959-6529
Email: [email protected]
Site: www.novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec
Sumário
Prefácio............................................................................................................................. 9
Parte I ■ Construindo scrapers................................................................................17
Capítulo 1 ■ Seu primeiro web scraper...............................................................................18
Conectando-se.................................................................................................18
Introdução ao BeautifulSoup............................................................................21
Instalando o BeautifulSoup......................................................................... 22
Executando o BeautifulSoup........................................................................24
Conectando-se de maneira confiável............................................................ 26
Capítulo 2 ■ Análise de HTML avançada..............................................................................30
Nem sempre é preciso um martelo................................................................... 30
Outras utilidades do BeautifulSoup..................................................................31
find() e findAll() com o BeautifulSoup......................................................... 33
Outros objetos de BeautifulSoup................................................................. 36
Navegando em árvores................................................................................ 37
Expressões regulares........................................................................................41
Expressões regulares e o BeautifulSoup............................................................ 46
Acessando atributos........................................................................................ 48
Expressões lambda.......................................................................................... 48
Além do BeautifulSoup.................................................................................... 49
Capítulo 3 ■ Começando a rastrear....................................................................................50
Percorrendo um único domínio........................................................................ 50
Rastreando um site inteiro............................................................................... 55
Coletando dados em um site inteiro..............................................................59
Rastreando na Internet.....................................................................................61
Rastreando com o Scrapy................................................................................. 67
Capítulo 4 ■ Usando APIs...................................................................................................73
Como as APIs funcionam.................................................................................74
Convenções comuns.........................................................................................75
Métodos......................................................................................................75
Autenticação................................................................................................76
5
6
Web Scraping com Python
Respostas........................................................................................................ 77
Chamadas de API........................................................................................ 78
Echo Nest........................................................................................................ 79
Alguns exemplos......................................................................................... 79
Twitter.............................................................................................................81
Procedimento inicial................................................................................... 82
Alguns exemplos......................................................................................... 83
APIs do Google............................................................................................... 86
Procedimento inicial................................................................................... 87
Alguns exemplos......................................................................................... 88
Analisando JSON............................................................................................ 90
Criando uma miscelânea................................................................................. 92
Mais sobre APIs............................................................................................... 97
Capítulo 5 ■ Armazenando dados......................................................................................98
Arquivos de mídia........................................................................................... 98
Armazenando dados em CSV.........................................................................102
MySQL..........................................................................................................105
Instalando o MySQL..................................................................................106
Alguns comandos básicos...........................................................................108
Integrando a Python...................................................................................112
Técnicas e boas práticas usadas em um banco de dados..............................115
“Six Degrees” no MySQL...........................................................................118
Email.............................................................................................................121
Capítulo 6 ■ Lendo documentos.......................................................................................124
Codificação de documentos............................................................................124
Texto............................................................................................................ 125
Codificação de texto e a Internet global......................................................126
CSV...............................................................................................................131
Lendo arquivos CSV..................................................................................131
PDF................................................................................................................134
Microsoft Word e o .docx...............................................................................136
Parte II ■ Scraping avançado................................................................................. 141
Capítulo 7 ■ Limpando seus dados sujos..........................................................................142
Limpando o código.........................................................................................142
Normalização de dados..............................................................................146
Limpeza após o fato........................................................................................148
OpenRefine...............................................................................................148
Sumário
Capítulo 8 ■ Lendo e gravando idiomas naturais..............................................................154
Resumindo dados...........................................................................................155
Modelos de Markov........................................................................................159
Six Degrees of Wikipedia: Conclusão.........................................................164
Natural Language Toolkit...............................................................................167
Instalação e configuração...........................................................................168
Análise estatística com o NLTK..................................................................169
Análise lexicográfica com o NLTK..............................................................171
Recursos adicionais........................................................................................176
Capítulo 9 ■ Rastreando formulários e logins...................................................................177
Biblioteca Python Requests.............................................................................177
Enviando um formulário básico......................................................................178
Botões de rádio, caixas de seleção e outras entradas........................................181
Enviando arquivos e imagens..........................................................................182
Manipulando logins e cookies.........................................................................183
Autenticação de acesso básica do HTTP.....................................................185
Outros problemas dos formulários..................................................................186
Capítulo 10 ■ Scraping de JavaScript................................................................................188
Breve introdução ao JavaScript........................................................................189
Bibliotecas JavaScript comuns................................................................... 190
Ajax e Dynamic HTML..................................................................................193
Executando JavaScript em Python com o Selenium.....................................194
Manipulando redirecionamentos....................................................................201
Capítulo 11 ■ Processamento de imagens e reconhecimento de texto...............................203
Visão geral das bibliotecas............................................................................. 204
Pillow....................................................................................................... 204
Tesseract....................................................................................................205
NumPy..................................................................................................... 206
Processando texto bem formatado..................................................................207
Fazendo o scraping de texto em imagens de sites.........................................210
Lendo CAPTCHAs e treinando o Tesseract.....................................................213
Treinando o Tesseract................................................................................215
Recuperando CAPTCHAs e enviando soluções.............................................. 220
Capítulo 12 ■ Evitando as armadilhas do scraping............................................................223
Nota sobre ética.............................................................................................224
Parecendo um ser humano............................................................................. 225
Ajuste seus cabeçalhos.............................................................................. 225
7
8
Web Scraping com Python
Manipulando cookies.................................................................................227
Ritmo é tudo............................................................................................. 230
Recursos de segurança comuns dos formulários............................................. 230
Valores de campos de entrada ocultos.........................................................231
Evitando honey pots...................................................................................232
Lista de verificação para humanos............................................................. 235
Capítulo 13 ■ Testando seu site com scrapers...................................................................237
Introdução à execução de testes..................................................................... 238
O que são testes de unidade?..................................................................... 238
Módulo Python unittest..................................................................................239
Examinando a Wikipédia...........................................................................240
Testando com o Selenium...............................................................................243
Interagindo com o site................................................................................244
Unittest ou Selenium?.....................................................................................248
Capítulo 14 ■ Executando scraping remotamente............................................................250
Por que usar servidores remotos?.................................................................... 250
Evitando o bloqueio do endereço IP............................................................251
Portabilidade e extensibilidade.................................................................. 252
Tor253
PySocks.................................................................................................... 254
Hospedagem remota...................................................................................... 255
Execução a partir de uma conta de hospedagem de sites............................. 256
Execução a partir da nuvem...................................................................... 257
Recursos adicionais........................................................................................259
Seguindo em frente.........................................................................................259
Apêndice A ■ Visão geral de Python.................................................................................261
Instalação e “Hello, World!”...........................................................................261
Apêndice B ■ Visão geral da Internet...............................................................................264
Apêndice C ■ Aspectos legais e éticos do web scraping.....................................................268
Sobre a autora................................................................................................................287
Colofão...........................................................................................................................288
Download

Ryan Mitchell