2015-11-21 3 views
2

Я пытаюсь извлечь URL-адрес источника изображения из тега HTML img.Как извлечь src в тег img с регулярным выражением?

если HTML данные, как показано ниже:

<div> My profile <img width='300' height='300' src='http://domain.com/profile.jpg'> </div> 

или

<div> My profile <img width="300" height="300" src="http://domain.com/profile.jpg"> </div> 

, как это регулярное выражение в Python?

Я попытался ниже:

i = re.compile('(?P<src>src=[["[^"]+"][\'[^\']+\']])') 
i.search(htmldata) 

, но я получил ошибку

Traceback (most recent call last): 
File "<input>", line 1, in <module> 
AttributeError: 'NoneType' object has no attribute 'group' 
+0

Вы уже пытались создать регулярное выражение себя; что поможет – Evert

+0

Вышеуказанные 2 строки кода не дают вам этой ошибки. – Evert

+0

Возможный дубликат [Python Regex String Extraction] (http://stackoverflow.com/questions/7384275/python-regex-string-extraction) – ozy

ответ

9

BeautifulSoup анализатор путь.

>>> from bs4 import BeautifulSoup 
>>> s = '''<div> My profile <img width='300' height='300' src='http://domain.com/profile.jpg'> </div>''' 
>>> soup = BeautifulSoup(s, 'html.parser') 
>>> img = soup.select('img') 
>>> [i['src'] for i in img if i['src']] 
[u'http://domain.com/profile.jpg'] 
>>> 
+1

или 'img.get ('src')' –

3

Я немного адаптировал ваш код. Пожалуйста, обратите внимание:

import re 

url = """<div> My profile <img width="300" height="300" src="http://domain.com/profile.jpg"> </div>""" 
ur11 = """<div> My profile <img width='300' height='300' src='http://domain.com/profile.jpg'> </div>""" 

link = re.compile("""src=[\"\'](.+)[\"\']""") 

links = link.finditer(url) 
for l in links: 
    print l.group() 
    print l.groups() 

links1 = link.finditer(ur11) 
for l in links1: 
    print l.groups() 

В l.groups() вы можете найти по ссылке.

Выход заключается в следующем:

src="http://domain.com/profile.jpg" 
('http://domain.com/profile.jpg',) 
('http://domain.com/profile.jpg',) 

finditer() представляет собой генератор, и позволяет использовать for in петлю.

Источники:

http://www.tutorialspoint.com/python/python_reg_expressions.htm

https://docs.python.org/2/howto/regex.html

Смежные вопросы