我试图发送POST请求到this site以在其数据库中执行搜索,但它只是返回相同的页面,而不是页面I正在寻找。如果我尝试使用我的参数访问该网站,它会拒绝我的请求。我觉得我错过了一些东西,也许有人可以帮助我。尝试使用urllib.request发送POST请求返回相同的页面
import urllib.request
from bs4 import BeautifulSoup
DATA = urllib.parse.urlencode({'plz_ff': 50000, 'plz_ff2': 50030})
DATA = DATA.encode('utf-8')
request = urllib.request.Request("http://www.altenheim-adressen.de/schnellsuche/index.cfm", 'POST')
# adding charset parameter to the Content-Type header.
request.add_header("text/html;charset=UTF-8","application/x-www-form-urlencoded;charset=utf-8Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0")
f = urllib.request.urlopen(request, DATA)
soup = BeautifulSoup(f)
print(soup.prettify)
f.close()
soup.close
编辑2:现在的代码工作,非常感谢。我不得不调整搜索参数来寻找suche1.cfm
,现在它返回我正在寻找的结果。这是成品:
import urllib.request
from bs4 import BeautifulSoup
params = {
'name_ff': '',
'strasse_ff': '',
'plz_ff': 50000,
'plz_ff2': 50030,
'ort_ff': '',
'bundesland_ff': '',
'land_ff': '',
'traeger_ff': '',
'Dachverband_ff': '',
'submit2' : 'Suchen'
}
DATA = urllib.parse.urlencode(params)
DATA = DATA.encode('utf-8')
request = urllib.request.Request(
"http://www.altenheim-adressen.de/schnellsuche/suche1.cfm",
DATA)
# adding charset parameter to the Content-Type header.
request.add_header("Content-Type", "application/x-www-form-urlencoded;charset=utf-8")
request.add_header("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0")
f = urllib.request.urlopen(request)
soup = BeautifulSoup(f)
print(soup.prettify)
f.close()
'soup.close'什么也不做(它搜索名为标签''),但你不不需要关闭BeautifulSoup树。 'soup.prettify()'需要被*调用*。 –
2014-11-21 17:24:25
啊,是的,谢谢。 – 2014-11-21 18:18:10