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() 告诉我我没有到达我想要的页面(网址应该类似于“ http://www.washingtondcgasprices.com/index.aspx?area=华盛顿%20-%20NE&area=华盛顿%20-%20NW&area=华盛顿%20-%20SE&area=华盛顿%20-%20SW ")

如果您有任何指导,我将不胜感激。谢谢!

4

1 回答 1

1

你可以用 Selenium 做到这一点:

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 回答