我已多次使用此社区,我搜索的问题的答案非常棒。我一直在寻找解决方案,但我遇到了问题。我认为这与我对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
答案 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