#python #python-2.7 #beautifulsoup #data-cleaning
#python #python-2.7 #beautifulsoup #очистка данных
Вопрос:
У меня есть несколько HTML-тегов, я хочу извлечь только содержимое 1-го href=»…», например, эту единственную строку данных.
<a class="product-link" data-styleid="1424359" href="/tops/biba/biba-beige--pink-women-floral-print-top/1424359/buy?src=search"><img _src="http://assets.myntassets.com/h_240,q_95,w_180/v1/assets/images/1424359/2016/9/28/11475053941748-BIBA-Beige--Pink-Floral-Print-Kurti-7191475053941511-1_mini.jpg" _src2="http://assets.myntassets.com/h_307,q_95,w_230/v1/assets/images/1424359/2016/9/28/11475053941748-BIBA-Beige--Pink-Floral-Print-Kurti-7191475053941511-1_mini.jpg" alt="BIBA Beige amp;amp; Pink Women Floral Print Top" class="lazy loading thumb" onerror="this.className='thumb error'" onload="this.className='thumb'"/><div class="brand">Biba</div><div class="product">Beige amp;amp; Pink Women Floral Print Top</div><div class="price">Rs. 899</div><div class="sizes">Sizes: S, L, XL, XXL</div></a>
Я хочу только /tops/biba/biba-beige--pink-women-floral-print-top/1424359/buy?src=search
в качестве вывода
Код выглядит следующим образом:
from bs4 import BeautifulSoup
import urllib
x=urllib.urlopen("http://www.myntra.com/tops-tees-menu/")
soup2 = BeautifulSoup(x, 'html.parser')
for i in soup2.find_all('a', attrs={'class': 'product-link'}):
print i
print i.find('a')['href']
Комментарии:
1.
i
привязан к каждому элементу <a> . И затем вы пытаетесьfind()
<a> элементы внутри <a> элементов, к которым привязаныi
. Эти вложенные ссылки не существуют. Вместо этого вам нужен атрибут hrefi
непосредственно из объекта.i
это очень плохое название для чего-то, что не является целым числом, особенно в качестве переменной цикла. Это сбивает с толку большинство программистов.
Ответ №1:
Если вам нужна одна «ссылка на продукт», просто используйте find()
:
soup2.find('a', attrs={'class': 'product-link'})["href"]
Обратите внимание, что вы также можете использовать метод определения местоположения CSS-селектора:
soup2.select_one('a.product-link')["href"]