2017-05-27 139 views
-1

一定網址我有一個字符串,例如:查找字符串的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}] 

我想提取包含在它imgur.com從該字符串的URL。

這樣做最簡單的方法是什麼?

+0

1.這是一個字典不是一個字符串。 2.如果你想從HTML中提取某些東西,你是否考慮過HTML解析器? – jonrsharpe

回答

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

我建議你使用美麗的湯。你已經有一個HTML代碼作爲字符串。請參閱以下代碼片段。現在你已經有了所有的錨定標記,你可以從the hrefs中進一步尋找子字符串「imgur.com」並獲得特定的鏈接。

from bs4 import BeautifulSoup 

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

使用XML/HTML解析器是操作XML/HTML文件/ fragmets有道:

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) 

輸出:

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

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