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



我使用过这个社区很多次,我搜索的问题的答案都很棒。我已经搜索了一个解决这个问题,但我有问题。我认为这与我对html代码和结构缺乏了解有关。现在我正在尝试使用urllib。在网站上填写表单的url码。不幸的是,无论我向字典中添加什么值的组合,作为"汤"返回的html数据都是带有搜索选项列表的同一网页。我猜这意味着它没有正确地传递搜索数据与urllib.urlencode。

网页的一个例子是:

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

这是我要去的url,其中结束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

表单"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

相关内容

  • 没有找到相关文章

最新更新