Pythonを使用する前にWebクローラーを作成しましたが、スクレイピングしているページはこれまでのところ私の努力に抵抗しています。PythonとBeautifulSoupを使用してWebサイトからデータをスクレイピングしています。私のやり方では、2つのステップがあります。インデックスを作成するページのリストを生成してから、それらのページを解析します。解析の部分は簡単ですが、Pythonを使用してリンクを生成できるように、.aspxページをナビゲートする方法がわかりません。現在、検索ページを手動で保存してスクレイプすることはできますが、可能であればプロセス全体を自動化したいと思います。
問題のページ:http://cookcountyassessor.com/Property_Search/Property_Search.aspx
フォームを使用してタウンシップを選択し、次に近隣とプロパティクラスを選択する必要があります。これにより、いくつかの.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がなく、ページが投稿データを受け入れていないようです。私はここで何かが足りないのでしょうか、それともこれは首を回るのに王室の痛みになるのでしょうか?ヘッダーを接続して、どこにでもアクセスできるかどうかを確認します...