gpt4 book ai didi

python - 当使用 python 进行网页抓取且值不存在时,如何防止错误?

转载 作者:太空宇宙 更新时间:2023-11-03 21:14:42 26 4
gpt4 key购买 nike

现在我正在尝试浏览一个房地产网站并抓取有关特性的数据。我有一个代码,可以通过属性列表获取数据,然后转到每个属性的页面并获取更详细的数据。它有效,但问题是,如果缺少任何字段,我会收到一个错误,导致异常并使其跳到下一个属性。相反,我想让它为任何丢失的数据设置一个 null,我是 Python 和网络抓取的新手,因此可能对如何清理我的代码有更多见解,所以也可以随意对此发表评论,但主要是我'我只是想让它在发现丢失数据的地方放置空值。这是代码,其中 prop_list 是

的 html 代码
for item in prop_list:
try:
d ={}
d["address"] = item.find("span", {"itemprop":"streetAddress"}).text
d["city"] = item.find("span", {"itemprop":"addressLocality"}).text
d["state"] = item.find("span", {"itemprop":"addressRegion"}).text
d["zip_code"] = item.find("span", {"itemprop":"postalCode"}).text
d["price"] = item.find("span", {"class":"data-price"}).text
d["lot_sqft"] = item.find("li", {"data-label":"property-meta-lotsize"}).find("span", {"class":"data-value"}).text
link = item.find("a").get("href")
url = "https://www.realtor.com" + link
d["url"] = url
d["longitude"] = item.find("meta",{"itemprop":"longitude"}).get("content")
d["latitude"] = item.find("meta",{"itemprop":"latitude"}).get("content")
desc_link = requests.get(url,headers=headers)
b = desc_link.content
temp = BeautifulSoup(b,"html.parser")
d["description"] = temp.find("p", {"class": "word-wrap-break"})
d["year_built"] = temp.find("li", {"data-label": "property-year"}).find("div", {"class":"key-fact-data ellipsis"}).text

l.append(d)

except:
print("exception occurred")

谢谢!

最佳答案

由于您是初学者,所以我会以这种方式详细说明您的代码。只需使用这样的 if-else 语句即可:

if item.find("span", {"itemprop" : "streetAddress"}):
d["address"] = item.find("span", {"itemprop":"streetAddress"}).text
else:
d["address"] = "" # or None

现在对每个元素都这样做会很忙,所以用Pythonic的方式:

d["address"] = item.find("span", {"itemprop":"streetAddress"}).text if item.find("span", {"itemprop":"streetAddress"}) else ""

这将满足您的需求。

关于python - 当使用 python 进行网页抓取且值不存在时,如何防止错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54799306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com