2012-02-14 12 views

Odpowiedz

9

Masz kilka opcji - szybkie i brudne lub właściwą drogę. Szybki i brudny sposób (które mogą łatwo pęknąć, jeśli zostanie zmieniony znaczników) wygląda

>>> from BeautifulSoup import BeautifulSoup 
>>> import re 
>>> soup = BeautifulSoup('<html><body><img style="background:url(/theRealImage.jpg) no-repate 0 0; height:90px; width:92px;") src="notTheRealImage.jpg"/></body></html>') 
>>> style = soup.find('img')['style'] 
>>> urls = re.findall('url\((.*?)\)', style) 
>>> urls 
[u'/theRealImage.jpg'] 

Oczywiście, trzeba grać z tym, by zmusić go do pracy z wieloma img tagów.

Właściwy sposób, ponieważ czułbym się okropnie sugerując, że ktoś używa regex na ciągu CSS :), używa parsera CSS. cssutils, biblioteka, którą właśnie znalazłem w Google i jest dostępna w PyPi, wygląda na to, że może wykonać to zadanie.

+2

Dołączyłem straszną metodę regex, ponieważ zdaję sobie sprawę, że mnóstwo zadań skrobania jest jednorazowych, ale jeśli ten kod będzie trwał więcej niż jeden dzień, powinien użyć czegoś lepszego, na przykład parsera CSS. Powyższy przykład jest znowu bardzo łamliwy. –

Powiązane problemy