2017-07-24 97 views
1

我一直在试图建立一个网站刮板收集的名称,价格和网站上的对象的区,但不能用它做任何事情,因为它提出了一个错误:属性始终没有

AttributeError: 'NoneType' object has no attribute 'strip'.

我该怎么办?帮帮我!另外我如何去第二个div?当我做districtcontainers = souped.find_all("div",{"class":"announcement-block-link")然后districtcontainers[0].div.div,它给出0输出。如何解决这个问题?非常感谢您的关注和答复:)。

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


url = uReq.urlopen("https://www.bazaraki.com/real-estate/houses-and-villas-rent/larnaka-district-larnaca/") 
html = url.read() 
souped = soup(html,"html.parser") 
containers = souped.find_all("div",{"class":"announcement-block-text-container"}) 
districtcontainers = souped.find_all("div",{"class":"announcement-block__location"}) 
for container in containers: 
    for districtcontainer in districtcontainers: 
     title = container.a 
     price = container.p 
     district = districtcontainer 
     print("{}:\n Costs: \n District:{}".format(title.string.strip(),price.string.strip(),district.string.strip())) 
+1

试试'title.text'或'title.content'? –

+0

尝试,它说EOF错误,但 –

+0

它的工作原理,但它返回每一个项目像百次 –

回答

1

首先,你最后的print语句只有两个{},但你必须按以下格式调用三个变量,它只是一个错字所以这不是问题的原因。

其次,它看起来像你的变量之一是通过调用souped对象赋值为None。只需检查页面的编码,以确保您正在查找的值位于正确的位置。如果您要求不在场的部分而不是提出错误,BeautifulSoup将返回None。

由于它看起来像运行打印调用时引发的异常,只需检查以确保您的三个调用为您的变量赋值返回值。

至于获得页面中的第二个div,您可能想要查看next_sibling方法调用。

+0

你能帮我用.div.div的东西吗? .next_sibling返回“\ n”。由于此原因,我无法解析任何页面 –

+0

您可以在单个实例上使用多个next_sibling,因此可能需要多个next_sibling才能访问实际文本或HTML元素的下一个实例。 我建议next_sibling和可能的next_element,因为他们确保返回一个值,而不是创建另一个Nonetype错误。 – Vorboto