在Python GAE中使用URLFetch来获取完整的文档

时间:2017-01-11 22:03:45

标签: python google-app-engine urlfetch

我在使用Python 2.7的App引擎中使用urlfetch.fetch。

我尝试获取属于2个不同域的2个网址。对于第一个,urlfetch.fetch的结果包括在解析为获取推荐产品而进行的XHR查询之后的结果。 但是,对于属于另一个域的其他页面,XHR查询未解析,我只是获得了大部分的纯HTML。此页面的XHR查询也是为了获得推荐的产品等目的。

以下是我使用urlfetch的方法: fetch_result = urlfetch.fetch(url,deadline = 5,validate_certificate = True)

URL 1(解析XHR且响应完成的那个) https://www.walmart.com/ip/HP-15-f222wm-ndash-15.6-Laptop-Touchscreen-Windows-10-Home-Intel-Pentium-Quad-Core-Processor-4GB-Memory-500GB-Hard-Drive/53853531

URL 2(我大部分都得到纯HTML的那个) https://www.flipkart.com/oricum-blue-486-loafers/p/itmezfrvwtwsug9w?pid=SHOEHZWJUMMTEYRU

有人可以就不一致问题向我提出建议。

1 个答案:

答案 0 :(得分:0)

服务器根据请求标头中提供的用户代理字符串提供不同的输出。

默认情况下,urlfetch.fetch会将用户代理标头设置为AppEngine-Google; (+http://code.google.com/appengine; appid: myapp.appspot.com的请求发送。

浏览器将发送如下所示的用户代理标头:Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0

如果您覆盖urlfetch.fetch

的默认标头
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0'}
urlfetch.fetch(url, headers=headers)

你会发现你收到的html几乎与提供给浏览器的html相同。