在使用 Python 之前,我已经编写了网络爬虫,但我正在抓取的页面到目前为止一直对我的努力有抵抗力。我正在使用 Python 和 BeautifulSoup 从网站上抓取数据。我这样做的方式有两个步骤:生成要索引的页面列表,然后解析这些页面。解析部分很简单,但我还没有弄清楚如何将 .aspx 页面导航到以便可以使用 Python 生成链接。我目前可以手动保存搜索页面以抓取它们,但如果可能的话,我想自动化整个过程。
有问题的页面: http: //cookcountyassessor.com/Property_Search/Property_Search.aspx
我需要使用表单来选择一个 Township,然后是 Neighborhood 和 Property Class,通过几个 .aspx 文件来获得搜索结果。我使用 BeautifulSoup 获取所有标签的列表作为表单数据提交,修改了我需要提交的字段,并发送了请求,但是当我打开下一页时它没有给我预期的结果(http:// www.cookcountyassessor.com/Property_Search/nbhd_search.aspx?town=19)。
我正在构建的类的相关代码:
self.jar = http.cookiejar.CookieJar()
self.opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(self.jar))
self.page = ['http://cookcountyassessor.com/Property_Search/Property_Search.aspx']
self.page = self.page + ['http://cookcountyassessor.com/Property_Search/nbhd_search.aspx?town=19'] #Lemont
soup = BeautifulSoup(self.opener.open(self.page[0]))
inputs = soup.findAll("input") + soup.findAll("select")
params = {"__EVENTTARGET": "", "__EVENTARGUMENT": "", "__LASTFOCUS": ""}
for i in inputs:
try:
params[i['name']] = i['value']
except:
params[i['name']] = ''
params['ctl00$BodyContent$town1'] = self.code
self.params = params
params = urllib.parse.urlencode(params)
params = params.encode()
self.opener.open(self.page[0], params)
self.page1 = BeautifulSoup(self.opener.open(self.page[1]))
当我手动提交表单时,.aspx 页面似乎设置了一些 cookie,然后使用标题重定向到不同的页面。使用 Python 提交,我的 jar 中没有 cookie,并且页面似乎不接受我的帖子数据。我是否在这里遗漏了什么,或者这将是一种难以驾驭的皇家痛苦?我想我会开始插入标题,看看它是否能让我到任何地方......