SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Mining Wikipedia for
  Awesome Data
      Neil Crosby
What’s this about then?

• There’s loads of groovy content on
  Wikipedia[citation needed].
• You are lazy.
• You want groovy content on your site.
Wikipedia has an API


• Who knew?
• http://en.wikipedia.org/w/api.php
API has lots of options
 Param        Values            What does it do?

 format      php, json,          Output format.
              TODO
redirects       0, 1         Redirect to good pages.

rvsection   0, 1, 2, 3, etc Page section to get data for.

 action     query, parse           API method.
Getting WikiText? Easy

• http://en.wikipedia.org/w/api.php?
  format=php&action=query&titles=one
  +flew+over+the+cuckoo’s
  +nest&rvprop=content&prop=revisions&re
  directs=1
Searching? Harder


• Wikipedia doesn’t have a good search
  engine.
Use Yahoo! BOSS

• http://boss.yahooapis.com/ysearch/web/v1/
  site:en.wikipedia.org+one+flew+over+the
  +cuckoo’s+nest?appid=yourBOSSiD
• First result: http://en.wikipedia.org/wiki/
  One_Flew_Over_the_Cuckoo's_Nest_(fil
  m)
Then get WikiText

• http://en.wikipedia.org/w/api.php?
  format=php&action=query&titles=
  One_Flew_Over_the_Cuckoo's_Nest_(fil
  m)&rvprop=content&prop=revisions&redir
  ects=1
The WikiText
'''''One Flew Over the Cuckoo's Nest''''' is a
[[1975 in film|1975]] [[comedy-drama]] film
[[film director|directed]] by [[Miloš
Forman]]. The film is an adaptation of the
1962 novel ''[[One Flew Over the Cuckoo's
Nest (novel)|One Flew Over the Cuckoo's
Nest]]'' by [[Ken Kesey]]. The movie was the
first to [[List of Big Five Academy Award
winners and nominees|win all five]]...
But I wanted HTML!


• WikiText is no good for dumping into a
  website.
Another API call

• http://en.wikipedia.org/w/api.php?
  action=parse&format=php&text=returned
  +wiki+text
• Text will be big - do as a POST.
Wiki HTML!
<p><i><b>One Flew Over the Cuckoo's
Nest</b></i> is a <a href=quot;/wiki/
1975_in_filmquot; title=quot;1975 in filmquot;>1975</a>
<a href=quot;/wiki/Comedy-dramaquot;
title=quot;Comedy-dramaquot;>comedy-drama</a>
film <a href=quot;/wiki/Film_directorquot; title=quot;Film
directorquot;>directed</a> by <a href=quot;/wiki/
Milo%C5%A1_Formanquot; title=quot;Miloš
Formanquot;>Miloš Forman</a>. The film is an...
Reducing the HTML

• DOMDocument->loadHTML()
• DOMXPath->query() to get wanted nodes.
• DOMDocument->saveHTML()
• str_replace() away HTML boilerplate.
The Cuckoo Problem

• “One Flew Over the Cuckoo’s Nest”
• A book?
• A film?
• Depends on context.
The Cuckoo Solution

• Give context:
 • “one flew over the cuckoo’s nest book”
 • “one flew over the cuckoo’s nest movie”
• Yahoo! BOSS gives relevant result. Yay.
There’s still a problem...

• Sometimes you can give too much context.
• “wii fit” gets expected result.
• “wii fit electronics” returns “WiiMote”.
• Oh dear.
When is too much?

• Who knows?
• Just because an article exists for the basic
  term doesn’t mean it’s the right article.
• I’ve not solved this yet.
It’s all too complicated

• So don’t do it all.
• Use a library.
• http://thecodetrain.co.uk/code/wikislurp
Runs as a web service


• http://yoursite.com/wikislurp/?params=blah
What are the params?
Param                      Meaning
secret             Your self-chosen appid.
query          What you’d like wiki info about.
context             A little bit of context.
section   Article section to retrieve. Zero indexed.
xpath          Specify the elements to return.
output             Serialised php or json.
What does it return?


• An array.
• Keys for “url”, “title” and “article”.
Why a webservice?

• You can’t abandon a function call in PHP.
• You can abandon a CURL call.
• If wikislurp takes too long, move on.
Kitten Break



There’s some code coming up, soz.

              http://www.flickr.com/photos/gsx-r750/1475603952/
How to call WikiSlurp

• http://yoursite.com/wikislurp/?
  secret=YOUR+SECRET&query=one+flew
  +over+the+cuckoo’s
  +nest&context=book&xpath=/html/body/
  p[position()<=3]&section=0&output=json
And from PHP?
$s = curl_init();
curl_setopt($s,CURLOPT_URL, $url);
curl_setopt($s,CURLOPT_HEADER,false);
curl_setopt($s,
    CURLOPT_RETURNTRANSFER,1);
// wait 1 second, then abort
curl_setopt($s,CURLOPT_TIMEOUT,1);
$result = curl_exec($s);
curl_close( $s );
XPath?
    Query                 Gives You

      //p                   All <p>
                    All <p> directly under
 /html/body/p
                           <body>
/html/body/p[2]       2nd <p> directly...
  /html/body/
                   First three <p> directly...
p[position()<=3]
Oh noes, more XPath
          Query                     Gives You

                             All <p> with single class
/html/body/p[@class='fish']
                                      “fish”


       /html/body/
                              All <p> with any class
   p[contains(concat(quot;
                                  including “fish”
  quot;,@class,quot; quot;), quot; fish quot;)]
Phew.

Have another kitten.




                http://www.flickr.com/photos/evapro/305689596/
Future Features

• Do something intelligent with context.
• Convert to HTML without an extra API
  call.
• Return proper error codes if things go
  wrong.
Where is this used?


• TheTenWordReview.com
• IsNeilAnnoyedBy.com
Questions?
• I will blog about this talk at The Code Train.
• No, really - I will.
• Download the slurpy source code from
  http://thecodetrain.co.uk/code/wikislurp
• Slides? http://icanhaz.com/wikislurpslides
• I was and am http://NeilCrosby.com/vcard

Contenu connexe

Plus de Neil Crosby

Yahoo! Pipes: Munging, Mixing and Mashing
Yahoo! Pipes: Munging, Mixing and MashingYahoo! Pipes: Munging, Mixing and Mashing
Yahoo! Pipes: Munging, Mixing and MashingNeil Crosby
 
Search Monkey - Open Hack London '09
Search Monkey - Open Hack London '09Search Monkey - Open Hack London '09
Search Monkey - Open Hack London '09Neil Crosby
 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend TestingNeil Crosby
 
I'll Show You Mine If You Show Me Yours...
I'll Show You Mine If You Show Me Yours...I'll Show You Mine If You Show Me Yours...
I'll Show You Mine If You Show Me Yours...Neil Crosby
 
TV Tubes - Talkin' 'bout my automation...
TV Tubes - Talkin' 'bout my automation...TV Tubes - Talkin' 'bout my automation...
TV Tubes - Talkin' 'bout my automation...Neil Crosby
 
Starting to Monkey Around With Yahoo! Search Monkey
Starting to Monkey Around With Yahoo! Search MonkeyStarting to Monkey Around With Yahoo! Search Monkey
Starting to Monkey Around With Yahoo! Search MonkeyNeil Crosby
 
Multi-level vCards
Multi-level vCardsMulti-level vCards
Multi-level vCardsNeil Crosby
 

Plus de Neil Crosby (9)

Lagging Pipes
Lagging PipesLagging Pipes
Lagging Pipes
 
Yahoo! Pipes: Munging, Mixing and Mashing
Yahoo! Pipes: Munging, Mixing and MashingYahoo! Pipes: Munging, Mixing and Mashing
Yahoo! Pipes: Munging, Mixing and Mashing
 
Search Monkey - Open Hack London '09
Search Monkey - Open Hack London '09Search Monkey - Open Hack London '09
Search Monkey - Open Hack London '09
 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend Testing
 
I'll Show You Mine If You Show Me Yours...
I'll Show You Mine If You Show Me Yours...I'll Show You Mine If You Show Me Yours...
I'll Show You Mine If You Show Me Yours...
 
TV Tubes - Talkin' 'bout my automation...
TV Tubes - Talkin' 'bout my automation...TV Tubes - Talkin' 'bout my automation...
TV Tubes - Talkin' 'bout my automation...
 
Starting to Monkey Around With Yahoo! Search Monkey
Starting to Monkey Around With Yahoo! Search MonkeyStarting to Monkey Around With Yahoo! Search Monkey
Starting to Monkey Around With Yahoo! Search Monkey
 
Multi-level vCards
Multi-level vCardsMulti-level vCards
Multi-level vCards
 
Twitter Bots
Twitter BotsTwitter Bots
Twitter Bots
 

Dernier

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 

Dernier (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

Mining Wikipedia For Awesome Data

  • 1. Mining Wikipedia for Awesome Data Neil Crosby
  • 2. What’s this about then? • There’s loads of groovy content on Wikipedia[citation needed]. • You are lazy. • You want groovy content on your site.
  • 3. Wikipedia has an API • Who knew? • http://en.wikipedia.org/w/api.php
  • 4. API has lots of options Param Values What does it do? format php, json, Output format. TODO redirects 0, 1 Redirect to good pages. rvsection 0, 1, 2, 3, etc Page section to get data for. action query, parse API method.
  • 5. Getting WikiText? Easy • http://en.wikipedia.org/w/api.php? format=php&action=query&titles=one +flew+over+the+cuckoo’s +nest&rvprop=content&prop=revisions&re directs=1
  • 6. Searching? Harder • Wikipedia doesn’t have a good search engine.
  • 7. Use Yahoo! BOSS • http://boss.yahooapis.com/ysearch/web/v1/ site:en.wikipedia.org+one+flew+over+the +cuckoo’s+nest?appid=yourBOSSiD • First result: http://en.wikipedia.org/wiki/ One_Flew_Over_the_Cuckoo's_Nest_(fil m)
  • 8. Then get WikiText • http://en.wikipedia.org/w/api.php? format=php&action=query&titles= One_Flew_Over_the_Cuckoo's_Nest_(fil m)&rvprop=content&prop=revisions&redir ects=1
  • 9. The WikiText '''''One Flew Over the Cuckoo's Nest''''' is a [[1975 in film|1975]] [[comedy-drama]] film [[film director|directed]] by [[Miloš Forman]]. The film is an adaptation of the 1962 novel ''[[One Flew Over the Cuckoo's Nest (novel)|One Flew Over the Cuckoo's Nest]]'' by [[Ken Kesey]]. The movie was the first to [[List of Big Five Academy Award winners and nominees|win all five]]...
  • 10. But I wanted HTML! • WikiText is no good for dumping into a website.
  • 11. Another API call • http://en.wikipedia.org/w/api.php? action=parse&format=php&text=returned +wiki+text • Text will be big - do as a POST.
  • 12. Wiki HTML! <p><i><b>One Flew Over the Cuckoo's Nest</b></i> is a <a href=quot;/wiki/ 1975_in_filmquot; title=quot;1975 in filmquot;>1975</a> <a href=quot;/wiki/Comedy-dramaquot; title=quot;Comedy-dramaquot;>comedy-drama</a> film <a href=quot;/wiki/Film_directorquot; title=quot;Film directorquot;>directed</a> by <a href=quot;/wiki/ Milo%C5%A1_Formanquot; title=quot;Miloš Formanquot;>Miloš Forman</a>. The film is an...
  • 13. Reducing the HTML • DOMDocument->loadHTML() • DOMXPath->query() to get wanted nodes. • DOMDocument->saveHTML() • str_replace() away HTML boilerplate.
  • 14. The Cuckoo Problem • “One Flew Over the Cuckoo’s Nest” • A book? • A film? • Depends on context.
  • 15. The Cuckoo Solution • Give context: • “one flew over the cuckoo’s nest book” • “one flew over the cuckoo’s nest movie” • Yahoo! BOSS gives relevant result. Yay.
  • 16. There’s still a problem... • Sometimes you can give too much context. • “wii fit” gets expected result. • “wii fit electronics” returns “WiiMote”. • Oh dear.
  • 17. When is too much? • Who knows? • Just because an article exists for the basic term doesn’t mean it’s the right article. • I’ve not solved this yet.
  • 18. It’s all too complicated • So don’t do it all. • Use a library. • http://thecodetrain.co.uk/code/wikislurp
  • 19. Runs as a web service • http://yoursite.com/wikislurp/?params=blah
  • 20. What are the params? Param Meaning secret Your self-chosen appid. query What you’d like wiki info about. context A little bit of context. section Article section to retrieve. Zero indexed. xpath Specify the elements to return. output Serialised php or json.
  • 21. What does it return? • An array. • Keys for “url”, “title” and “article”.
  • 22. Why a webservice? • You can’t abandon a function call in PHP. • You can abandon a CURL call. • If wikislurp takes too long, move on.
  • 23. Kitten Break There’s some code coming up, soz. http://www.flickr.com/photos/gsx-r750/1475603952/
  • 24. How to call WikiSlurp • http://yoursite.com/wikislurp/? secret=YOUR+SECRET&query=one+flew +over+the+cuckoo’s +nest&context=book&xpath=/html/body/ p[position()<=3]&section=0&output=json
  • 25. And from PHP? $s = curl_init(); curl_setopt($s,CURLOPT_URL, $url); curl_setopt($s,CURLOPT_HEADER,false); curl_setopt($s, CURLOPT_RETURNTRANSFER,1); // wait 1 second, then abort curl_setopt($s,CURLOPT_TIMEOUT,1); $result = curl_exec($s); curl_close( $s );
  • 26. XPath? Query Gives You //p All <p> All <p> directly under /html/body/p <body> /html/body/p[2] 2nd <p> directly... /html/body/ First three <p> directly... p[position()<=3]
  • 27. Oh noes, more XPath Query Gives You All <p> with single class /html/body/p[@class='fish'] “fish” /html/body/ All <p> with any class p[contains(concat(quot; including “fish” quot;,@class,quot; quot;), quot; fish quot;)]
  • 28. Phew. Have another kitten. http://www.flickr.com/photos/evapro/305689596/
  • 29. Future Features • Do something intelligent with context. • Convert to HTML without an extra API call. • Return proper error codes if things go wrong.
  • 30. Where is this used? • TheTenWordReview.com • IsNeilAnnoyedBy.com
  • 31. Questions? • I will blog about this talk at The Code Train. • No, really - I will. • Download the slurpy source code from http://thecodetrain.co.uk/code/wikislurp • Slides? http://icanhaz.com/wikislurpslides • I was and am http://NeilCrosby.com/vcard