【发布时间】:2021-07-20 16:47:59
【问题描述】:
我正在做一些网络抓取,并且发生了一些非常奇怪的事情,我无法想出导致问题的原因,也无法找到解决方案......
我正在使用它来浏览链接列表,打开它们并保存在 3 个列表中,其中包含我要求的类标签中包含的所有值,这是代码:
for link in list_links:
soup = BeautifulSoup(requests.get(link).content, "html.parser")
for title in soup.find_all(class_="im-features__title"):
info_annunci_title.append(title.get_text(strip=True))
for value in soup.find_all(class_="im-features__value"):
info_annunci_value.append(value.get_text(strip=True))
for altro in soup.find_all(class_="im-features__tag"):
info_annunci_altro.append(altro.get_text(strip=True))
在此之后,我使用嵌套 for 并行遍历 3 个压缩列表,以在之前的 3 个列表中搜索我实际需要保存的所有值。
代码:
for t, v, a in zip(info_annunci_title, info_annunci_value, info_annunci_altro):
# Crea oggetti JSON per ogni annuncio salvato
if "tipologia" in t:
list_annunci.append(v)
if "superficie" in t:
list_annunci.append(v)
if "piano" in t:
list_annunci.append(v)
if "piani edificio" in t:
list_annunci.append(v)
if "prezzo" in t:
list_annunci.append(v)
if "Auto" in t:
list_annunci.append(v)
if "Balcone" in a:
list_annunci.append(a)
if "Cantina" in a:
list_annunci.append(a)
if "Terrazza" in a:
list_annunci.append(a)
此时出现了一个奇怪的问题...我正在查看的几乎所有广告都获得了良好的结果,除了第一个和最后几个广告之外,以下是输出:
id: 0 公寓 阳台 95 平方米 |商业 100 m² -Vedi dettaglio 编号:1 公寓 110 平方米 |商业 142 m² -Vedi dettaglio 钢琴 terra, con accesso disabili 2 钢琴 1个车库/盒子 露台 小酒馆 339.000 欧元 编号:2 阳台 公寓 170 平方米 |商业 174 m² -Vedi dettaglio 小酒馆 钢琴大地,con ascensore
该格式可能难以阅读,抱歉,请注意,广告以“id: num”开头,并应以 € 的价格结尾...
如您所见,除了 1 个数据之外,第一个添加完全缺失。
最后它甚至变得更疯狂:
ID:109 阳台 编号:110 编号:111 编号:112 编号:113 编号:114 编号:115 阳台 编号:116 阳台
P.S:我注意到信息的顺序由于某种原因是错误的。它应该始终将 appartamento(公寓)作为第一个元素,但由于某种原因,它得到了错误的信息,例如 balcone 或 terrazza。
是什么造成了这个奇怪的错误,我该如何解决/我哪里出错了?
有用的链接:
Link to page with all ad links
网站的图片以及实际订单应该如何,而不是比真正的第一件商品更早获得东西......
【问题讨论】:
-
你能分享网站的链接吗?
-
@PraysonW.Daniel 是的,当然,抱歉我忘了!这是我现在使用的广告页面! immobiliare.it/vendita-case/ancona/borgo-rodi/… ---- 如果你点击这个广告:immobiliare.it/annunci/87953208 你会看到我用来截图的页面。
标签: python python-3.x web-scraping