0
votes

Trouver l'emplacement de la classe pour Beautifulsoup

Je me débats avec magnifique. Je veux gratter les liens des concours dans la table du côté droit de [transfertmarkt] [1]

Comment je localiser jusqu'à présent: p>

div1 = soup.find('div', {'class': 'large-4 columns'})
div2 = div1.find('div', {'class': 'box'})
table = div2.find('table')
table_body = table.find('tbody')
contest = table_body.find_all('a')


0 commentaires

3 Réponses :


0
votes

Essayez d'utiliser la fonction SELECT CODE> dans la bibliothèque de soupe où vous pouvez utiliser Sélecteurs CSS .

Dans votre cas, vous pouvez utiliser quelque chose comme - P>

a_tags = soup.select("td[class='no-border-links'] > a")


1 commentaires

Merci pour votre réponse! Malheureusement, cela ne fonctionne pas .. J'ai déjà les titres. J'ai besoin des liens du club ou de la compétition ...



2
votes

Il est préférable d'utiliser sélectionner pour ce cas. xxx

sortie sera xxx


4 commentaires

Merci, mais il y a des valeurs manquantes. "Deutschland" est manquant et "FC Bayern München" aussi ... ce ne sont pas des titres. Deutschland n'est que dans une HREF sous la classe "NO-BORD-LIENS" et BAYERN est dans une classe ... Comment puis-je mettre en œuvre ces exceptions?


@viktor a mis à jour ma réponse. Il perd son ordre mais cela donne ce que vous voulez.


Hmm ça ne marche toujours pas. Maintenant, je reçois environ 70 valeurs ... même Schalke est dans la liste maintenant, ce qui est uniquement sur la table du côté gauche de la page ...


Hmm. Mis à jour à nouveau. Je pense que je l'ai bien compris cette fois-ci.



1
votes

Essayez ce qui suit pour obtenir le contenu souhaité: xxx pré>

Pour obtenir le lien aussi, essayez ci-dessous: p>

import re
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin

URL = "https://www.transfermarkt.de/jumplist/erfolge/spieler/17259"

res = requests.get(URL,headers={"User-Agent":"Mozilla/5.0"})
soup = BeautifulSoup(res.text,"lxml")
for items in soup.select(".table-header:contains('Alle Titel') + table tr"):
    if not items.find("a",string=re.compile("\w")):continue
    item = items.find("a",string=re.compile("\w")).text
    try:
        link = urljoin(URL,items.select_one("a[href^='/']").get("href"))
    except AttributeError: link = ""
    print(item,link)


2 commentaires

Merci, cela fonctionne, mais j'ai aussi besoin des liens. Dans l'ensemble dans un ordre structuré ... J'ai mis à jour mon code au sommet ... Certains joueurs comme celui-ci ici: transfertmarkt.de/jumplist/erfolge/spieler/143891 Détruisez complètement ma structure ...


Découvrez la mise à jour. Assurez-vous de créer un autre message si vous avez besoin d'aide supplémentaire @Viktor.