代码之家  ›  专栏  ›  技术社区  ›  Kamikaze_goldfish

用Python请求post

  •  0
  • Kamikaze_goldfish  · 技术社区  · 8 年前

    这是我第一次尝试 requests.post() 因为我一直用 requests.get() . 所以我试图导航到一个网站并搜索。我正在使用yellowpages.com,在我得到关于使用该网站进行刮擦或API的负面反馈之前,我只想尝试一下。我遇到的问题是,它吐出的一些html并不是我要找的。我会把我的代码贴在下面,告诉你我在说什么。

    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
    url = "https://www.yellowpages.com"
    search_terms = "Car Dealership"
    location = "Jackson, MS"
    q = {'search_terms': search_terms, 'geo_locations_terms': location}
    page = requests.post(url, headers=headers, params=q)
    
    print(page.text)
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   user9455968user9455968    8 年前

    你的要求可以归结为

    $ curl -X POST \
      -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36' \
      'https://www.yellowpages.com/?search_terms=Car Dealership&geo_locations_terms=Jackson, MS'
    

    为此,服务器返回 502 Bad Gateway 状态代码。

    原因是你用 POST 一起wihy查询参数 params . 两人相处不好。使用 data 相反:

    requests.post(url, headers=headers, data=q)