2017-09-01 61 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