我使用过这个社区很多次,我搜索的问题的答案都很棒。我已经搜索了一个解决这个问题,但我有问题。我认为这与我对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