Ryan Mitchell is a Software Engineer at LinkeDrive in Boston, where she develops their API and data analysis tools.
Meer over Ryan MitchellWebscraping met Python
Een uitgebreide gids voor het verzamelen, transformeren en gebruiken van gegevens
Paperback Nederlands 2019 2e druk 9789463561006Samenvatting
Programmeren is magie, maar webscrapen is een vorm van tovenarij. Met een eenvoudig geautomatiseerd programma kunt u webservers bevragen, gegevens ophalen en analyseren om daar de benodigde informatie uit te halen. De uitgebreide editie van dit praktische boek laat u niet alleen kennismaken met webscrapen, maar is tevens een gids voor het scrapen van bijna alle soorten gegevens van het moderne web.
In deel I concentreren we ons op de techniek van het webscrapen met behulp van Python om informatie van een webserver op te vragen. We gaan hier dieper in op de afhandeling van de serverrespons en een geautomatiseerde manier om met sites te communiceren. In deel II onderzoeken we een aantal specifiekere tools en toepassingen die geschikt zijn voor elk webscrapescenario waar u waarschijnlijk mee te maken krijgt.
- Ontleden van gecompliceerde HTML-pagina's
- Ontwikkelen van crawlers met het Scrapy-framework
- Opslagmethoden voor gescrapete gegevens
- Documenten lezen en daar gegevens aan onttrekken
- Opschonen en normaliseren van slecht geformatteerde gegevens
- Natuurlijke talen lezen en schrijven
- Door formulieren en log-ins crawlen
- JavaScript scrapen en door APl's crawlen
- Afbeelding-naar-tekstsoftware schrijven en gebruiken
- Scrapevalkuilen en botblokkers vermijden
- Uw website testen met scrapers
'Dankzij de tools en voorbeelden in dit boek kon ik meerdere zich herhalende taken gemakkelijker automatiseren zodat ik meer tijd over had voor interessantere problemen. Het is een resultaatgericht, goed leesbaar boek dat diep geworteld is in echte problemen en oplossingen.' - Eric VanWyk, Electrical Computer Engineer, Olin College of Engineering
Specificaties
Lezersrecensies
Inhoudsopgave
Deel I: Webscrapers bouwen
1. Uw eerste webscraper 1
Verbinding maken 2
Een inleiding tot BeautifulSoup 4
BeautifulSoup installeren 5
BeautifulSoup uitvoeren 7
Betrouwbaar verbinden en excepties afhandelen 10
2. Geavanceerde HTML-parsering 15
Je hebt niet altijd een botte bijl nodig 16
Nog een bord BeautifulSoup 17
find() en find_all() met BeautifulSoup 19
Andere BeautifulSoup-objecten 22
Navigeren door boomstructuren 22
Omgaan met ouders 26
Reguliere expressies 27
Experimenteren met regex 28
Reguliere expressies en BeautifulSoup 31
Toegang tot attributen 32
Lambda-expressies 33
3. Webcrawlers schrijven 35
Een enkel domein doorkruisen 36
Een hele site crawlen 40
Gegevens verzamelen over een hele site 43
Crawlen over internet 46
4. Webcrawlingmodellen 51
Objecten plannen en definiëren 52
Omgaan met verschillende websitestructuren 56
Crawlers structureren 61
Sites crawlen volgens de zoekmethode 61
Sites crawlen via links 65
Meerdere paginatypen crawlen 68
Nadenken over webcrawlermodellen 69
5. Scrapy 71
Scrapy installeren 72
Een nieuwe spider initialiseren 72
Een eenvoudige scraper schrijven 73
Spideren met regels 75
Items maken 80
Items als output 82
De item-pipeline 83
Loggen met Scrapy 87
Meer hulpmiddelen 88
6. Gegevens opslaan 89
Mediabestanden 90
Gegevens opslaan in CSV 93
MySQL 95
MySQL installeren 96
Enkele basisopdrachten 98
Integratie met Python 102
Beproefde databasetechnieken 105
“Six Degrees” in MySQL 108
E-mail 112
Deel II: Scrapen voor gevorderden
7. Documenten lezen 117
Documentcodering 118
Tekst 118
Tekstcodering en het wereldwijde web 119
CSV 124
CSV-bestanden lezen 124
PDF 126
Microsoft Word en .docx 129
8. Uw vuile gegevens opschonen 133
Opschonen met code 134
Gegevensnormalisatie 138
Achteraf opschonen 140
OpenRefine 140
9. Natuurlijke talen lezen en schrijven 145
Gegevens samenvatten 146
Markov-modellen 150
Six Degrees of Wikipedia: Conclusie 154
Natural Language Toolkit 157
Installatie en setup 157
Statistische analyse met NLTK 158
Lexicografische analyse met NLTK 161
Aanvullende bronnen 165
10. Door formulieren en logins crawlen 167
Python’s Requests-bibliotheek 168
Een formulier verzenden 168
Keuzerondjes, selectievakjes en andere invoermogelijkheden 171
Bestanden en afbeeldingen verzenden 172
Logins en cookies afhandelen 173
HTTP basic access authentication 175
Andere problemen met formulieren 176
11. JavaScript scrapen 177
Een korte introductie op JavaScript 178
Algemene JavaScript-bibliotheken 180
Ajax en Dynamic HTML 182
JavaScript in Python uitvoeren met Selenium 183
Extra Selenium-webdrivers 189
Redirects verwerken 190
Een afsluitende opmerking over JavaScript 192
12. Crawlen door API’s 193
Een korte inleiding op API‘s 194
HTTP-methoden en API’s 195
Meer over API-responses 197
JSON parseren 199
Handboek – Webscraping met Python
Ongedocumenteerde API‘s 200
Niet-gedocumenteerde API‘s vinden 202
Documenteren van niet-gedocumenteerde API‘s 203
API’s automatisch vinden en documenteren 204
API’s combineren met andere gegevensbronnen 206
Meer over API‘s 211
13. Beeldverwerking en tekstherkenning 213
Inleiding 214
Overzicht van bibliotheken 214
Pillow 215
Tesseract 215
NumPy 218
Goed geformatteerde tekst verwerken 219
Afbeeldingen automatisch aanpassen 222
Tekst uit afbeeldingen op websites scrapen 225
CAPTCHA’s lezen en Tesseract trainen 229
Tesseract trainen 231
CAPTCHA’s ophalen en oplossingen indienen 235
14. Valkuilen ontwijken 239
Een opmerking over ethiek 240
Eruitzien als een mens 241
Pas de headers aan 241
Cookies afhandelen met JavaScript 243
Timing is alles 245
Veel voorkomende formulierbeveiligingsfuncties 246
Verborgen invoerveldwaarden 246
Honeypots vermijden 248
De menselijke checklist 250
15. Uw website testen met scrapers 253
Een inleiding tot testen 254
Wat zijn unittests? 254
Python unittest 255
Het testen van Wikipedia 257
Testen met Selenium 260
Interactie met de site 260
unittest of Selenium? 264
16. Parallel webcrawlen 267
Processen versus threads 268
Multithreaded crawlen 268
Race conditions en wachtrijen 271
De threading-module 274
Multiprocess crawlen 277
Multiprocess crawlen 280
Communicatie tussen processen 281
Multiprocess crawlen: een andere aanpak 284
17. Extern scrapen 287
Waarom externe servers gebruiken? 288
Blokkering van IP-adres voorkomen 288
Draagbaarheid en uitbreidbaarheid 289
Tor 290
PySocks 291
Extern hosten 292
Draaien vanaf een websitehostingaccount 292
Draaien vanuit de cloud 293
Aanvullende bronnen 295
18. De juridische en ethische aspecten van webscrapen 297
Handelsmerken, auteursrechten, patenten, o jee! 298
Auteursrecht 299
Schending van roerende zaken 300
De Computer Fraud and Abuse Act 303
Robots.txt en gebruiksvoorwaarden 304
Drie zaken rond webscraping 308
eBay versus Bidder’s Edge en Schending van roerende zaken 308
Verenigde Staten versus Auernheimer en de Computer Fraud and Abuse Act 310
Field versus Google: auteursrecht en robots.txt 312
Wat in het verschiet ligt... 313
Index 315
Rubrieken
- advisering
- algemeen management
- coaching en trainen
- communicatie en media
- economie
- financieel management
- inkoop en logistiek
- internet en social media
- it-management / ict
- juridisch
- leiderschap
- marketing
- mens en maatschappij
- non-profit
- ondernemen
- organisatiekunde
- personal finance
- personeelsmanagement
- persoonlijke effectiviteit
- projectmanagement
- psychologie
- reclame en verkoop
- strategisch management
- verandermanagement
- werk en loopbaan