用Python抓取动态网站,如何发送post请求以获取占位符数据?

2024-09-30 06:15:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力获取美国各地特定商品的价格。该网站有一个文本框,您可以在其中输入状态并更新价格,但URL保持不变,我最近发现这意味着它是动态的。我正试图用以下代码来提高价格:

from bs4 import BeautifulSoup
import requests

source = requests.get('https://www.sunbeltrentals.com/equipment/detail/1255/0350140/7500lb-mini-excavator/').text


soup = BeautifulSoup(source, 'lxml')

    # Finding the equipment name and printing it

name_article = soup.find('div', id = 'equipment-catalog-page-container')

    # This pricing is based off of typing "NC" into the search box

equipment_name = name_article.h1.text
print(equipment_name)


for price_article in soup.find_all('div', class_ = 'info--price'):
    equipment_price = price_article.text
    print(equipment_price)

输出为:

7,500lb Mini Excavator

Online Rate: 

1 Day: {{RateDaily | toCurrency}} {{Currency}}
1 Week: {{RateWeekly | toCurrency}} {{Currency}}
4 Weeks: {{RateMonthly | toCurrency}} {{Currency}}

开发人员工具上的双花括号(以及括号内的内容)是数字和货币类型,但我正在尝试将其刮去,以便能够看到实际的数字。我相信我调用的URL使用的是用Javascript更新的占位符

我希望得到的输出示例: 1天:500美元 1周:1000美元 4周:2000美元

我查看了开发人员工具,当您输入位置时,网络会向这些URL发出3个单独的post请求:

https://www.sunbeltrentals.com/ccdata/user/setshoppinglocation/https://www.sunbeltrentals.com/equipment/getuserequipmentviewdata/

https://www.sunbeltrentals.com/ccdata/rates/getrates

当我分别加载这些站点时,我会被发送到一个错误页面(中间的页面除外),但在开发人员工具预览中,它会显示正确的数字,因此我假设涉及cookie(?)。我需要发送这3个post请求对吗?我将如何发送这些请求/将其构建到我的代码中,以便它显示正确的定价信息?这是我的第一个真正的python项目,所以我不确定我是以艰难的方式完成的,还是问了正确的问题


Tags: textnamehttpscomurl开发人员wwwarticle

热门问题