2014-09-10 52 views
0

我想从网页上下载文件,但我必须先登录。我正在使用Python Requests模块,并且我认为我做得很对,因为当我打印GET响应的HTML时,它就在那里。然而,没有任何风格存在,并且当我在网页中打开它时,没有任何链接可用。 我的密码是'username''password'是我的实际用户名和密码的字符串。为什么在使用Python Requests模块后我失去了网页的功能?

import requests 

f = open('a.html', 'w') 
loginurl = 'https://www.example.com/login' 
username = 'username' 
password = 'password' 
url = 'https://www.example.com/secured_page_containing_file' 

payload = { 
    'UserName' : username, 
    'Password' : password 
} 

with requests.Session() as s: 
    s.post(loginurl, data=payload) 

    r = s.get(url) 
    f.write(r.text) 

同样,这部作品在提取'https://www.example.com/secured_page_containing_file'的HTML我的条件,但功能是不存在的。任何帮助是极大的赞赏。谢谢!

回答

1

如果您使用浏览器查看文件,现在您正在使用文件的不同的位置。任何相对URL都将被解析为相对于该新位置,并且这些URL都不会起作用。您必须将这些网址重写为绝对网址才能使用。

这是一个事实撇开该web服务器可以基于任何数量的因素,包括你发送的内容标题请求页面时,页面可以改变行为时,与页面相关联的JavaScript代码是改变他们的反应由您的浏览器执行。

这一切与requests或Python无关,真的。

+0

啊,说得通。因此,我将不得不使用美丽的汤,并改变所有这些,或者有更好的方法来解决这个问题吗? – sbru 2014-09-10 18:47:49

+0

其实,在这里回答我自己的问题,但如果我没有将它保存到文件并直接从GET请求处理它,那么我应该没事吧? – sbru 2014-09-10 18:50:23

+0

@bagelboy:BeautifulSoup会是一个很好的方法来做到这一点。考虑到你可能会遇到[同源策略](http://en.wikipedia.org/wiki/Same-origin_policy)问题。 – 2014-09-10 18:51:12

相关问题