2017-05-27 2 views
-1

ich eine Zeichenfolge, zum Beispiel:Finden Sie eine bestimmte URL in einem String Python

[{'type': 'text/html', 'value': '<table> <tr><td> <a href="https://www.reddit.com/r/wallpapers/comments/6dhhhj/waving_bear/"> <img src="https://b.thumbs.redditmedia.com/v5CaHQ_S-m4L5MUfX2a6ViwZWe2yvft_VyG8Iol0CJs.jpg" alt="Waving bear" title="Waving bear" /> </a> </td><td> &#32; submitted by &#32; <a href="https://www.reddit.com/user/mexicanwave"> /u/mexicanwave </a> <br/> <span><a href="http://i.imgur.com/PMgfJSm.jpg">[link]</a></span> &#32; <span><a href="https://www.reddit.com/r/wallpapers/comments/6dhhhj/waving_bear/">[comments]</a></span> </td></tr></table>', 'base': 'https://www.reddit.com/r/wallpapers.rss', 'language': None}] 

Ich möchte die URL extrahieren, die imgur.com in aus dieser Zeichenfolge enthält.

Was ist der einfachste Weg, das zu tun?

+0

1. Das ist ein Wörterbuch keine Zeichenfolge. 2. Wenn Sie etwas aus HTML extrahieren möchten, haben Sie einen HTML-Parser in Betracht gezogen? – jonrsharpe

Antwort

1
myList = [{'type': 'text/html', 'value': '<table> <tr><td> <a href="https://www.reddit.com/r/wallpapers/comments/6dhhhj/waving_bear/"> <img src="https://b.thumbs.redditmedia.com/v5CaHQ_S-m4L5MUfX2a6ViwZWe2yvft_VyG8Iol0CJs.jpg" alt="Waving bear" title="Waving bear" /> </a> </td><td> &#32; submitted by &#32; <a href="https://www.reddit.com/user/mexicanwave"> /u/mexicanwave </a> <br/> <span><a href="http://i.imgur.com/PMgfJSm.jpg">[link]</a></span> &#32; <span><a href="https://www.reddit.com/r/wallpapers/comments/6dhhhj/waving_bear/">[comments]</a></span> </td></tr></table>', 'base': 'https://www.reddit.com/r/wallpapers.rss', 'language': None}] 

for msg in myList[0]['value'].split(): 
    if 'imgur.com' in msg: 
    print(msg) 

#href="http://i.imgur.com/PMgfJSm.jpg">[link]</a></span>  
0

Ich würde vorschlagen, dass Sie schöne Suppe verwenden. Da Sie bereits einen HTML-Code als String haben. Siehe das folgende Code-Snippet. Nun, da Sie alle Anker-Tags haben, können Sie weiter nach dem Teilstring "imgur.com" von theor hrefs suchen und diesen bestimmten Link erhalten.

from bs4 import BeautifulSoup 

html = your_list[0].value 
soup = BeautifulSoup(html) 
result = soup.find("a") 
1

Verwendung von XML/HTML-Parser ist eine richtige Art und Weise xml/html Dokumente/fragmets zur Manipulation:

from lxml import etree 
from io import StringIO 

data = [{'type': 'text/html', 'value': '<table> <tr><td> <a href="https://www.reddit.com/r/wallpapers/comments/6dhhhj/waving_bear/"> <img src="https://b.thumbs.redditmedia.com/v5CaHQ_S-m4L5MUfX2a6ViwZWe2yvft_VyG8Iol0CJs.jpg" alt="Waving bear" title="Waving bear" /> </a> </td><td> &#32; submitted by &#32; <a href="https://www.reddit.com/user/mexicanwave"> /u/mexicanwave </a> <br/> <span><a href="http://i.imgur.com/PMgfJSm.jpg">[link]</a></span> &#32; <span><a href="https://www.reddit.com/r/wallpapers/comments/6dhhhj/waving_bear/">[comments]</a></span> </td></tr></table>', 'base': 'https://www.reddit.com/r/wallpapers.rss', 'language': None}] 

parser = etree.HTMLParser() # creating parser instance 
html_data = etree.parse(StringIO(data[0]['value']), parser) # parser is fed with html data 
url = [a.attrib['href'] for a in html_data.findall(".//a") if 'imgur.com' in a.attrib['href']] 

print(url) 

Der Ausgang:

['http://i.imgur.com/PMgfJSm.jpg'] 

https://docs.python.org/3.6/library/xml.etree.elementtree.html

Verwandte Themen