3

このウェブサイト ( http://gasbuddy.com/ ) を使用してガソリン価格を収集しています。基本的に、ページ上部の検索ボックスに郵便番号を入力し、次のページから結果をかき集める Python スクリプトを作成したいと考えています。必要な郵便番号をフォームに入力する最初のステップで行き詰まりました。これは私がこれまでに持っているものです:

from mechanize import Browser
import urllib2

br = Browser()
baseURL = "http://www.gasbuddy.com/"
br.open(baseURL)

zipcode = "20010"

forms = [f for f in br.forms()]
print forms[0]
control = forms[0].find_control("ctl00$Content$GBZS$txtZip")
forms[0]["ctl00$Content$GBZS$txtZip"] = "20010"
br.form = forms[0]
page = br.submit()
content = page.read()
br.geturl()

残念ながら、フォームを送信すると、br.geturl() は、必要なページに到達していないことを通知します (URL は " http://www.washingtondcgasprices.com/index.aspx?area=のようになります)。ワシントン%20-%20NE&area=ワシントン%20-%20NW&area=ワシントン%20-%20SE&area=ワシントン%20-%20SW ")

ご案内がございましたら、よろしくお願いいたします。ありがとう!

4

1 に答える 1

1

あなたはセレンでそれを行うことができます:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

baseURL = "http://www.gasbuddy.com/"

browser = webdriver.Firefox()
zipcode = "20010"

browser.get(baseURL)
elem = browser.find_element_by_id("ctl00_Content_GBZS_txtZip").send_keys(zipcode)
elem = browser.find_element_by_id("ctl00_Content_GBZS_btnSearch").click()

機械化に固執したい場合は、ブラウザを少し調整することをお勧めします。しかし、私はまだあなたを殺しているのはjavascriptだと思っています。解決策は、「JavaScriptを自分で読み、それが何をしているのかを機械化してシミュレートする」ことです。

于 2013-08-02T16:14:31.037 に答える