无法使用urlopen提交webform

时间:2014-05-01 15:22:05

标签: python webforms urlopen

我是一个关于抓取的新手,但我已经开始使用Python 3.4进行一个小项目了 由于某种原因,以下代码无法正确提交。在我的第一次尝试中,我基本上只想在网络表单上点击“searh”(“Sök”)。

我使用的代码是:

import urllib.parse
import urllib.request

url = 'http://www.kkv.se/Diariet/default.asp?nav=2'
values = {  'action' : 'S%F6k',
        'dossnr_from' : '0',
        'dossnr_tom' :  '0',
        'hits_page' :   '10',
        'hits_search' : '50',
        'sort' :  'Regdatum',
        'sortorder' : 'Fallande'}

data = urllib.parse.urlencode(values)
print(values)
data = data.encode('utf-8') 
req = urllib.request.Request(url, data)
response = urllib.request.urlopen(req)
the_page = response.read()
print(the_page)

我也尝试过提交帖子结果(我在手动发布后在Firebug中找到):

url_values = 'diarienr=&diaryyear=&text_arendemening=&text_avsandare=&regdatum_from=&
regdatum_tom=&beslutsdatum_from=&beslutsdatum_tom=&dossnr_from=0&dossnr_tom=0&
hits_page=10&sort=Regdatum&hits_search=50&sortorder=Fallande&action=S%F6k'

url = 'http://www.kkv.se/Diariet/default.asp?nav=2'
full_url = url + '?' + url_values
data = urllib.request.urlopen(full_url)
print(data.read())

但是这两个代码只吐出了起始网址的来源。 任何人都可以帮我指出正确的方向吗?

非常感谢你的帮助。 Equilib

2 个答案:

答案 0 :(得分:0)

您应该从您发布到的网址中删除?nav=2

答案 1 :(得分:0)

请注意,在您的第二次尝试中,该网址已包含'?'并且查询字符串以nav = 2:

开头
url = 'http://www.kkv.se/Diariet/default.asp?nav=2'

然后,您构建一个完整的网址,并包含一个冗余的'?'在基本URL之后。那'?'应该是'&#;;',因为到基本URL结束时,查询字符串已经开始。