0
votes

Comment apporter de manière dynamique une liste à une URL de maître

Pour le moment, disons que c'est le contenu que j'ai raclé: xxx pré>

Je souhaite créer une liste d'URL qui ajout de chacune de la ville à l'URL du Master: https://nomadlist.com code> p>

et je veux le faire comme sur la sortie: P>

https://nomadlist.com/taipei,
https://nomadlist.com/lisbon,
https://nomadlist.com/buenos-aires,
https://nomadlist.com/budapest


3 commentaires

Est-ce quelle liste de cordes les données grattées?


Utilisez une belle soupe pour analyser le HTML et obtenir le texte des ancres. Ensuite, il suffit de le concerner à l'URL Mater.


@Kai, vérifiez ma réponse


4 Réponses :


1
votes

@kai Jinglebell Cheng est ce que vous recherchez? XXX PRE>


Nouvelle réponse après une question mise à jour ci-dessous h2>
nomad_str = '''["<a href="" itemprop="url" title="Taipei for Digital Nomads">Taipei</a>",  
"<a href="" itemprop="url" title="Lisbon for Digital Nomads">Lisbon</a>",  
"<a href="" itemprop="url" title="Buenos Aires for Digital Nomads">Buenos Aires</a>",  
"<a href="" itemprop="url" title="Budapest for Digital Nomads">Budapest</a>"]'''
nomad_str=nomad_str.replace('"<a', "'<a")
nomad_str=nomad_str.replace('a>"', "a>''")
nomad_str=nomad_str.replace("[\'", '')
nomad_str=nomad_str.replace("'\']", '')
nomad_list = nomad_str.split(',')
base_link = 'https://nomadlist.com/'
for nomad in nomad_list:
    city = nomad.split(">")[1].split("<")[0].replace(' ', '-').lower()
    full_link = f'{base_link}{city}'
    print(full_link)


2 commentaires

Merci! Mais ma liste ne contient pas de citation unique, savez-vous comment puis-je les ajouter avant de procéder à votre devis?


@Kaijinglebellcheng Si vous avez gratté les données, cela ne devrait pas être au format dans votre question? Sinon, il est impossible d'assigner comme une liste. Si vous aviez besoin de manipuler d'abord des données HTE sur la liste, vous pouvez mettre des citations autour du support et commencer à manipuler les données et à le transformer de là, mais je ne vois pas le point de l'exercice. Si vous avez gratté les données, je ne pense pas que cela devrait apparaître comme ça? Mais je pourrais avoir tort. J'ai changé ma réponse, sans distinction.



-1
votes

en JavaScript, vous pouvez faire quelque chose comme ça. Vous pouvez utiliser la même logique et modifier la syntaxe vers Python.

p>

var baseURL = 'https://nomadlist.com/';
var urls = [];

var strings = ['<a href="" itemprop="url" title="Taipei for Digital Nomads">Taipei</a>','<a href="" itemprop="url" title="Lisbon for Digital Nomads">Lisbon</a>',  
'<a href="" itemprop="url" title="Buenos Aires for Digital Nomads">Buenos Aires</a>',  
'<a href="" itemprop="url" title="Budapest for Digital Nomads">Budapest</a>'];

strings.forEach( x => {
  urls.push(baseURL + x.replace(/<(?:.|\n)*?>/gm, '').toLowerCase().replace(" ","-"));
});

console.log(urls);


2 commentaires

Je pense qu'il demande des solutions Python.!


@Juhilsomaiya j'ai écrit que sur le dessus



0
votes

Voici la solution, utilisez le package Python BS4.

['https://nomadlist.com/taipei', 'https://nomadlist.com/lisbon', 'https://nomadlist.com/buenos-aires', 'https://nomadlist.com/budapest']


1 commentaires

Merci! Mais ma liste ne contient pas de citation unique, savez-vous comment puis-je les ajouter avant de procéder à votre devis?



0
votes

Si vous avez utilisé BeauXoup, je pense qu'il est préférable de traiter les données directement à partir de magnifiquesoups que de convertir d'abord une liste comme suit:

from bs4 import BeautifulSoup

html_string = '''
<a href="" itemprop="url" title="Taipei for Digital Nomads">Taipei</a>
<a href="" itemprop="url" title="Lisbon for Digital Nomads">Lisbon</a>  
<a href="" itemprop="url" title="Buenos Aires for Digital Nomads">Buenos Aires</a>
<a href="" itemprop="url" title="Budapest for Digital Nomads">Budapest</a>
'''

base_url = 'https://nomadlist.com'

data = BeautifulSoup(html_string,"html.parser")

filtered_data = data.find_all("a")

url_list = [base_url+"/"+item.get_text().replace(" ","-").lower() for item in filtered_data]

print(url_list)


0 commentaires