2017-10-14 2 views
0

Ich bin ein Neuling bei Python. Habe versucht, von Grund auf zu lernen ... aber ich muss etwas pronto machen ... was bedeutet, dass ich meine Lesung nicht abgeschlossen habe.Python beautifulsoup bekommen 2 Textzeile

ich den Code unten

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") 

Der Text innerhalb dateofauction ist

XXXX | 
14:00, 
         05 December 2017 

              63 Mattocke XXX, XXXxxxx, XX1 1XX 

Ich kämpfe, um "5. Dezember 2017" in eine Variable haben. Können Sie bitte helfen?

Dank Amit

+0

Post das ursprüngliche HTML – RomanPerekhrest

+0

ist die Zeilenumbrüche in Ihrem Ergebnis relevant und konsistent? Wenn ja, dann spalte das Ergebnis in Zeilenumbrüchen und erhalte die entsprechende Zeile. z.B. 'lines = dateofauction.split()' und 'result = lines [2]' –

Antwort

0

Wenn this ist die Seite, die Sie zu kratzen sind versuchen, kann dann sehen, dass der div mit class Wert von col-sm-18 enthält zwei span Tags nach dem das Datum angezeigt. Die span unmittelbar vor dem Datum enthält die Uhrzeit, und da Sie bereits in Ihrem Code darauf verweisen, können Sie die nextSibling Methode darauf aufrufen.

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

Das wird Sie geben:

05 December 2017 

Hinweis: Die nextSibling Methode gibt ein NavigableString Objekt, so dass Sie auf eine get_text() Methode nicht nennen sollte. Es wird einen Fehler auslösen. Entfernen Sie es einfach aus Leerzeichen und verwenden Sie es.