2017-10-14 2 views
0

Je suis un débutant à python. J'ai essayé d'apprendre à partir de zéro ... mais j'ai besoin de faire quelque chose de pronto ... ce qui signifie que je n'ai pas terminé ma lecture.Python beautifulsoup obtenir 2 ligne de texte

J'ai le code ci-dessous

import requests 
from bs4 import BeautifulSoup 

url="https://www.xxx.co.uk" 
page=requests.get(url) 
soup = BeautifulSoup(page.content, 'html.parser') 

lotnav=soup.find(id="lotnav") 
address=lotnav.find(class_="col-sm-18").find_all("b") 
timeofauction=lotnav.find(class_="col-sm-18").select("span")[1].get_text() 

dateofauction=lotnav.find(class_="col-sm-18") 

Le texte à l'intérieur dateofauction est

XXXX | 
14:00, 
         05 December 2017 

              63 Mattocke XXX, XXXxxxx, XX1 1XX 

Je me bats pour sélectionner "05 Décembre 2017" dans une variable. Pouvez-vous s'il vous plaît aider?

Merci Amit

+0

après le html initial – RomanPerekhrest

+0

est le saut de ligne dans votre résultat pertinent et cohérent? Si c'est le cas, divisez le résultat sur les sauts de ligne et obtenez la ligne correspondante. par exemple. 'lines = dateofauction.split()' et 'result = lignes [2]' –

Répondre

0

Si this est la page que vous essayez de gratter, peut alors voir que la div avec class valeur de col-sm-18 contient deux balises span après quoi la date apparaît. Le span précédant immédiatement la date contient l'heure, et puisque vous faites déjà référence dans votre code, vous pouvez appeler la méthode nextSibling dessus.

lotnav.find(class_="col-sm-18").select("span")[1].nextSibling.strip() 

Cela vous donnera:

05 December 2017 

Note: La méthode nextSibling retourne un objet NavigableString, vous ne devriez pas appeler une méthode get_text() sur elle. Cela va générer une erreur. Simly dépouiller de l'espace et l'utiliser.