解析网站时无法得到正确答案

问题描述 投票:0回答:1

我正在尝试解析该网站 - https://www.rent-a-car-crete.gr/car-search/ 为了获得必要的信息,解析器必须输入以下数据

 data = {
    'pickup_location': '29',
'return_to_pickup_location': '1',
'return_location': '---',
'pickup': '21.02.2024',
'pickup_time': '10:00',
'return': '22.02.2024',
'return_time': '10:00',
'promo_code': '',
'age': '30+',
'pickup_id': '',
'return_id': '',
'subimt_search': '1',
    }

(查看网络中的完整列表) 以及如何按下搜索按钮并解析出来的汽车

我尝试解析主页 - https://www.rent-a-car-crete.gr 没有post请求时我收到了它,发送post请求时我也收到了它,我没有转移到有车的页面,在查看解析主页和上述页面时得到的内容后,我意识到我到处都得到相同的文本,我不明白如何才能达到我需要的结果。这是可以提供帮助的屏幕截图和我的代码 [enter image description here] (https://i.stack.imgur.com/Ahv3c.png)

url = 'https://www.rent-a-car-crete.gr/car-search/'
urlpre = 'https://www.rent-a-car-crete.gr'

work =  Session()

res = work.post(url=url, headers=headers,data=data)
soup = BeautifulSoup(res.content, 'html.parser')
cars = soup.find_all('h3', class_='carname')
print(res)
print('-'*50)
print(soup)
print('-'*50)
print(cars)
python html parsing beautifulsoup python-requests
1个回答
0
投票

您发布搜索参数的 URL 略有不同(您应该在 Web 开发人员工具 -> 网络选项卡中看到它):

import requests
from bs4 import BeautifulSoup

api_url = "https://www.rent-a-car-crete.gr/CarRental/load.php"
params = {"controller": "GzFront", "action": "getCars", "local": "3"}

data = {
    "local": "3",
    "pickup_location": "29",
    "return_to_pickup_location": "1",
    "return_location": "---",
    "pickup": "22.02.2024",
    "pickup_time": "10:00",
    "return": "23.02.2024",
    "return_time": "10:00",
    "promo_code": "",
    "age": "30+",
    "continue": "Select",
    "pickup_id": "",
    "return_id": "",
    "subimt_search": "1",
}

soup = BeautifulSoup(
    requests.post(api_url, params=params, data=data).content, "html.parser"
)

for h3 in soup.select("h3.carname"):
    print(f'{h3.text:<60} {h3.find_next(class_="price").text.strip()}')

打印:

Toyota Aygo or similar                                       € 79 
Peugeot 108 or similar                                       € 79 
Suzuki Alto or similar                                       € 79 
Volkswagen Up! or similar                                    € 79 
Skoda Citigo Aut or similar                                  € 93 
Fiat 500 Hybrid                                              € 86 
Fiat Panda or similar                                        € 80 

...
© www.soinside.com 2019 - 2024. All rights reserved.