2016-10-16 4 views
1

Я пытаюсь получить HTML-теги, если у элемента нет текста.
Например: Я просматриваю все атрибуты «a» (URL).
Однако некоторые URL имеют текст в нем, а некоторые нет.
В этом случае я пытаюсь получить URL-адрес для тех, у кого нет текста.
Поэтому я сделал что-то вроде этого.Как получить определенные HTML-теги

response = requests.get('https://fw.tmall.com/tmall/ser/tmall_detail.htm?spm=a1z1g.2177293.0.0.qF9gPO&service_code=ts-4078').text 
soup = BeautifulSoup(response) 
main_wrapper = soup.find('div',attrs={'id':'success-case'}).findAll('a') 
for items in main_wrapper: 
    dictionary = {} 
    href = items['href'] 
    if items.string is None: 
     print items['href'] 
    else: 
     print items.string 

Как это сделать так, чтобы if items.string is None: получить этот пункт конкретный URL только и не все URL?

+0

Можете ли вы прояснить? Что вы получаете? Что вы хотите получить? –

+0

Я хочу получить конкретный атрибут HTML, в этом случае URL-адрес IMG находится внутри , если этот элемент не имеет текста. – Dilli

ответ

0

Я пытаюсь получить URL для тех, которые не имеют текста на нем

Вы можете использовать Список постижение

hrefs = [a['href'] for a in main_wrapper if a.string is None] 

получить этот элемент конкретных URL и только URL-адрес!

Непонятно, что это значит. Каждый тег a имеет только один конкретный URL. Вы итерация список a тегов, поэтому вы получаете список URL-адресов

Я хочу, чтобы получить определенный атрибут HTML, в данном случае это будет URL IMG, что внутри <a>

Тогда вы нужен другой метод find внутри цикла, чтобы извлечь что <img> элемента, чтобы получить атрибут src

+0

Сладкий! Спасибо :) – Dilli

+0

Добро пожаловать. Вы можете использовать галочку рядом с сообщением, чтобы показать свою благодарность. –

0

Я полагаю, вы пытаетесь получить уникальные якоря из неупорядоченного списка внутри вашего div. Вы можете видеть каждый анкер имеет уникальный класс, rel-ink против rel-name:

<a href="//store.taobao.com/shop/view_shop.htm?user_number_id=2469022358" target="_blank" class="rel-ink"><img alt="NIHAOMARKET官方海外旗舰店" src="//img.alicdn.com/top/i1/TB1urimJFXXXXabaXXXwu0bFXXX.png" class="rel-img"></a> 
<a href="//store.taobao.com/shop/view_shop.htm?user_number_id=2469022358" target="_blank" class="rel-name">NIHAOMARKET官方海外旗舰店</a> 

Таким образом, вы можете использовать имя класса якоря для первого якоря внутри каждого лития т.е. отны-чернила, чтобы получить их:

urls =[a["href"] for a in soup.find('div', id="success-case").find_all("a",class_="rel-ink")] 

Или с помощью селектора Css:

urls = [a["href"] for a in soup.select("#success-case ul li a.rel-ink")] 

Оба предоставят вам:

['//store.taobao.com/shop/view_shop.htm?user_number_id=692020965', '//store.taobao.com/shop/view_shop.htm?user_number_id=2087799889', '//store.taobao.com/shop/view_shop.htm?user_number_id=2469022358', '//store.taobao.com/shop/view_shop.htm?user_number_id=377676745', '//store.taobao.com/shop/view_shop.htm?user_number_id=2367059695', '//store.taobao.com/shop/view_shop.htm?user_number_id=449764134', '//store.taobao.com/shop/view_shop.htm?user_number_id=698389964', '//store.taobao.com/shop/view_shop.htm?user_number_id=509711360', '//store.taobao.com/shop/view_shop.htm?user_number_id=692020965', '//store.taobao.com/shop/view_shop.htm?user_number_id=1125022434', '//store.taobao.com/shop/view_shop.htm?user_number_id=1071997040', '//store.taobao.com/shop/view_shop.htm?user_number_id=795947607', '//store.taobao.com/shop/view_shop.htm?user_number_id=509711360', '//store.taobao.com/shop/view_shop.htm?user_number_id=692020965', '//store.taobao.com/shop/view_shop.htm?user_number_id=1071997040', '//store.taobao.com/shop/view_shop.htm?user_number_id=509711360', '//store.taobao.com/shop/view_shop.htm?user_number_id=377676745', '//store.taobao.com/shop/view_shop.htm?user_number_id=2367059695', '//store.taobao.com/shop/view_shop.htm?user_number_id=2469022358'] 
Смежные вопросы