beautifulsoup 打印无结果

beautifulsoup print no results

您好,我不确定自己做错了什么。代码运行没有错误,但结果为 0。有什么方法可以测试拉动的是什么?

import requests
from bs4 import BeautifulSoup

URL = "https://www.expedia.com/carsearch?locn=Orlando+%28MCO+-+Orlando+Intl.%29&loc2=&date1=4%2F24%2F2022&date2=4%2F30%2F2022&d1=2022-04-24&d2=2022-04-30&aarpcr=off&vend=&pickupIATACode=MCO&dpln=5194573&returnIATACode=&drid1=&time1=1030AM&time2=1030AM&olat=&olon=&dlat=&dlon=&dagv=1&subm=1&fdrp=0&ttyp=2&acop=2&rdus=10&rdct=1&styp=4"
page = requests.get(URL)

soup = BeautifulSoup(page.content, "html.parser")

results = soup.find(id="app-bernie-cars-shopping-web") 


job_elements = results.find_all("div", class_="offer-cards-list")


for job_element in job_elements:
    title_element = job_element.find("div", class_="title-container")
    print(title_element.text.strip())


预期结果应该是汽车的标题(在我的例子中是中型 SUV)还有如何将结果添加到 pandas 数据框?

几件事:

首先,为了测试这个,我会看看到底是什么被return编辑到'job_elements'。您可以通过将其打印到控制台或使用 IDE 的调试模式并在该行附近设置中断来实现。

其次,我浏览了网站的HTML,看起来运行 find_all 是class="offer-card-desktop" 因为这些是创建的有序列表的实际元素。

job_elements = results.find_all("li", class_="offer-card-desktop")

这样你就可以return OL的列表项到job_elements,然后从div的returned中挑选出你需要的。

最后,我在 div 的任何地方都没有看到“title-container”class,但是如果您正在寻找卡片上给出的汽车名称,您可以做的是:

for result in results.find_all("div", class_="uitk-layout-grid flex-container") 
    print(result.get_text())

我现在无法对此进行测试,但我希望这能为您提供一些前进的想法。祝你好运!