urllib2的结果与网络浏览器的结果不同

时间:2017-09-13 10:55:18

标签: python request response urllib2

我正在android.support.v4.app.FragmentTransaction t = getChildFragmentManager().beginTransaction(); 写一个函数。功能很简单。它只是从特定网站获得请求。

python2中的Lambda函数如下所示。还包括aws-lambda

import urllib2

我将返回的值带到我的def lambda_handler(event, context): # TODO implement url = "https://www.amazon.co.jp/s/field-keywords=4548967337259" response = urllib2.urlopen(url) #print response return response.read() 服务器并尝试解析必要的信息。

在网站上,标签和相关信息如下所示。

ruby on rails

但是,如果我使用 <a class="a-link-normal a-text-normal" target="_blank" rel="noopener" href="https://www.amazon.co.jp/GOTHAM- %E3%82%B5%E3%83%BC%E3%83%89-%E3%82%B7%E3%83%BC%E3%82%BA%E3%83%B3- %E3%83%96%E3%83%AB%E3%83%BC%E3%83%AC%E3%82%A4- %E3%82%B3%E3%83%B3%E3%83%97%E3%83%AA%E3%83%BC%E3%83%88- %E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9-Blu-ray/dp/B071K5VZTL/ref=sr_1_1? ie=UTF8&amp;qid=1505293516&amp;sr=8-1&amp;keywords=4548967337259"> 并使用response方法进行转移,则看起来像这样。

read()

为什么会发生这种情况,我该如何避免这种情况?

实际上我尝试了类似<a class=\"a-link-normal a-text-normal\" target=\"_blank\" rel=\"noopener\" href=\"https://www.amazon.co.jp/GOTHAM-%E3%82%B5%E3%83%BC%E3%83%89- %E3%82%B7%E3%83%BC%E3%82%BA%E3%83%B3- %E3%83%96%E3%83%AB%E3%83%BC%E3%83%AC%E3%82%A4- %E3%82%B3%E3%83%B3%E3%83%97%E3%83%AA%E3%83%BC%E3%83%88- %E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9-Blu-ray/dp/B071K5VZTL\"> 的内容,但它无法完全成为response.json()形式。

2 个答案:

答案 0 :(得分:1)

尝试传递User-Agent标题:

import urllib2

def lambda_handler(...):
    request = urllib2.Request("http://www.google.com",
                           headers={"User-Agent" : "Mozilla/5.0"})
    return urllib2.urlopen(request).read()

答案 1 :(得分:0)

您需要将响应传递给字符串函数:

 def lambda_handler(event, context):
    url = "https://www.amazon.co.jp/s/field-keywords=4548967337259"
    response = urllib2.urlopen(url)
    return str(response.read()) #here, casting as a string