2017-09-01 1 views
0

Ich habe versucht, diese Webseite mit BS zu kratzen, aber ohne Erfolg. Könnte mir jemand helfen? Ich bin mir nicht sicher, was mit dieser Webseite nicht stimmt oder ob etwas mit meinem Code nicht stimmt.Nicht in der Lage, spezifische Website mit Python kratzen Schöne Suppe

from urllib.request import urlopen as uReq 
from bs4 import BeautifulSoup 

my_url = "https://www.cea.gov.sg/Custom/CEA/PublicRegister/Page/PublicRegisterDetail.aspx?UserId=ae0cdf1d-a30c-4c8c-9f80-b2cec17b4bd9" 

uClient = uReq(my_url) 
page_html = uClient.read() 
uClient.close() 
page_soup = Soup(page_html, "html.parser") 
nameList2 = page_soup.findAll("span") 

print (nameList2.string[1]) 
+0

Zumindest für mich dies hängt bereits in der Teil, wo Sie die URL bei 'uReq (my_url)' öffnen, nicht sur Warum auch? Verwenden von 'requests'-Bibliothek anstelle von urllib funktioniert. Das Problem ist nicht mit BS4. Wie auch immer, wenn das gelöst ist, musst du 'Soup' in' BeautifulSoup' und wahrscheinlich 'nameList2.string [1]' in 'nameList2 [1]' ändern. –

+0

@teemu Können Sie mit der Bibliothek Anfragen klären, was Sie meinen? Wie würde diese Codezeile stattdessen aussehen? Ja, ich habe Suppe in beautifulsoup geändert – truefire

+0

Was ich meine, ist eine Drittanbieter-Bibliothek, die in vielerlei Hinsicht viel besser ist als urllib, aber das würde bedeuten, mehr als nur eine Zeile zu ändern. http://docs.python-requests.org/en/master/ wenn Sie interessiert sind. –

Antwort

0

Sie können so versuchen. Ich habe dort nichts problematisches gefunden.

import requests 
from bs4 import BeautifulSoup 

response = requests.get("https://www.cea.gov.sg/Custom/CEA/PublicRegister/Page/PublicRegisterDetail.aspx?UserId=ae0cdf1d-a30c-4c8c-9f80-b2cec17b4bd9") 
soup = BeautifulSoup(response.text,"html.parser") 
for item in soup.select(".form-wrap"): 
    Name = item.select_one("#FtPublicRegisterDetail_LblName").get_text() 
    Agent_Name = item.select_one("#FtPublicRegisterDetail_LblEstAgentName").get_text() 
    print(Name, Agent_Name) 

Das Ergebnis:

A R N MADANAGOPALAN (MADAN) PROPNEX REALTY PTE LTD 

Und nur "span" verwenden, wenn Sie bevorzugen:

import requests 
from bs4 import BeautifulSoup 

response = requests.get("https://www.cea.gov.sg/Custom/CEA/PublicRegister/Page/PublicRegisterDetail.aspx?UserId=ae0cdf1d-a30c-4c8c-9f80-b2cec17b4bd9") 
soup = BeautifulSoup(response.text,"html.parser") 

doc_list = soup.select("span") 

for item in range(len(doc_list)): 
    names = soup.select("span")[item].text 
    print(names) 

Ergebnisse:

A R N MADANAGOPALAN (MADAN) 
R016176H 
01 Jan 2013 to 31 Dec 2017 
NA 
NA 
NA 
PROPNEX REALTY PTE LTD 
+0

@truefire, haben Sie den Code ausprobiert? – SIM

+0

Hallo Shahin, vielen Dank. Verwaltet, um es nach der Verwendung von "importieren Anfragen", aber nicht für urllib ... – truefire

+0

Yup, vielen Dank! – truefire