使用urllib.urllibencode值来完成搜索表单

时间:2014-05-13 03:38:48

标签: python html urllib

我已多次使用此社区,我搜索的问题的答案非常棒。我一直在寻找解决方案,但我遇到了问题。我认为这与我对HTML代码和结构缺乏了解有关。现在我正在尝试使用urllib.urlencode填写网站上的表格。不幸的是,无论我添加到字典中的值的组合是什么,html数据都以'汤'是具有搜索选项列表的同一网页。我猜这意味着它没有使用urllib.urlencode正确传递搜索数据。

网页的一个例子是:

http://www.mci.mndm.gov.on.ca/Claims/Cf_Claims/clm_cls.cfm?Div=80

这是我要去的网址,其中结尾DIV = 80或Div = 70等是在前两行中引用另一个函数" urlData(division)'。在这些线之后是问题发生的地方。我试图在搜索表单下为每个输入行添加一个值,但我肯定错过了一些东西。

代码:

    def searchHolder(Name, division):
        url = ('http://www.mci.mndm.gov.on.ca/Claims/Cf_Claims/clm_cls.cfm'+
               '?Div='+str(urlData(division)))#creates url given above
        print url#checked its same url as the url given above for the case I am having problems with
        values = ({'HolderName': Name, 'action':'clm_clr.cfm', 'txtDiv' : 80,
                   'submit': 'Start Search'})
        data = urllib.urlencode(values)
        html = urllib.urlopen(url, data)
        soup = bs4.BeautifulSoup(html)
        soup.unicode
        print soup.text
        return soup

1 个答案:

答案 0 :(得分:0)

表单“action”不是您传递的参数。相反,它是您发送请求以获得结果所需的URL。试一试:

def searchHolder(Name, division):
    url = ('http://www.mci.mndm.gov.on.ca/Claims/Cf_Claims/clm_clr.cfm')
    values = ({'HolderName': Name, 'txtDiv' : 80})
    data = urllib.urlencode(values)
    html = urllib.urlopen(url, data)
    soup = bs4.BeautifulSoup(html)
    soup.unicode
    print soup.text
    return soup