Python 斜纹:可通过 PHP 脚本访问下载文件
Python twill: download file accessible through PHP script
我使用 twill
在受登录表单保护的网站上导航。
from twill.commands import *
go('http://www.example.com/login/index.php')
fv("login_form", "identifiant", "login")
fv("login_form", "password", "pass")
formaction("login_form", "http://www.example.com/login/control.php")
submit()
go('http://www.example.com/accueil/index.php')
在最后一页上,我想下载一个 Excel 文件,该文件可通过具有以下属性的 div
访问:
onclick="OpenWindowFull('../util/exports/control.php?action=export','export',200,100);"
使用 twill
我可以访问 PHP 脚本的 URL 并显示文件的内容。
go('http://www.example.com/util/exports/control.php?action=export')
show()
然而,返回了一个与原始内容相对应的字符串:因此无法使用。有没有办法以类似于 urllib.urlretrieve()
的方式直接检索 Excel 文件?
我成功地将饼干罐从 twill
发送到 requests
。
注意:我无法使用 requests
只是因为登录时的复杂控制(无法找出正确的 headers 或其他选项)。
import requests
from twill.commands import *
# showing login form with twill
go('http://www.example.com/login/index.php')
showforms()
# posting login form with twill
fv("login_form", "identifiant", "login")
fv("login_form", "password", "pass")
formaction("login_form", "http://www.example.com/login/control.php")
submit()
# getting binary content with requests using twill cookie jar
cookies = requests.utils.dict_from_cookiejar(get_browser()._session.cookies)
url = 'http://www.example.com/util/exports/control.php?action=export'
with open('out.xls', 'wb') as handle:
response = requests.get(url, stream=True, cookies=cookies)
if not response.ok:
raise Exception('Could not get file from ' + url)
for block in response.iter_content(1024):
handle.write(block)
另一种使用twill.commands.save_html
的方式修改为'wb'而不是'w':Python 2.7 using twill, saving downloaded file properly
我使用 twill
在受登录表单保护的网站上导航。
from twill.commands import *
go('http://www.example.com/login/index.php')
fv("login_form", "identifiant", "login")
fv("login_form", "password", "pass")
formaction("login_form", "http://www.example.com/login/control.php")
submit()
go('http://www.example.com/accueil/index.php')
在最后一页上,我想下载一个 Excel 文件,该文件可通过具有以下属性的 div
访问:
onclick="OpenWindowFull('../util/exports/control.php?action=export','export',200,100);"
使用 twill
我可以访问 PHP 脚本的 URL 并显示文件的内容。
go('http://www.example.com/util/exports/control.php?action=export')
show()
然而,返回了一个与原始内容相对应的字符串:因此无法使用。有没有办法以类似于 urllib.urlretrieve()
的方式直接检索 Excel 文件?
我成功地将饼干罐从 twill
发送到 requests
。
注意:我无法使用 requests
只是因为登录时的复杂控制(无法找出正确的 headers 或其他选项)。
import requests
from twill.commands import *
# showing login form with twill
go('http://www.example.com/login/index.php')
showforms()
# posting login form with twill
fv("login_form", "identifiant", "login")
fv("login_form", "password", "pass")
formaction("login_form", "http://www.example.com/login/control.php")
submit()
# getting binary content with requests using twill cookie jar
cookies = requests.utils.dict_from_cookiejar(get_browser()._session.cookies)
url = 'http://www.example.com/util/exports/control.php?action=export'
with open('out.xls', 'wb') as handle:
response = requests.get(url, stream=True, cookies=cookies)
if not response.ok:
raise Exception('Could not get file from ' + url)
for block in response.iter_content(1024):
handle.write(block)
另一种使用twill.commands.save_html
的方式修改为'wb'而不是'w':Python 2.7 using twill, saving downloaded file properly