属性始终为无

时间:2017-07-24 15:40:19

标签: python python-3.x web scraper

我一直在尝试创建一个网络抓取工具,用于收集网站上某个对象的名称,价格和区域,但却无法对其进行任何操作,因为它会引发错误:

  

AttributeError:' NoneType'对象没有属性' 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 个答案:

答案 0 :(得分:1)

首先,你的最后一个打印语句只有两个{},但你在下面的格式调用中有三个变量,它只是一个错字,所以它不是问题的原因。

其次,通过调用souped对象,看起来你的一个变量被赋值为None。只需检查页面的编码,确保您找到的值位于正确的位置。如果您要求某个部分不在那里而不是引发错误,BeautifulSoup将返回“无”。

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

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