网站:https://www.nieruchomosci-online.pl/szukaj.html?3,mieszkanie,wynajem,,Szczecin:19503 我想解析所有广告,除了特色广告。问题是几乎每个广告都有不同的类别,我无法将它们收集到一个列表中。特色广告可以在 2 页甚至 3 页上。精选广告标记在网站顶部,但普通广告则没有。此外,最后几页还有存档的广告。
ogloszenia = soup.find_all(class_='column-container column_default')
我只想收集容器,但精选和存档的也有这样的容器。我也不能只找到“Lista ogłoszeń”,然后再找到_sibling。因为下一页没有这样的字段Lista ogloszen,下一页没有这样的字段。
我建议使用他们的 Ajax 分页 API,它以 Json 格式返回有关广告的数据(还有广告是否存档的信息):
import json
import requests
api_url = "https://www.nieruchomosci-online.pl/szukaj.html"
params = {"3,mieszkanie,wynajem,,Szczecin:19503": "", "p": "1", "ajax": "1"}
headers = {
"X-Requested-With": "XMLHttpRequest",
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:125.0) Gecko/20100101 Firefox/125.0",
}
for params["p"] in range(1, 3): # <-- increase number of pages here
data = requests.get(api_url, params=params, headers=headers).json()
# print(json.dumps(data, indent=4))
for k, v in data["listAdditionalData"].items():
print(k)
print(v["metaTitle"])
print(v["primaryPrice"], "zł")
print("ARCHIVE" if v["isArchive"] == "1" else "NOT ARCHIVE")
print()
打印:
...
a23621242
Wynajmę mieszkanie 100 m² Szczecin, Świerczewo
4600 zł
NOT ARCHIVE
a24885688
Piękne mieszkanie w kamienicy, Centrum Szczecin
2600 zł
NOT ARCHIVE
a24862202
Ul. Emilii Plater Miejsca postojowe w cenie Szczecin, Centrum
1900 zł
NOT ARCHIVE
...