Я пытаюсь использовать механизировать, чтобы захватить цены на метро-север железной дороги в Нью-Йорке с этого сайта:
http://as0.mta.info/mnr/fares/choosestation.cfmPython механизировать Javascript
Проблема заключается в том, что при выборе первого варианта, сайт использует JavaScript, чтобы заполнить список возможных мест назначения. Я написал эквивалентный код в python, но я не могу заставить все это работать. Вот то, что я до сих пор:
import mechanize
import cookielib
from bs4 import BeautifulSoup
br = mechanize.Browser()
br.set_handle_robots(False)
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')]
br.open("http://as0.mta.info/mnr/fares/choosestation.cfm")
br.select_form(name="form1")
br.form.set_all_readonly(False)
origin_control = br.form.find_control("orig_stat", type="select")
origin_control_list = origin_control.items
origin_control.value = [origin_control.items[0].name]
destination_control_list = reFillList(0, origin_control_list)
destination_control = br.form.find_control("dest_stat", type="select")
destination_control.items = destination_control_list
destination_control.value = [destination_control.items[0].name]
response = br.submit()
response_text = response.read()
print response_text
Я знаю, что я не дал вам код для метода reFillList()
, потому что это долго, но предполагаю, что это правильно создает список объектов mechanize.option. Python ни о чем не жалуется, но на отправке я получаю html для этого предупреждения:
«Информация о тарифах на проезд между двумя линиями недоступна в режиме онлайн. Свяжитесь с нашим Информационным центром для клиентов в 511 и спросите поговорить с представителем для получения дополнительной информации ».
Я что-то упустил? Спасибо за помощь!
Огромное спасибо за помощь! – jmetz