gpt4 book ai didi

python - 我无法在 Beautifulsoup 中循环多个页面

转载 作者:行者123 更新时间:2023-12-01 07:55:07 25 4
gpt4 key购买 nike

我正在尝试抓取此链接中的数据空间: https://www.pap.fr/annonce/ventes-maisons-

我能够抓取数据,但只能从第一页开始,因此我创建了一个循环,遍历所有页面,但没有结果。

有人可以告诉我我的程序出了什么问题吗?

<小时/>
for num in range(0, 20):

url = str('https://www.pap.fr/annonce/ventes-maisons-' + str(num))
page = requests.get(url)
data = page.text
soup = BeautifulSoup(data, 'html.parser')
repo = soup.find(class_="search-results-list")
repo_list = repo.find_all(class_='search-list-item')

for repo in repo_list:
full_repo_name = repo.find('p').text.split('.')
Code_postal = full_repo_name[0].strip()
Description = full_repo_name[1].strip()
Prix = repo.find("span", {"class": "item-price"}).string
Nombre_pièces = repo.ul.li.string
x = repo.find('ul', class_="item-tags").find_all('li')[2]
print(repo.text.strip())
Surface = x.text.strip()
f.writerow([Prix, Code_postal, Description, Nombre_pièces, Surface])

最佳答案

由于字段缺失/不一致,这是一个有点棘手的问题。这里有一些可以帮助您入门的内容,但您可能需要稍微调整此脚本以满足您的预期输出:

import csv
import requests
from bs4 import BeautifulSoup

with open("out.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["prix", "code_postal", "description", "nombre_pieces", "surface"])

for i in range(1, 20):
url = "https://www.pap.fr/annonce/ventes-maisons-%s" % i
soup = BeautifulSoup(requests.get(url).text, "html.parser")
repo = soup.find(class_="search-results-list")

for repo in repo.find_all(class_="search-list-item"):
body = repo.find("p").text.split(".")
code_postal, description = body[0].strip(), body[1].strip()

prix = repo.find("span", {"class": "item-price"})
prix = prix.text if prix else ""

try:
nombre_pieces = repo.ul.li.text
except:
nombre_pieces = ""

try:
surface = repo.find("ul",class_="item-tags").find_all("li")[2].text.strip()
except:
surface = ""

writer.writerow([prix, code_postal, description, nombre_pieces, surface])

输出 CSV 摘录:

prix,code_postal,description,nombre_pieces,surface
550.000 €,Vaison-la-Romaine (84110),Entre Vaison la Romaine -région et Beaume de Venise,5 pièces,122 m2
350.000 €,La Selve (12170),"Demeure de prestige de 300 m² habitables en pierres de pays, au cœur de la campagne sud aveyronnaise, entièrement rénovée en 2004",8 pièces,300 m2
220.000 €,Labastide-d'Armagnac (40240),"Maison d'habitation du 17e siècle comprenant un rez-de-chaussée et deux étages, entièrement rénovée dans centre village de Labastide d'Armagnac, situé à 29 km est de Mont de Marsan (Landes)",8 pièces,226 m2
95.000 €,Courçon (17170),A 25 mn de La Rochelle,5 pièces,70 m2
1.249.000 €,Pibrac (31820),Dans un environnement exceptionnel avec accès direct à la forêt domaniale de Bouconne,7 pièces,540 m2
828.000 €,Bois-le-Roi (77590),"Superbe maison contemporaine 2010, sur terrain clos et paysager 1",7 pièces,220 m2
278.000 €,Villefranche-sur-Saône (69400),"Compagnie de Construction vous propose, sur la commune de Gleizé, un projet de construction sur une parcelle de terrain de 660 m², exposée Sud-Ouest, cette villa familiale de 80 m² habitables se compose d'un sejour",3 chambres>,Terrain : 662 m²
485.000 €,Valenciennes (59300),**Corps de ferme à 10 mn de Valenciennes (propriété individuelle)**,11 pièces,200 m2
185.000 €,Arrigny (51290),Propriété sur un terrain arboré de 3,9 pièces,241 m2
,Le Carré Jaurès,"OUVERTURE DE LA COMMERCIALISATION
Devenez enfin propriétaire de votre appartement neuf à Livry-Gargan !
De beaux appartements neufs et spacieux, du 2 au 4 pièces s’ouvrant sur un magnifique cœur
d’îlot où la nature",,
485.000 €,Flayosc (83780),"Maison 130m², (surface utile 167m²) centre village à pied, année de construction 1994 ,exposée sud-sud-est, sans vis-à-vis sur un terrain de 1427m² complanté d'oliviers, figuiers, lauriers roses",5 pièces,130 m2
335.000 €,Esclauzels (46090),"15 mn Cahors
5 km du village de Saint Géry
Terrain de 5724 m² clos, arboré et paysagé
Piscine au sel 11 x 4 avec volet roulant automatique solaire avec pool house
Maison 6 pièces de plain pied",6 pièces,145 m2
,Vous envisagez de vendre votre logement ? Notre outil vous permet d'obtenir une estimation gratuite et immédiate en se basant sur un grand volume de ventes réalisées au cours des derniers mois,,,
280.000 €,Rougé (44660),"Entre Bretagne et Pays de Loire, dans un hameau, loin de toute agitation urbaine, vous trouverez une vrai qualité de vie",6 pièces,130 m2

完整的 CSV 有 248 行,但看起来每隔一段时间就有一个广告(通过检查邮政编码字段可以轻松删除):

enter image description here

关于python - 我无法在 Beautifulsoup 中循环多个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56026349/

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