这是我正在工作的页面:www.walmart.com/ip/Sony-Xperia-ZL-LTE-C6506-5-Smartphone-Unlocked/24566601
在此页面上,设备有 3 种颜色选项可用,每当我单击其中一个颜色框时,该设备颜色变体的价格就会通过 Ajax Post 请求加载到服务器。
我正在尝试使用 Python 发送此请求,以下是我迄今为止使用的代码。
代码 1:
user_agent = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1;Trident/5.0)'
values = {'ajaxCalls':'AjaxUrl|/catalog/fetch_dynamic_data.do?item_id=24566602|CallbackFunction|WALMART.bot.AjaxInterface.handleSuccess_DynamicData|RtnRespType|json|timeoutSetting|300|'}
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(colorlink, data, headers)
response = urllib2.urlopen(req)
page = response.read()
soup = BeautifulSoup(page)
colorlink 是我上面提到的 url
代码 2:
values = {'ajaxCalls':'AjaxUrl|/catalog/fetch_dynamic_data.do?item_id=24566602|CallbackFunction|WALMART.bot.AjaxInterface.handleSuccess_DynamicData|RtnRespType|json|timeoutSetting|300|'}
user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7"
headers = { 'User-Agent' : user_agent }
req = mechanize.Request(colorlink, values,headers)
cj.add_cookie_header(req)
res = mechanize.urlopen(req)
soup = BeautifulSoup(res)
colorlink 就是上面提到的 url。
我从其中一个 stackoverflow 问题中复制了机械化代码,并尝试将其用于我的案例,但它没有用。我遇到TypeError可能是因为机械化被视为 dict的值变量。
另外,我无法在 POST 参数中发送时间戳值,因为它需要当前时间,我不知道该怎么做。
请帮我解决这个问题。