Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 线程发布脚本,invision powerboard_Python_Python 3.x_Urllib_Invision Power Board - Fatal编程技术网

Python 线程发布脚本,invision powerboard

Python 线程发布脚本,invision powerboard,python,python-3.x,urllib,invision-power-board,Python,Python 3.x,Urllib,Invision Power Board,我们在某个网站上做两件事,下载新文件和发布文件,它们很容易定义(而且很乏味),所以我一直在尝试编写脚本 总之,我已经完成了文件下载脚本。我可以重新使用登录代码 #Cookies cookies = http.cookiejar.LWPCookieJar() opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookies)) urllib.request.install_opener(opener)

我们在某个网站上做两件事,下载新文件和发布文件,它们很容易定义(而且很乏味),所以我一直在尝试编写脚本

总之,我已经完成了文件下载脚本。我可以重新使用登录代码

#Cookies
cookies = http.cookiejar.LWPCookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookies))
urllib.request.install_opener(opener)

#Authenticate user
print("logging in")
url = "http://someurl.com/index.php?app=core&module=global&section=login&do=process"
values = {"username" : USERNAME, 
          "password" : PASSWORD}
data = urllib.parse.urlencode(values)
req = urllib.request.Request(url, data)
urllib.request.urlopen(req)
但是要发布一个包含上述文件的线程,您必须附加它。我知道如何发送正确的标题和文字的线程从我学到了如何登录。我的问题是,要附加文件,您必须向表单发送请求,而不是页面请求。 例如,从“文件”对话框中选择所需的文件,然后单击“附加文件”,然后将其上载,然后完成所需线程的编写,然后提交页面

下面是相关的html

<fieldset class='attachments'> 

<script type='text/javascript'> 
//<![CDATA[
 ipb.lang['used_space'] = "Used <strong>[used]</strong> of your <strong>[total]</strong> global upload quota (Max. single file size: <strong>256MB</strong>)";
//]]>
</script> 

<h3 class='bar'>Attachments</h3> 
<!--SKINNOTE: traditional uploader needs this. --> 
<div id='attach_error_box' class='message error' style='display:none'></div> 
<input type='file' id='nojs_attach_0_1' class='input_upload' name='FILE_UPLOAD' tabindex='1' /> 
<input type='file' id='nojs_attach_0_2' class='input_upload' name='FILE_UPLOAD' tabindex='1' /> 

<ul id='attachments'><li style='display: none'></li></ul> 
<br /> 
<span id='buttonPlaceholder'></span> 
<input type='button' id='add_files_attach_0' class='input_submit' value='Attach This File' style='display: none; clear: both' tabindex='1' /> <span class='desc' id='space_info_attach_0'>Used <strong>9.45MB</strong> of your <strong>976.56MB</strong> global upload quota (Max. single file size: <strong>256MB</strong>)</span>

//
附件

使用了您的976.56MB全局上载配额的9.45MB(最大单个文件大小:256MB
我不知道如何编码,所以我在寻找方向

另外,如果这个sorta脚本在其他语言中可能更容易,请告诉我是哪种语言?我使用python只是因为我知道它

非常感谢。

仅供参考:表单提交是页面请求,当您登录时,由于您在Request()调用中使用了数据值,因此您已经向表单发送了post请求。问题是如何将文件发送到哪个URL等,这可能很棘手,因为它是通过javascript完成的。