2017-10-05 1 views
-3

J'utilise beautifulsoup pour ajouter tout le lien dans le tableau "get_link".Comment se déshabiller d'une chaîne en Python?

get_link = [] 
for a in soup.find_all('a', href=True): 
    if a.get_text(strip=True): 
    get_link .append(a['href']) 

Sortie de get_link:

['index.html?country=2', 
'index.html?country=25', 
'index.html?country=1', 
'index.html?country=6', 
'index.html?country=2'] 

Comment obtenir la sortie suivante?

[country=2', 
country=25', 
country=1', 
country=6', 
country=2'] 
+0

Je ne comprends pas ce que vous demandez. Votre titre a peu ou rien à voir avec le code que vous avez montré. Essaies-tu simplement de comprendre comment obtenir la partie 'country = ...' de chacune de vos chaînes 'index.html? Country = ...'? Cela semble être facile avec 'str.index' et une tranche, mais je vais écrire une réponse disant que quand je ne suis pas du tout sûr que c'est vraiment ce que vous demandez. – Blckknght

+0

@Blckknght mon anglais n'est pas bon c'est pourquoi je ne pouvais pas expliquer mieux. Y at-il un moyen d'utiliser la fonction droite, gauche avec un tableau afin que je puisse garder seulement le texte nécessaire de tableau get_link –

+0

Je suis désolé, je n'ai toujours aucune idée de ce que vous entendez par "droite, gauche fonction". Si tous vos liens sont du même type (ils commencent toujours par 'index.html?' Et c'est ce que vous voulez couper, vous pourriez faire 'get_link.append (a ['href'] [11:]) Le '[11:]' est une tranche qui coupe les 11 premiers caractères.Si vos liens peuvent sembler différents, vous aurez peut-être besoin d'une logique plus sophistiquée: – Blckknght

Répondre

1

L'approche optimisée pour obtenir tous les a tags (liens) avec une valeur de texte non vide et href attribut:

links = [l.get('href').replace('index.html?','') 
     for l in soup.find_all('a', href=True, string=True) if l.text.strip()] 
print(links) 
+0

Oui, Ceci est une autre façon de supprimer "index.html?" Merci! –

+0

@RajuSingh, je vous en prie – RomanPerekhrest

0

Il y a plusieurs façons d'obtenir que « country = » certains sont déjà en BS4 mais si vous voulez, vous pouvez utiliser regex:

import re 
ui=['index.html?country=2', 
'index.html?country=25', 
'index.html?country=1', 
'index.html?country=6', 
'index.html?country=2'] 





pattern=r'(country=[0-9]{0,99})' 



print("\n".join([re.search(pattern,i).group() for i in ui])) 

résultat:

country=2 
country=25 
country=1 
country=6 
country=2