2017-09-01 72 views
0

我一直在嘗試使用BS刮這個網頁,但無濟於事。任何人都可以幫我嗎?我不確定這個網頁有什麼問題,或者我的代碼有問題。無法使用Python美麗的湯刮特定的網站

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

至少對我這個掛起已經在在uReq(my_url)'處打開url的部分,而不是sur儘管如此。使用'request'-library代替urllib是可行的。 問題不在於bs4。無論如何,如果解決了這個問題,你仍然需要將'Soup'改成'BeautifulSoup',或者'nameList2.string [1]'改成'nameList2 [1]'。 –

+0

@teemu你能澄清你使用請求庫的意思嗎?該代碼行如何代替?是的,我已經把湯變成了美味餅乾 – truefire

+0

我的意思是第三方庫在許多方面比urllib好得多,但這意味着不僅僅是改變一條線。 http://docs.python-requests.org/en/master/如果你有興趣。 –

回答

0

你可以試試這個。那裏我沒有發現任何問題。

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) 

結果:

A R N MADANAGOPALAN (MADAN) PROPNEX REALTY PTE LTD 

而且只用 「跨度」 如果你喜歡:

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) 

結果:

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

@truefire,你有沒有嘗試過的代碼? – SIM

+0

嗨Shahin,非常感謝。在使用「導入請求」之後管理它,但不能用於urllib ... – truefire

+0

是的,非常感謝! – truefire