ScraperWiki のツールを使用して、ASP を利用したサイトをスクレイピングしようとしています。
BBSmates.com Web サイトから特定の市外局番の BBS のリストを取得したいと考えています。このサイトには、一度に 20 件の BBS 検索結果が表示されるので、結果のあるページから次のページに移動するには、フォームを送信する必要があります。
このブログ投稿は、私が始めるのに役立ちました。次のコードは、市外局番 314 の BBS リストの最終ページ (79 ページ) を取得すると考えました。
ただし、取得した応答は FIRST ページです。
url = 'http://bbsmates.com/browsebbs.aspx?BBSName=&AreaCode=314'
br = mechanize.Browser()
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
response = br.open(url)
html = response.read()
br.select_form(name='aspnetForm')
br.form.set_all_readonly(False)
br['__EVENTTARGET'] = 'ctl00$ContentPlaceHolder1$GridView1'
br['__EVENTARGUMENT'] = 'Page$79'
print br.form
response2 = br.submit()
html2 = response2.read()
print html2
上で引用したブログ投稿では、彼らの場合、SubmitControlに問題があったと述べているため、このフォームで 2 つの SubmitControl を無効にしてみました。
br.find_control("ctl00$cmdLogin").disabled = True
cmdLogin を無効にすると、HTTP エラー 500 が生成されました。
br.find_control("ctl00$ContentPlaceHolder1$Button1").disabled = True
ContentPlaceHolder1$Button1 を無効にしても違いはありませんでした。送信は完了しましたが、返されたページはまだ検索結果の 1 ページ目でした。
このサイトでは「Page$Next」を使用していないことに注意してください。
ASPXフォームの送信を機能させるために何をする必要があるかを理解してくれる人はいますか?