Переменная справки Python Trim в одинарной и двойной скобках
Мои коды Scrapy возвращают мне текст -
<img src="//d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/65115.gif" itemprop="image" alt="Gourmet Sushi" width="100" height="100" onerror="this.onerror = null;this.src = '//dy3erx8o0a6nh.cloudfront.net/images/serp/serp_default_logo.svg';">
Как обрезать его от src="//
в "
,
Я очень новичок в Python.
2 ответа
Вы должны использовать регулярное выражение Python. Вот пример из интерпретатора Python. Попробуйте и примите, если это соответствует вашим потребностям.
>>> import re
>>> s = '<img src="//d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/65115.gif" itemprop="image" alt="Gourmet Sushi" width="100" height="100" onerror="this.onerror = null;this.src = \'//dy3erx8o0a6nh.cloudfront.net/images/serp/serp_default_logo.svg\';">'
>>> pattern = re.compile(r'<img\s+src="//([^"]+)".*')
>>> for i in pattern.findall(s):
... print(i)
d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/65115.gif
Проверьте этот фрагмент. Вы можете применить регулярные выражения к селекторам:
>>> from scrapy import Selector
>>> txt = """<img src="//d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/65115.gif" itemprop="image" alt="Gourmet Sushi" width="100" height="100" onerror="this.onerror = null;this.src = '//dy3erx8o0a6nh.cloudfront.net/images/serp/serp_default_logo.svg';">"""
>>> sel = Selector(text=txt)
>>> sel.re("src\s?=\s?['\"]([^'\"]+)['\"]")
[u'//d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/65115.gif', u'//dy3erx8o0a6nh.cloudfront.net/images/serp/serp_default_logo.svg']
Итак, и тогда вы можете сделать [response.urljoin(url) for url in sel.re("src\s?=\s?['\"]([^'\"]+)['\"]")]