XPATH işlevleri ve gelişmiş koşullar

R ile Web Kazıma

Timo Grossenbacher

Instructor

position() işlevi

...
<ol>
  <li>Birinci öğe.</li>
  <li>İkinci öğe.</li>
  <li>Üçüncü öğe.</li>
  <li>Dördüncü öğe.</li>
  <li>Beşinci öğe.</li>
</ol>
...
html %>% 
  html_elements(xpath = 
             '//ol/li[position() = 2]')
# Equivalent CSS selector: 
# ol > li:nth-child(2)
{xml_nodeset (1)}
[1] <li>İkinci öğe.</li>
R ile Web Kazıma

position() için daha fazla karşılaştırma

...
<ol>
  <li>Birinci öğe.</li>
  <li>İkinci öğe.</li>
  <li>Üçüncü öğe.</li>
  <li>Dördüncü öğe.</li>
  <li>Beşinci öğe.</li>
</ol>
...
html %>% 
  html_elements(xpath = 
             '//ol/li[position() < 3]')
{xml_nodeset (2)}
[1] <li>Birinci öğe.</li>
[2] <li>İkinci öğe.</li>
R ile Web Kazıma

position() için daha fazla karşılaştırma

...
<ol>
  <li>Birinci öğe.</li>
  <li>İkinci öğe.</li>
  <li>Üçüncü öğe.</li>
  <li>Dördüncü öğe.</li>
  <li>Beşinci öğe.</li>
</ol>
...
html %>% 
  html_elements(xpath = 
             '//ol/li[position() != 3]')
{xml_nodeset (4)}
[1] <li>Birinci öğe.</li>
[2] <li>İkinci öğe.</li>
[3] <li>Dördüncü öğe.</li>
[4] <li>Beşinci öğe.</li>
R ile Web Kazıma

Koşulları birleştirme

...
<ol>
  <li class = 'blue'>Birinci öğe.</li>
  <li>İkinci öğe.</li>
  <li class = 'blue'>Üçüncü öğe.</li>
  <li>Dördüncü öğe.</li>
  <li class = 'blue'>Beşinci öğe.</li>
</ol>
...
html %>% 
  html_elements(xpath = 
  '//ol/li[position() != 3 and @class = "blue"]')
{xml_nodeset (2)}
[1] <li class="blue">Birinci öğe.</li>
[2] <li class="blue">Beşinci öğe.</li>
html %>% 
  html_elements(xpath = 
  '//ol/li[position() != 3 or @class = "blue"]')
{xml_nodeset (5)}
...
R ile Web Kazıma

count() işlevi

...
<ol>
  <li class = 'blue'>Birinci öğe.</li>
  <li>İkinci öğe.</li>
  <li class = 'blue'>Üçüncü öğe.</li>
</ol>
<ol>
  <li class = 'red'>Birinci öğe.</li>
  <li>İkinci öğe.</li>
</ol>
...
html %>% 
  html_elements(xpath = '//ol[count(li) = 2]')
{xml_nodeset (1)}
[1] <ol>\n<li class="red">...
html %>% 
  html_elements(xpath = '//ol[count(li) > 2]')
{xml_nodeset (1)}
[1] <ol>\n<li class="blue">...
R ile Web Kazıma

Hadi bazı işlevleri deneyelim!

R ile Web Kazıma

Preparing Video For Download...