Я хочу получить ссылку на изображение внутри тега описания RSS-канала - PullRequest
2 голосов
/ 06 мая 2019

Я хочу получить ссылку на изображение внутри тега описания RSS-канала.

Используя feedparser, мы получили значения в теге описания. Но я хочу получить ссылку на изображение внутри этого тега.

<description><![CDATA[<div class="K2FeedImage"><img src="https://srilankamirror.com/media/k2/items/cache/25a3bb259efa21fc96901ad625f3a85d_S.jpg" alt="MP Piyasena sentenced to 4 years in prison" /></div><div class="K2FeedIntroText"><p>Former Tamil National Alliance (TNA) parliamentarian, P. Piyasena has been sentenced to 4 years in prison and fined Rs.</p>
</div><div class="K2FeedFullText">
<p>5.4 million for using state-owned vehicle for an year after losing his parliamentary seat.</p></div>]]></description>

Затем я попытался использовать его подстроку в python.

import re

text =  "<![CDATA[<img src='https://adaderanaenglish.s3.amazonaws.com/' width='60' align='left' hspace='5'/>Former Tamil National Alliance (TNA) MP P. Piyasena had been sentenced to 4 years in prison over a case of misusing a state vehicle after losing his MP post. MORE..]]>"

match = re.search("<img src=\"(.+?) \"", text, flags=re.IGNORECASE)

try:
    result = match.group(1)
except:
    result = "no match found"

print(result)

C: /Users/ASUS/Desktop/untitled/a.py

совпадений не найдено

Процесс завершен с кодом выхода 0

Ответы [ 3 ]

1 голос
/ 06 мая 2019

Вы также можете использовать сплит.Это полностью зависит от того, что вы уже выделили правильный тег, который упоминаете в своем вопросе.Итак, вы работаете с text.

text = '''
<description><![CDATA[<div class="K2FeedImage"><img src="https://srilankamirror.com/media/k2/items/cache/25a3bb259efa21fc96901ad625f3a85d_S.jpg" alt="MP Piyasena sentenced to 4 years in prison" /></div><div class="K2FeedIntroText"><p>Former Tamil National Alliance (TNA) parliamentarian, P. Piyasena has been sentenced to 4 years in prison and fined Rs.</p>
</div><div class="K2FeedFullText">
<p>5.4 million for using state-owned vehicle for an year after losing his parliamentary seat.</p></div>]]></description>
'''

link = text.split('src="')[1].split('"')[0] 
print(link)
1 голос
/ 06 мая 2019

Вы можете получить ссылку на изображение без регулярного выражения. Попробуйте приведенный ниже код. Сначала он найдет элемент next_element, а затем снова получит суп, чтобы получить ссылку на изображение.

from bs4 import BeautifulSoup

data='''<description><![CDATA[<div class="K2FeedImage"><img src="https://srilankamirror.com/media/k2/items/cache/25a3bb259efa21fc96901ad625f3a85d_S.jpg" alt="MP Piyasena sentenced to 4 years in prison" /></div><div class="K2FeedIntroText"><p>Former Tamil National Alliance (TNA) parliamentarian, P. Piyasena has been sentenced to 4 years in prison and fined Rs.</p>
</div><div class="K2FeedFullText">
<p>5.4 million for using state-owned vehicle for an year after losing his parliamentary seat.</p></div>]]></description>'''

soup=BeautifulSoup(data,'html.parser')
item=soup.find('description')
data1=item.next_element
soup1=BeautifulSoup(data1,'html.parser')
print(soup1.find('img')['src'])

Выход:

https://srilankamirror.com/media/k2/items/cache/25a3bb259efa21fc96901ad625f3a85d_S.jpg
1 голос
/ 06 мая 2019

Вам нужно немного изменить свое регулярное выражение, чтобы оно работало. Вам нужно получить содержимое сразу после src= и немедленно остановиться (ленивый поиск), когда вы встретите символ '. Итак, ваше регулярное выражение должно быть:

match = re.search("src='+(.*?)'",text)

Вы можете посетить это , чтобы помочь вам с регулярным выражением.

...