为什么我的python脚本有两种类型的结果?

时间:2013-05-01 12:37:19

标签: python xml python-2.7 mechanize

我有这样的剧本

 import mechanize
 url = "http://www.globalhide.com/browse.php?u=u=http://www.whoisxmlapi.com/whoisserver/WhoisService?domainName=google.com"
 br = mechanize.Browser()
 br.set_handle_robots(False)
 br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
 response = br.open(url)
 content = response.read()
 f = open('q.html', 'w')
 f.write(content)
 f.close()

我需要像this这样的结果  当我从python shell运行它时,结果正确。但当我将其保存在something.py文件中并像{**}}一样运行q.html enter image description here的内容时 我的代码有什么问题?

2 个答案:

答案 0 :(得分:2)

我认为您的代码没有任何问题。更改请求的URL会返回良好的数据。

该块正由globalhide.com自己实施。您在问题中添加的链接会提供与您附加的页面相同的页面(或多或少)。我无法确切地告诉您如何实现此热链接阻止,但它可以通过引用者标题。调查referrer spoofing可能会对您有所帮助。

修改

在那里跳了一下枪,引用者欺骗了。我会选择Aaron的饼干建议。

答案 1 :(得分:2)

对于该网址,我有时会获得XML,有时会在Chrome Linux中获得“无热链接”页面。第一个匹配返回同一网址的无链接页面。如果我清除我的cookie并再次访问该页面,我会得到没有热链接的图像。

此网站似乎需要Cookie。以下内容适用于您的代码。

policy = mechanize.DefaultCookiePolicy(rfc2965=True) 
cj = mechanize.LWPCookieJar(policy=policy)
br.set_cookiejar(cj)

有关实施Cookie的不同方法的详细信息,请查看Mechanize Docs - Cookies

修改1 您应该保存Cookie jar,请参阅Cookielib - Save

编辑2 这是网站为我设置的Cookie信息:

Name:   __utma
Content:    53296278.1653562620.1363413018.1311413018.1337443014.1
Domain: .globalhide.com
Path:   /
Send for:   Any kind of connection
Accessible to script:   Yes
Created:    Wednesday, May 1, 2013 6:56:58 AM
Expires:    Friday, May 1, 2015 6:56:58 AM
Name:   s
Content:    x2tjlhb1qfidn5t1ds8kvd24p5
Domain: www.globalhide.com
Path:   /
Send for:   Any kind of connection
Accessible to script:   Yes
Created:    Wednesday, May 1, 2013 6:56:57 AM
Expires:    When the browsing session ends