使用 BeautifulSoup 抓取的数据与源代码不匹配

如何解决使用 BeautifulSoup 抓取的数据与源代码不匹配

我是网络抓取的新手。我看过一些关于如何使用 beautifulsoup 抓取网站的教程。 作为练习,我想从房地产网站中提取数据。 我想抓取的具体页面是这个:https://www.immoweb.be/fr/recherche/maison-et-appartement/a-vendre?countries=BE&page=1

我的目标是提取每个房地产销售的所有链接列表。 之后,我想遍历该链接列表以提取每次销售的所有数据(价格、位置、nb 卧室等)

我遇到的第一个问题是使用经典beautifulsoup代码抓取的数据与网页源代码不匹配。

这是我的代码

URL = "https://www.immoweb.be/fr/recherche/maison-et-appartement/a-vendre?countries=BE&page=1"
page = requests.get(URL)
html = page.content
soup = BeautifulSoup(html,'html.parser')
print(soup)

因此,在查找位于

下的每个房地产销售的链接
soup.find_all("a",class_="card__title-link")

输出一个空列表。事实上,这些标签实际上没有从我上面的代码中正确提取。 这是为什么?我应该怎么做才能确保提取的 html 与网站源代码中可见的内容正确对应?

谢谢:-)

解决方法

您看到的数据以 Json 格式嵌入页面。你可以使用这个例子来加载它:

import json
import requests
from bs4 import BeautifulSoup

url = "https://www.immoweb.be/fr/recherche/maison-et-appartement/a-vendre?countries=BE&page=1"
soup = BeautifulSoup(requests.get(url).content,"html.parser")
data = json.loads(soup.find("iw-search")[":results"])

# uncomment this to print all data:
# print(json.dumps(data,indent=4))

# print some data:
for ad in data:
    print(
        "{:<63} {:<8} {}".format(
            ad["property"]["title"],ad["transaction"]["sale"]["price"] or "-","https://www.immoweb.be/fr/annonce/{}".format(ad["id"]),)
    )

打印:

Triplex appartement met 3 slaapkamers en garage.                239000   https://www.immoweb.be/fr/annonce/9309298
Appartement                                                     285000   https://www.immoweb.be/fr/annonce/9309895
Heel ruime,moderne,lichtrijke Duplex te koop,bij centrum     269000   https://www.immoweb.be/fr/annonce/9303797
À VENDRE PAR LANDBERGH : appartement de deux chambres à Gand    359000   https://www.immoweb.be/fr/annonce/9310300
Prachtige nieuwbouw appartementen                               -        https://www.immoweb.be/fr/annonce/9309278
Prachtige nieuwbouw appartementen                               -        https://www.immoweb.be/fr/annonce/9309251
Prachtige nieuwbouw appartementen                               -        https://www.immoweb.be/fr/annonce/9309264
Appartement intéressant avec agréable vue panoramique verdoy    219000   https://www.immoweb.be/fr/annonce/9309366
Projet Utopia by Godin                                          -        https://www.immoweb.be/fr/annonce/9309458
Appartement 2-ch avec vue unique!                               270000   https://www.immoweb.be/fr/annonce/9309183
Residentieel wonen in Hélécine,dichtbij de natuur en de sne    -        https://www.immoweb.be/fr/annonce/9309241
Appartement                                                     375000   https://www.immoweb.be/fr/annonce/9309187
DUPLEX LUMIEUX ET SPACIEUX                                      380000   https://www.immoweb.be/fr/annonce/9298271
SINT-PIETERS-LEEUW / Magnifique maison de ±130m² avec jardin    430000   https://www.immoweb.be/fr/annonce/9310259
PARC PARMENTIER // APP MODERNE 3CH                              490000   https://www.immoweb.be/fr/annonce/9262193
BOIS DE LA CAMBRE – AV DE FRE – CLINIQUES DE L’EUROPE           575000   https://www.immoweb.be/fr/annonce/9309664
Entre Stockel et le Stade Fallon                                675000   https://www.immoweb.be/fr/annonce/9310094
Maisons neuves dans un cadre verdoyant                          -        https://www.immoweb.be/fr/annonce/6792221
Nieuwbouwproject Dockside Gardens - Gent                        -        https://www.immoweb.be/fr/annonce/9008956
Appartement                                                     139000   https://www.immoweb.be/fr/annonce/9187904
A VENDRE CHEZ LANDBERGH: appartements à Merelbeke Flora         -        https://www.immoweb.be/fr/annonce/9306877
Très beau studio avec une belle vue sur la plage et la mer!     319000   https://www.immoweb.be/fr/annonce/9306787
BEL APPARTEMENT LUMINEUX DIAMANT / PLASKY                       320000   https://www.immoweb.be/fr/annonce/9264748
Un projet d'appartements neufs à proximité de Woluwé-St-Lamb    -        https://www.immoweb.be/fr/annonce/9308037
PLACE JOURDAN - 2 CHAMBRES                                      345000   https://www.immoweb.be/fr/annonce/9306953
Magnifiek appartement in de Brugse Rand - Assebroek             399000   https://www.immoweb.be/fr/annonce/9306613
Bien d'exception                                                415000   https://www.immoweb.be/fr/annonce/9308022
Appartement                                                     435000   https://www.immoweb.be/fr/annonce/9307802
Magnifique maison 5CH - 3SDB - bureau - dressing - garage       465000   https://www.immoweb.be/fr/annonce/9307178
Magnifique maison 5CH - 3SDB - bureau - dressing - garage       465000   https://www.immoweb.be/fr/annonce/9307177

编辑:添加了 URL 列。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?