нужна только ссылка в качестве вывода

#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 . Эти вложенные ссылки не существуют. Вместо этого вам нужен атрибут href i непосредственно из объекта. i это очень плохое название для чего-то, что не является целым числом, особенно в качестве переменной цикла. Это сбивает с толку большинство программистов.

Ответ №1:

Если вам нужна одна «ссылка на продукт», просто используйте find() :

 soup2.find('a', attrs={'class': 'product-link'})["href"]
  

Обратите внимание, что вы также можете использовать метод определения местоположения CSS-селектора:

 soup2.select_one('a.product-link')["href"]