Wyciągnięcie danych ze stringu

0

Witam

Próbuje ściągnąć z tej strony https://pl.wikipedia.org/wiki/Lista_pa%C5%84stw_%C5%9Bwiata_wed%C5%82ug_kontynent%C3%B3w wszystkie nazwy państw wraz ze stolicami i walutami. Na razie, zakładając że już całe źródło strony będe mieć ściągnięte w postaci stringu, ułożyłem wzór wyciągający państwo, stolice i walute. Sprawdzałem go po kilka razy i nie widze żadnego błędu, ale nic się nie wypisuje. Czy ktoś może to zweryfikować? Ten string jest na przykładzie jednego państwa, każde inne jest zapisane w takich samych znacznikach.

import re

x = '''<tr> <td><span class="flagicon"><img alt=""
src="//upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Norway.svg/22px-Flag_of_Norway.svg.png"
width="22" height="16" class="thumbborder"
srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Norway.svg/33px-Flag_of_Norway.svg.png
1.5x,
//upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Norway.svg/44px-Flag_of_Norway.svg.png
2x" data-file-width="1100" data-file-height="800" />&#160;</span><a
href="/wiki/Norwegia" title="Norwegia">Norwegia</a></td> <td><a
href="/wiki/Oslo" title="Oslo">Oslo</a></td> <td>Królestwo Norwegii</td>
<td><a href="/wiki/Monarchia_konstytucyjna" title="Monarchia
konstytucyjna">monarchia konstytucyjna</a></td> <td><a
href="/wiki/Język_norweski" title="Język
norweski">norweski</a></td> <td><a href="/wiki/Korona_norweska"
title="Korona norweska">Korona norweska</a></td> </tr> <tr>'''

for el in re.findall("\<\/span\>\<a href\=\".+\" title\=\"(.+)\"\>.+\<\/a\>.+title\=\"(.+)\"\<.+title\=\"(.+)\"\<\/a\>\<\/td\> \<\/tr\>", x):
    print el
0

https://pl.wikipedia.org/w/api.php?format=json&action=query&titles=Lista_pa%C5%84stw_%C5%9Bwiata_wed%C5%82ug_kontynent%C3%B3w&prop=revisions&rvprop=content&callback=? Spróbuj wydobić z tego linka te wartości z JSONa. Albo zrób programik w Selenium, który wbije Ci te wartości ze stronki.

1

BeautifulSoup?

0
NoZi napisał(a):

BeautifulSoup?

To najlepszy pomysł.

1
Wizzie napisał(a):

Tu jest odpowiedź ':)

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454

Ci na stacku jak widać nie zawsze się znają na rzeczy. Wystarczyło dodać kilka znaków nowej linii i teraz wypisuje mi dokładnie tak jak chce.

for el in re.findall("\<\/span\>\<a\nhref\=\".+\" title\=\"(.+)\"\>.+\<\/a\>\<\/td\> \<td\>\<a\n.+title\=\"(.+)\".+\n.+\n.+\n.+\n.+\ntitle\=\"(.+)\"", x):
    print el

>>> ('Norwegia', 'Oslo', 'Korona norweska')

1 użytkowników online, w tym zalogowanych: 0, gości: 1