2017-02-06 2 views
0

Я использую Beautiful Soup для чтения данных HTML. После прочтения я хочу удалить некоторые якорные метки. Вот мой код:Как удалить метки привязки из супа Python

import urllib 
from bs4 import BeautifulSoup 

url=raw_input("enter url:") 
html=urllib.urlopen(url).read() 
soup=BeautifulSoup(html) 

tags=soup('a') 

Вывод тегов в виде:

[<a href="https://www.naukri.com/psu-government-jobs" target="_blank"   
    title="Govt. Jobs">Govt. Jobs</a>, 
<a href="https://www.naukri.com/international-jobs" target="_blank"  
    title="International Jobs">International Jobs</a>, 
<a href="https://www.naukri.com/top-company-jobs" target="_blank" 
title="Jobs by Company">Jobs by Company</a>, 
<a href="https://www.naukri.com/jobs-by-category" target="_blank" 
    title="Jobs by Category">Jobs by Category</a>, 
<a href="https://www.naukri.com/top-jobs-by-designations" target="_blank" 
title="Jobs by Designation">Jobs by Designation</a>, 
    <a target="_blank">Information</a>, 
<a href="https://www.naukri.com/jobs-by-location" target="_blank"   
    title="Jobs by Location">Jobs by Location</a>, 
<a href="https://www.naukri.com/top-skill-jobs" target="_blank" 
title="Jobs by Skill">Jobs by Skill</a>] 

Я хочу, чтобы удалить все якоря теги, в которых происходит после тега

" <a target="_blank">Information</a>" 

Как я могу сделай это??

+0

Непонятно, что вы просите - тег, который вы предлагаете, не отображается в коде, который вы указали, попробуйте сделать [MCVE] (http://stackoverflow.com/help/mcve) проблемы, которую вы иметь. – asongtoruin

+0

Выход не отформатирован, каждый элемент в списке тегов является str? –

ответ

0

Гадать, что каждый элемент в списке тегов тип ул, вы можете сделать:

Append каждый элемент в новый список, если у вас есть запрашиваемая строка в некотором элементе вставить его и разорвать петлю.

new_li = [] 
for tag in tags: 
    if "Information</a>" in tag: 
    new_li.append(tag) 
    break 
    else: 
    new_li.append(tag) 

print (new_li) 

Вам не нужно создавать новый список, вы можете изменить тот же массив, выполнив:

for index in range(len(tags)): 
    if "Information</a>" in tags[index]: 
    index += 1 
    break 

tags = tags [:index] 
print (tags) 

перебора каждый элемент в списке, разорвать петлю при встрече запрашиваемой строки, и чем переопределить список с тем же списком, который ограничен соответствующим индексом.

+0

omri_saadon: почему вы не используете tag.text == 'Информация'.? –

+0

@VidyaSagar Я не был уверен, весь ли элемент str или нет. Предполагая, что это str и по данной информации, которую дает OP, вот что я написал. Его можно протестировать с помощью tag.text, как вы сказали. –