我正在尝试解析该网站 - 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请求时我也收到了它,我没有转移到有车的页面,在查看解析主页和上述页面时得到的内容后,我意识到我到处都得到相同的文本,我不明白如何才能达到我需要的结果。这是可以提供帮助的屏幕截图和我的代码 [] ()
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)
您发布搜索参数的 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
...