繁体   English   中英

将 Excel/VBA 转换为 Python

[英]Translate Excel/VBA to Python

我在这里找到了一个 Excel/VBA 脚本,并试图将其转换为 Python。 首先是 VBA,然后是我的 Python 尝试。 我应该如何修复 Python 代码?

Public Function GetUPSDeliveryDate(ByVal id As String) As String
Dim body As String, json As Object
body = "{""Locale"":""en_US"",""TrackingNumber"":[""" & id & """]}"
With CreateObject("MSXML2.XMLHTTP")
    .Open "POST", "https://www.ups.com/track/api/Track/GetStatus?loc=en_US", False
    .setRequestHeader "Referer", "https://www.ups.com/track?loc=en_US&requester=ST/"
    .setRequestHeader "User-Agent", "Mozilla/5.0"
    .setRequestHeader "DNT", "1"
    .setRequestHeader "Content-Type", "application/json"
    .setRequestHeader "Accept", "application/json, text/plain, */*"
    .send body
    Set json = JsonConverter.ParseJson(.responseText)
End With

Excel VBA/JSON 抓取 UPS 追踪派送

我的尝试是:

def f(tn):
  data = {"Locale":"en_US",
    "TrackingNumber":f"[{tn}]",
    "Referer": "https://www.ups.com/track?loc=en_US&requester=ST/",
    "User-Agent": "Mozilla/5.0",
    "DNT": "1",
    "Content-Type": "application/json",
    "Accept": "application/json, text/plain, */*"}

  r = requests.post("https://www.ups.com/track/api/Track/GetStatus?loc=en_US", data=data)
  print(r.json())

我的猜测是一个问题是将来自 VBA 的body部分放入data

正确的。 Locale 和 TrackingNumber 是数据的一部分。 其他一切都是请求 header。

def f(tn):
  data = {"Locale":"en_US",
    "TrackingNumber":f"[{tn}]"}
  headers = {
    "Referer": "https://www.ups.com/track?loc=en_US&requester=ST/",
    "User-Agent": "Mozilla/5.0",
    "DNT": "1",
    "Content-Type": "application/json",
    "Accept": "application/json, text/plain, */*"}

  r = requests.post("https://www.ups.com/track/api/Track/GetStatus?loc=en_US", data=data, headers=headers)
  print(r.json())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM