Pakiet XML - Maciej Beręsewicz

18
Pakiet XML Czym jest i z czym się je? mgr Maciej Beręsewicz Katedra Statystyki, UE w Poznaniu c Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Transcript of Pakiet XML - Maciej Beręsewicz

Page 1: Pakiet XML - Maciej Beręsewicz

Pakiet XMLCzym jest i z czym się je?

mgr Maciej Beręsewicz

Katedra Statystyki, UE w Poznaniu

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 2: Pakiet XML - Maciej Beręsewicz

Spis treści

1. Web–scraping

2. XML

3. XPath4. Pakiet XML4.1 Allegro.pl4.2 Last.fm4.3 Poznan.gumtree.pl

5. Podsumowanie

6. Przydatne Linki

7. Kontakt

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 3: Pakiet XML - Maciej Beręsewicz

Web–scraping

Web–scraping

Web–scraping – jest metodą ekstrakcji informacji ze stron internetowych. Symuluje poruszanie się człowieka po stronachinternetowych wykorzystując między innymi pająka internetowego. Wykorzystywane głównie do pobierania danych w celu ichanalizy, porównywania cen, tworzenia zbiorczych stron internetowych czy integracji źródeł danych.

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 4: Pakiet XML - Maciej Beręsewicz

XML

Język XML

XML (ang.Extensible Markup Language, pol.Rozszerzalny Język Znaczników) – uniwersalny język formalny przeznaczony doreprezentowania różnych danych w strukturyzowalny sposób. XML jest niezależny od platformy, co umożliwia łatwą wymianędokumentów pomiędzy heterogenicznymi (różnymi) systemami i znacząco przyczyniło się do popularności tego języka w dobieInternetu. XML jest standardem rekomendowanym oraz specyfikowanym przez organizację W3C.

Przykładowy kod – last.fm

<? xml v e r s i o n=” 1 . 0 ” e n c o d i n g=” u t f−8”?><b o o k s t o r e>

<book c a t e g o r y=”COOKING”>< t i t l e l a n g=” en ”>Everyday I t a l i a n</ t i t l e><a u t h o r>Giada De L a u r e n t i i s</ a u t h o r><y e a r>2005</ y e a r><p r i c e>3 0 . 0 0</ p r i c e>

</ book><book c a t e g o r y=”CHILDREN”>

< t i t l e l a n g=” en ”>Harry P o t t e r</ t i t l e><a u t h o r>J K. Rowl ing</ a u t h o r><y e a r>2005</ y e a r><p r i c e>2 9 . 9 9</ p r i c e>

</ book></ b o o k s t o r e>

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 5: Pakiet XML - Maciej Beręsewicz

XPath

XPath

XPath (ang. XML Path Language, w wolnym tłumaczeniu Język ścieżek XML, Język ścieżek rozszerzalnego języka znaczników)– język służący do adresowania części dokumentu XML. Dzięki temu możliwe jest adresowanie po nazwie, obecności atrybutów(w ogóle), atrybutów, które zawierają określone wartości, określone węzły (parent, child).

Przykładowy kod

xml . s e t P r o p e r t y ( ” S e l e c t i o n L a n g u a g e ” , ”XPath” ) ;xml . s e l e c t N o d e s ( ”/ b o o k s t o r e / book [ 1 ] / t i t l e ” ) ;xml . s e l e c t N o d e s ( ”/ b o o k s t o r e / book / p r i c e / t e x t ( ) ” ) ;xml . s e l e c t N o d e s ( ”/ b o o k s t o r e / book [ p r i c e >35]/ p r i c e ” ) ;xml . s e l e c t N o d e s ( ”/ b o o k s t o r e / book [ p r i c e >35]/ t i t l e ” ) ;

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 6: Pakiet XML - Maciej Beręsewicz

Pakiet XML

Duncan Temple Lang

http://anson.ucdavis.edu/~duncan/

Pakiet XML

I Obecnie dostępny w wersji 3.9-4

I opis: http://cran.r-project.org/web/packages/XML/XML.pdf

I Jest jednym z wielu pakietów stworzonymprzez Duncana,

I Służy do tworzenia, zarządzania orazprzetwarzania plików XML,

I resztę pakietów (zwłaszcza RCurl) możnaznaleźć pod adresemhttp://www.omegahat.org/

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 7: Pakiet XML - Maciej Beręsewicz

Przydatne funkcje

Pobieranie danych

I htmlParse(x,encoding,...) – funkcja do pobierania stron internetowych w formie pliku XML (zachowanie strukturypliku). X określamy jako adres http danej strony internetowej, funkcja ma dużo opcji, jednak encoding jest jednąz ważniejszych jeżeli chcemy zachować kodowanie strony,

I xmlParse(x,asText,encoding,...) – funkcja do pobierania plików XML, zapisuje cały plik po jego ściągnięciu w pamięci.Podobną funkcją jest xmlTreeParse(x,...),

I readHTMLTable(x,header=NA,which=integer(),colClasses=NULL,..) – funkcja do pobierania tabel ze stroninternetowych lub plików tekstowych o strukturze pliku XML/HTML. Najważniejszy z punktu naszego punktu widzeniajest parametr which określający, którą tabelę należy pobrać. Pozostałe argumenty funkcji tak jak w as.data.frame.

Przetwarzanie danych

I XPathApply(doc,path) – funkcja do pobierania danych argumentów z pliku klasy XMLInternalDocument lubHTMLInternalDocument, które muszą być argumentem określonym jako doc. Parametr path określa ścieżkę doposzukiwanej przez Nas wartości. Struktura zmiennej path jest taka sama jak w języki XPath. Innymi odpowiednikamitej funkcji są getNodeSet i xpathSApply ,

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 8: Pakiet XML - Maciej Beręsewicz

Allegro.pl

Case study

Moim celem jest sprawdzenie ile kosztują strony z fanami na allegro.pl czyli ile kosztuje jeden fan?

Rozwiązanie

l i b r a r y (XML)u r l<−” h t t p : // a l l e g r o . p l / l i s t i n g . php/ s e a r c h ? c a t e g o r y =15821& s t r i n g=Fan i+f a c e b o o k&p=1”doc<−h t m l P a r s e ( u r l , e n c o d i n g= ’ u t f−8 ’ )t a b l<−readHTMLTable ( doc , which =5)t a b l<−t a b l [ ,−1]

Wyniki

Krótka statystyka z rana: 67 ofert sprzedaży fanpagów na allegro (tzn. farm fanów), gdzie średnia cena wynosiła 277.70 zł,mediana 79.99 zł, min 1.00 zł a max 5000.00zł. Ta najdroższa dotyczyła sprzedaży pakietu 1 mln fanów, czyli jeden fankosztował 0,005 zł. ¨̂

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 9: Pakiet XML - Maciej Beręsewicz

Last.fm

Case Study

Moim celem było sprawdzenie jak bardzo zwiększyła się popularność Whitney Houston poprzez analizę komentarzy na jej profiluna portalu muzycznym last.fm. Portal ten oferuje ściąganie danych w formie XML dzięki API (ang.Application ProgrammingInterface), można oczywiście ściągać dane przez stronę ale nie mamy takich szczegółowych danych. Dzięki temu mamy łatwośćznalezienia interesującej nas pozycji. Wszystkie dostępne API możemy znaleźć pod adresem: http://www.lastfm.pl/api.Należy zapisać się na tej stronie aby dostać klucz do ściągania danych.

Dane mogę ściągnać dzięki http://www.lastfm.pl/api/show/artist.getShouts

Przykład danych

<s h o u t s a r t i s t=” Whitney Houston ” page=”1” perPage=”50” t o t a l P a g e s=” 127 ” t o t a l=” 6316 ”><s h o u t>

<body>Blah</ body><a u t h o r>j o a n o f a r c t a n</ a u t h o r><d a t e>F r i , 12 Dec 2008 13 : 2 0 : 4 1</ d a t e>

</ s h o u t>. . .

</ s h o u t s>

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 10: Pakiet XML - Maciej Beręsewicz

Last.fm

Kod do ściągnięcia danych

g e t S h o u t s<−f u n c t i o n ( x ){r e q u i r e (XML)doc<−xmlParse ( x , e n c o d i n g= ’ u t f−8 ’ )shout<−xpathApp ly ( doc , ’ // s h o u t // body ’ , xmlValue )who<−xpathApp ly ( doc , ’ // s h o u t // a u t h o r ’ , xmlValue )when<−xpathApp ly ( doc , ’ // s h o u t // d a t e ’ , xmlValue )a<−c b i n d ( who , when , s h o u t )a

}u r l s<−p a s t e ( ” h t t p : //ws . a u d i o s c r o b b l e r . com / 2 . 0 / ? method=a r t i s t . g e t s h o u t s& a r t i s t=Whitney+

Houston&a p i k e y=b25b959554ed76058ac220b7b2e0a026&p a s t e=” ,1 : 1 2 7 )WHITNEY<− l i s t ( )f o r ( i i n 1 : 1 2 7 ){

Sys . s l e e p ( 0 . 5 )WHITNEY [ [ i ]]<−g e t S h o u t s ( u r l s [ i ] )

}WHITNEY<−do . c a l l ( ’ r b i n d ’ ,WHITNEY)

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 11: Pakiet XML - Maciej Beręsewicz

Last.fm

Liczba komentarzy na profilu Whitney Houston na Last.fm

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 12: Pakiet XML - Maciej Beręsewicz

Poznan.gumtree.pl

Case study

Moim celem jest pobranie danych dotyczących mieszkań (sprzedaż mieszkań)

Strona internetowa

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 13: Pakiet XML - Maciej Beręsewicz

Poznan.gumtree.pl

Poznan.gumtree.pl – part 1

N<−109guml inks<−p a s t e ( ” h t t p : // poznan . gumtree . p l / f−Nieruchomosc i−dom−m i e s z k a n i e−d z i a l k e−sprzedam

−W0QQCatIdZ9073QQPageZ” ,1 :N , ”QQSortZ2” , sep=”” )

gumtree<−f u n c t i o n ( x ){r e q u i r e (XML)doc<−h t m l P a r s e ( x , e n c o d i n g=”UTF−8” )l i n k s<−u n l i s t ( xpathApply ( doc , ’ // td [ @ c l a s s=” hgk ” ] / / a ’ , xmlGetAttr , ’ h r e f ’ ) )

f o r ( i i n 1 : l e n g t h ( l i n k s ) ){c a t ( ”================== nowe m i e s z k a n i e==================” , ”\n” )c a t ( ” L i n k : ” , l i n k s [ i ] , ”\n” )doc2<−h t m l P a r s e ( l i n k s [ i ] , e n c o d i n g=”UTF−8” , )Of fe r ID<−xpathApp ly ( doc2 , ’ // i n p u t [ @name=”AdId ” ] ’ , xmlGetAttr , ’ v a l u e ’ ) [ [ 1 ] ] [ 1 ]c a t ( ” O f f e r I D : ” , Of fe r ID , ”\n” )i n f o<−xpathApp ly ( doc2 , ’ // span [ @itemprop=” t i t l e ” ] ’ , xmlValue ) [ [ 4 ] ] [ 1 ]c a t ( ” Type: ” , i n f o , ”\n” )tab<−readHTMLTable ( doc2 ) $ a t t r i b u t e T a b l etab<−r a p p l y ( tab , as . c h a r a c t e r , c l a s s e s=” f a c t o r ” , how=” r e p l a c e ” )tab<−c b i n d ( tab $V1 , tab $V2)f o r ( i i n 1 :nrow ( tab ) ){

c a t ( tab [ i , 1 ] , ” : ” , tab [ i , 2 ] , ”\n” )}

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 14: Pakiet XML - Maciej Beręsewicz

Poznan.gumtree.pl

Poznan.gumtree.pl – part 2

o p i s<−xpathApp ly ( doc2 , ’ // span [ @id=”pr ev i e w−l o c a l−d e s c ” ] ’ , xmlValue ) [ [ 1 ] ] [ 1 ]o p i s<−gsub ( ”\n” , ”” , o p i s )o p i s<−gsub ( ”\ t ” , ”” , o p i s )c a t ( ” O p i s : ” , o p i s , ”\n” )l i n k<−p a s t e ( ” h t t p : // poznan . gumtree . p l ” , u n l i s t ( xpathApply ( doc2 , ’ // t a b l e [ @id=”

a t t r i b u t e T a b l e ” ] / / td // a ’ , xmlGetAttr , ’ h r e f ’ ) ) , sep=”” )map<−h t m l P a r s e ( l i n k , e n c o d i n g=”UTF−8” )a<−as . c h a r a c t e r ( u n l i s t ( xpathApply (map , ’ // d i v [ @id=”gmap ” ] / / img ’ , xmlGetAttr , ’

s r c ’ ) ) )i f ( l e n g t h ( a ) !=0) {

a1<−s t r s p l i t ( a , ”=” ) [ [ 1 ] ] [ 2 ]a2<−s t r s p l i t ( a1 , ’%2C ’ )Lat<−as . numer ic ( a2 [ [ 1 ] ] [ 1 ] )Lng<−as . numer ic ( s t r s p l i t ( a2 [ [ 1 ] ] [ 2 ] , ”&zoom” ) [ [ 1 ] ] [ 1 ] )c a t ( ” L a t : ” , Lat , ”\n” )c a t ( ” Lng: ” , Lng , ”\n” )

}

}}s i n k ( ” gumtree . t x t ” )f o r ( j i n 1 :N ) gumtree ( g u m l i n k s [ j ] )s i n k ( )

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 15: Pakiet XML - Maciej Beręsewicz

Podsumowanie

I Bardzo fajny pakiet ¨̂ ,I Problem z JavaScript i AJAX,I Dla każdej strony oddzielny kod,I Problem z https i formularzamiI Najlepiej używać pakiet RCurl i XML.

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 16: Pakiet XML - Maciej Beręsewicz

Przydatne Linki

I Pakiet RCurl – http://www.omegahat.org/RCurl/RCurlJSS.pdf

I Strona z pakietami Duncana – http://www.omegahat.org

I Forum Stackoverflow – http://stackoverflow.com/questions/tagged/r+web-scraping

I Przykład ściągania –http://christophergandrud.blogspot.com/2012/02/how-to-extract-text-from-multiple.html

I Pakiet do ściągania danych z Twiterra–http://cran.r-project.org/web/packages/twitteR/vignettes/twitteR.pdf

I Poradnik do XML – http://www.w3schools.com/xml/default.asp

I Poradnik do XPath – http://www.w3schools.com/xpath/default.asp

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 17: Pakiet XML - Maciej Beręsewicz

Dziękuję za uwagę ¨̂

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu

Page 18: Pakiet XML - Maciej Beręsewicz

Kontakt

Dane kontaktowe:

Maciej Berę[email protected]@gmail.com663062687

c© Katedra Statystyki, Uniwersytet Ekonomiczny w Poznaniu