0
import urllib,MultipartPostHandler,urllib2,cookielib
cookies = cookielib.CookieJar()
opener =     urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),MultipartPostHandler.MultipartPostHandler)
urllib2.install_opener(opener)
login = urllib.urlencode(dict(admin_user='admin',admin_pass='****'))
o=opener.open('http://some_domain_name/admin/index.php',login)
print o.read()
### successfully logged-into the system ###################

借助上面的代码,我可以登录管理面板。在这里,我应该发布一些广告(在这里,我将任务和字段自动化,包括广告标题、广告描述和主要重要的一系列图像(我猜图像列表会是一个更好的术语;))

HTML 代码片段:

<form action="postad.php?cityid=15&subcatid=1" method="post" name="frmPost" enctype="multipart/form-data" 

 <!-- Some other code -->


<td><input name="showemail" type="radio" value="1" >&nbsp;</td>
<table class="postad" cellspacing="0" cellpadding="0" border="0" width="100%">

<tr>
    <td><b>Upload Pictures:</b><br>
    <span class="hint">Maximum filesize: 300KB</span><br>
                <input type="file" name="pic[]" size="69"><br>
        <img src="images/spacer.gif" height="2"><br>
                <input type="file" name="pic[]" size="69"><br>
        <img src="images/spacer.gif" height="2"><br>
                <input type="file" name="pic[]" size="69"><br>
        <img src="images/spacer.gif" height="2"><br>
                <input type="file" name="pic[]" size="69"><br>
        <img src="images/spacer.gif" height="2"><br>
                <input type="file" name="pic[]" size="69"><br>
        <img src="images/spacer.gif" height="2"><br>
            </td>
</tr>

</table>


<!-- some other code -->
<input name="do" type="hidden" id="do" value="post">
<button type="submit">Post Now</button>

所以解决这个问题我正在使用这个代码,但每次我都无法附加图像。你们会在这方面帮助我吗?

raw_params={"adtitle":"sample title",
        "area":"sample area",
        "addesc":"<p>sample post</p>",
        "price":"2000",
        "x[1]":"2012",
        "email":"abc@def.com",
        "showemail":"2",
        "subcatid":"15",
    "do":"post",
        }

encoded_params=urllib.urlencode(raw_params)
target_page = 'http://some_domain_name/admin/postad.php?cityid=15&subcatid=15'
opener.open(target_page,encoded_params)

我忘了告诉你一件事,这是我从 LIVEHTTPHeader (mozilla-plugin) 得到的日志

Content-Disposition: form-data; name="adtitle"

sample title
-----------------------------20165274802361271281051822614
Content-Disposition: form-data; name="area"

sample location
-----------------------------20165274802361271281051822614
Content-Disposition: form-data; name="addesc"

<p>sample post</p>
-----------------------------20165274802361271281051822614
Content-Disposition: form-data; name="price"

200
-----------------------------20165274802361271281051822614
Content-Disposition: form-data; name="x[1]"

2012
-----------------------------20165274802361271281051822614
Content-Disposition: form-data; name="email"

abc@def.com
-----------------------------20165274802361271281051822614
Content-Disposition: form-data; name="showemail"

2
-----------------------------20165274802361271281051822614
Content-Disposition: form-data; name="pic[]"; filename="3_d_flower.jpg"
Content-Type: image/jpeg

ÿØÿà

请对此有所了解:filename="3_d_flower.jpg

4

2 回答 2

0
import urllib,MultipartPostHandler,urllib2,cookielib

cookies = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),MultipartPostHandler.MultipartPostHandler)
urllib2.install_opener(opener)
login = urllib.urlencode(dict(admin_user='admin',admin_pass='****'))
o=opener.open('http://some_domain_name.com/admin/index.php',login)
print o.read()
### logged-into the system ###################
### Now post the things ####################
raw_params={"adtitle":"sample title",
        "area":"sample area",
        "addesc":"<p>sample post</p>",
        "price":"2000",
        "x[1]":"2012",
        "email":"abc@def.com",
        "showemail":"2",
    "pic[0]":open("indian_eye.jpg", "rb"),
    "pic[1]":open("nature.jpg", "rb"),
        "subcatid":"1",
    "do":"post",
        }




url="http://some_domain_name.com/admin/postad.php?cityid=15&subcatid=1"
opener.open(url, raw_params)

------------------------------------------------
于 2012-12-28T04:33:11.357 回答
0

我肯定会requests为此推荐图书馆。它使多部分 POST变得更加简单。它还可以更简单地处理 cookie 。

登录代码在请求中如下所示:

import requests
o = requests.get('http://some_domain_name/admin/index.php', 
                 data={admin_user: 'admin',
                       admin_pass: '****'})
print o.text
print o.cookies
于 2012-12-27T19:29:42.387 回答