In [3222]:
my_key = 'AIzaSyDMbpmHBLl7dTOXUOMZP7Vi3zbMJlByEKM'
from bs4 import BeautifulSoup as BS
import requests
In [22]:
!pip install python-google-places
Collecting python-google-places
Downloading python-google-places-1.4.0.tar.gz
Requirement already satisfied (use --upgrade to upgrade): six in /Users/zoesh/anaconda/lib/python2.7/site-packages (from python-google-places)
Building wheels for collected packages: python-google-places
Running setup.py bdist_wheel for python-google-places ... - done
Stored in directory: /Users/zoesh/Library/Caches/pip/wheels/16/72/4f/81b09793918b7959d4c9cd20e391c649d39f4bc86a42c6ce8d
Successfully built python-google-places
Installing collected packages: python-google-places
Successfully installed python-google-places-1.4.0
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
In [40]:
baseurl = 'https://www.google.com/search?q=ice+bar+stockholm'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
In [41]:
r = requests.get(baseurl,headers=headers)
In [42]:
s = BS(r.text, 'html.parser')
In [44]:
# soup_class ="_kLl _R1o"
content1= s.find("div", attrs={"class": "_OKe"}).find('div',attrs={'class':'_B1k'}).find('b')
print content1.text
30 min to 1 hr
In [27]:
from googleplaces import GooglePlaces, types, lang
YOUR_API_KEY = 'AIzaSyDMbpmHBLl7dTOXUOMZP7Vi3zbMJlByEKM'
google_places = GooglePlaces(YOUR_API_KEY)
# You may prefer to use the text_search API, instead.
query_result = google_places.nearby_search(
location='New York, United States', keyword='New York Public Library',
radius=20000)
# If types param contains only 1 item the request to Google Places API
# will be send as type param to fullfil:
# http://googlegeodevelopers.blogspot.com.au/2016/02/changes-and-quality-improvements-in_16.html
if query_result.has_attributions:
print query_result.html_attributions
for place in query_result.places:
# Returned places from a query are place summaries.
print place.name
print place.geo_location
print place.place_id
# The following method has to make a further API call.
place.get_details()
# Referencing any of the attributes below, prior to making a call to
# get_details() will raise a googleplaces.GooglePlacesAttributeError.
print place.details # A dict matching the JSON response from Google.
# print place.local_phone_number
# print place.international_phone_number
# print place.website
# print place.url
# Getting place photos
# for photo in place.photos:
# # 'maxheight' or 'maxwidth' is required
# photo.get(maxheight=500, maxwidth=500)
# # MIME-type, e.g. 'image/jpeg'
# photo.mimetype
# # Image URL
# photo.url
# # Original filename (optional)
# photo.filename
# # Raw image data
# photo.data
# Are there any additional pages of results?
if query_result.has_next_page_token:
query_result_next_page = google_places.nearby_search(
pagetoken=query_result.next_page_token)
# Adding and deleting a place
try:
added_place = google_places.add_place(name='Mom and Pop local store',
lat_lng={'lat': 51.501984, 'lng': -0.141792},
accuracy=100,
types=types.TYPE_HOME_GOODS_STORE,
language=lang.ENGLISH_GREAT_BRITAIN)
print added_place.place_id # The Google Places identifier - Important!
print added_place.id
# Delete the place that you've just added.
google_places.delete_place(added_place.place_id)
except GooglePlacesError as error_detail:
# You've passed in parameter values that the Places API doesn't like..
print error_detail
New York Public Library - Stephen A. Schwarzman Building
{u'lat': Decimal('40.75318230000001'), u'lng': Decimal('-73.9822534')}
ChIJqaiomQBZwokRTHOaUG7fUTs
{u'rating': Decimal('4.7'), u'reference': u'CmRRAAAAn5El87I1roWbUnf_b7AqOi_QQvBS5BBZpO5Y00vGOgn2rlVRuMCYV4AfC2i4GAqDF1whhQOtlJgh-tUMnW1pvSZulBqbzgRuU5p5k3mJWy3YFAMP0Nr0i7qvxSJYDMtXEhCe6RRCaJKaN7_o11ZTLRIvGhQ1BjCPUmuGSrtRXaPcLvfHGM6eIg', u'price_level': 0, u'place_id': u'ChIJqaiomQBZwokRTHOaUG7fUTs', u'url': u'https://maps.google.com/?cid=4274443186243007308', u'formatted_address': u'476 5th Ave, New York, NY 10018, USA', u'id': u'0ddfa876ffc305e1b241cbac33601e82d347775b', u'opening_hours': {u'periods': [{u'close': {u'day': 0, u'time': u'1700'}, u'open': {u'day': 0, u'time': u'1300'}}, {u'close': {u'day': 1, u'time': u'1800'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'2000'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'2000'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1800'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1800'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1800'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 6:00 PM', u'Tuesday: 10:00 AM \u2013 8:00 PM', u'Wednesday: 10:00 AM \u2013 8:00 PM', u'Thursday: 10:00 AM \u2013 6:00 PM', u'Friday: 10:00 AM \u2013 6:00 PM', u'Saturday: 10:00 AM \u2013 6:00 PM', u'Sunday: 1:00 \u2013 5:00 PM'], u'open_now': False, u'exceptional_date': []}, u'vicinity': u'476 5th Avenue, New York', u'scope': u'GOOGLE', u'website': u'http://www.nypl.org/locations/schwarzman', u'utc_offset': -300, u'photos': [{u'photo_reference': u'CoQBdwAAAGkXdwWT6v7gmayENvkBdfxQX3QwJs33epQKtvQf-D0nQkFTX1FmjxPIYZ9S1CzMiyJWFEcXpqbLUx0E0bJOMNM5nrM9qE-zFoAleeIkJQJmHermx2wyR-YUPW5_dZ43RTzoO56M311qeQozPzk-0b3eiaZMnhtjVNmB82gVzcAoEhB4AIAcG7R8dGTeG7JjkrAlGhTwq6u4iddDfZFHMGCGl4GKgda2nw', u'width': 3872, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/110672763140227798702/photos">Glenn Ennekens</a>'], u'height': 2592}, {u'photo_reference': u'CoQBdwAAAMi-oK3GoBMUlGyfuDY4qxNHMjOqIZ8t-ph4qrKq1uinjVOgFHkKH0Dh85wJdlAMyEBsvV0ZeOpsVIsSDz659jgK_LtzD2p71Wlvun863J7z5-QJkEGwQLQJOvsmeq7wO07rtkQx7-Ov__Tf-qW631FnLmZ_7KUwYLmeYszxt0UDEhD7m8x--6vo26cpA1rI4F14GhRTXvbbyzc7EXoypqcK64W5upu9Fg', u'width': 2048, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/107885403616654944581/photos">Jonathan Li</a>'], u'height': 1366}, {u'photo_reference': u'CoQBdwAAANoCS33DE4wTivr5GPbMBNWnyNcMdGkafkhCHNbZNwmC6F-t9FPx-hXTyTiPKzNio_tOiCshVlFdZlWVHH0aQfKhmldxNrrHojDpZJmi96DJMVbp1uDkfGBJuu7-Q_Qa8Qm-A5xaWrBk_U5YHzc_14pL3D_hRva8CyaGF_9LX43cEhDgRPio2DqvelfgixsyrzRxGhS3nX38eWZWRk56APDX1s_ey_6RPg', u'width': 4608, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/105169972937895465692/photos">Raul Anglas</a>'], u'height': 3456}, {u'photo_reference': u'CoQBdwAAAC6jjSyYqui3X8z2yrVzd3-zJgrDQ005rnyng9EFfnFP3rbxQ6uuXKo7X_WQC74sl60HCu34RYhmk9j5MsG7gbojZByhfP5x_e_hqI9b_0QCLgMcF00VTpGbBaGugAyWCMYpeALtGXXOfcjS-53Qo3gyIdkVuiAs5Wl5pfsM27MeEhCWozbcOjd-hCzjji6bAkPCGhRClf54E-P7Tt64B9Qpi5k6NY7A3Q', u'width': 4288, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/117221050593177983749/photos">Guadalupe Patane</a>'], u'height': 2848}, {u'photo_reference': u'CoQBdwAAAC2xYNHLCkFs3M2Qqb4V-nVX8orUALCu5YWctDnVsn5CXYa5HqV5Qcj2EKZgd1O88McjQqpat-efYHMMzREVGJLa_zyj92eDLEV4aIX-hfr9oCeANCEEkj2nGhyLs5CY5Sj7FWLZhKIKNBR6cP37yRPbvVCPLdV6Ud3lNm0bLmTQEhAIzr_aSDOku2FcurhPqJZkGhQ_v1CeliWuU7e1_T3c7b5z139rBQ', u'width': 4128, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/105960006903635623896/photos">Abhinav Maurya</a>'], u'height': 2322}, {u'photo_reference': u'CoQBdwAAADgIvfs6H3QDEHgUR6oyS97haEW13nBcEWsN5ddx0EXViiRi12kK-PWbgpqndaOeCRSQ5Fa-J4LmyRkspdInvajV2FiDK1_q0bWymywtN2r1lB5ZkXFWS1O6LPIQp1VTJIlarwPQrjQjwCJh_AdylHo_geqtmoCyIE4tXseLQ17uEhDMi1Z1zbAza2x8ADBI6gVJGhRgh__Ms0oCYKnfPNM5ReRWdBVdeQ', u'width': 5312, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/109860168635267382627/photos">Shppng Accnt</a>'], u'height': 2988}, {u'photo_reference': u'CoQBdwAAAE8MHfJjpGlJRk7HaWMFaZM8qclf1IJzrdrO0m_A24gsWOUlG6K8oH7fxqM3idGXO8PspeonanEo0e9kE6vkS1k1gX4vbgWJEtDUDm15QoQwyr_ALJmb-MN5PozkUwTd8DM_163vrEy7kMMLW8vUHSefHJtsx7NjCU7-OcqbPweGEhCBO26gMsVWJ1U-pIiOsMRNGhScfreGpGU-pMr3e5tI5LYX-n6opA', u'width': 2268, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/107285787450079287894/photos">Hotel White Mansion Phnom Penh</a>'], u'height': 4032}, {u'photo_reference': u'CoQBdwAAAKa5OS_u4nwH98yn_t7RaLYGHRDK2Uql8jHZTxdNif8xNOmzYbYuIbd7yaXyBzBMJPldPyoa0ejZoBJzQt5VzBM_0DPj3UaqPw0WrSQ1_Ovgg-IjrwPbrkdsxACacLoei_aqp7yydYBBZewQ-7LC17b_HoBcihLMhyUn2A3UcQdmEhDcDMaqxi1GtDz5yC5apHICGhSvkTkNAlcfUeKXLVGqLskatS8adg', u'width': 5477, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/111901557942238728463/photos">Gotham Ny</a>'], u'height': 3651}, {u'photo_reference': u'CoQBdwAAAG4_Se7jiMg6T_Hdj207YDEj-IWhr-wWmiO0imhrE7NnuKFqOpVnQ1dM7JgyEa0p7Nc-14PzOHOMAlxSWDkBPKCXvpi0oDXCtIVG-EQi6XrXjLEC5J09xbjVxZnAp3t4RoAWhpWsCXczniUJSo-ZIj8ZxG0gfI8fBB4ucrEzLK6wEhCVDPZzALPvjYGQpeMFE03-GhRD64BOYBwYLvUAAHv2TIofEmlSAQ', u'width': 5312, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/108718586958277493558/photos">Joao-Pierre Ruth</a>'], u'height': 2988}, {u'photo_reference': u'CoQBdwAAAOFNTJtZzpk1if7X7iwTovgDQTBltKqWxU4-cxESU9ieFRDiY11m1jkP7UnoG1kuoABdkomo8tBm_PxacgTPgsZrPGAgXGS_jqM6ePkRUv0-Aumgspso0oXyQBHpOFZ-k2jPpyLBmxDvt6dAvIZqqt-R1-G8sV_GXiJS5yBMTGpvEhB14ooAom_MYTPLfmQ2a2m5GhRDPzA8EjGykU51uBrmCxEIqqk1WQ', u'width': 4928, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/100223216213159507913/photos">Ja Drapo</a>'], u'height': 3264}], u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png', u'name': u'New York Public Library - Stephen A. Schwarzman Building', u'geometry': {u'location': {u'lat': Decimal('40.75318230000001'), u'lng': Decimal('-73.9822534')}, u'viewport': {u'northeast': {u'lat': Decimal('40.7542163'), u'lng': Decimal('-73.98090219999999')}, u'southwest': {u'lat': Decimal('40.7523835'), u'lng': Decimal('-73.9827038')}}}, u'adr_address': u'<span class="street-address">476 5th Ave</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10018</span>, <span class="country-name">USA</span>', u'international_phone_number': u'+1 917-275-6975', u'reviews': [{u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-bdIFBWhCTuk/AAAAAAAAAAI/AAAAAAAAIO8/tkPxSp73JJY/s128/photo.jpg', u'language': u'en', u'text': u"A beautiful library with neoclassical architecture. It's just an absolutely beautiful building with next artwork and exhibits all the time. They also have some rare manuscripts and some cool maps. They have a new cafe here but I haven't been yet.", u'author_name': u'Stephanie Cheng', u'relative_time_description': u'3 weeks ago', u'author_url': u'https://www.google.com/maps/contrib/106079448191189870400/reviews', u'time': 1485359149}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'author_name': u'Nancy Morris', u'language': u'en', u'text': u'Magnificent architecture, best shop for NY mementos we found (and very friendly staff), so glad we took time to do this. We are readers, and love libraries. This library is classic and beautiful! And the lions looked their best for the holidays. A happy memory.', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/103021354307904327532/reviews', u'time': 1483336327}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'author_name': u'tony manero', u'language': u'en', u'text': u'decent hours here. i could spend all day here. they have services for immigrants like my gramps who came to this country with $6 in his pocket and a hard work ethic. there is a good collection of books. computer time is adequate. convenient too. someone mentions this place is old school it is and we prefer old school', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/118187071229971900779/reviews', u'time': 1482617708}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-EoiczhmMoTk/AAAAAAAAAAI/AAAAAAAAGJ4/nzJLaEhfyT0/s128/photo.jpg', u'language': u'en', u'text': u"Phenomenal experience. A great public resource. Enjoyed the free exhibition of Guerard prints and settled in to a comfortable chair in the reading room became absorbed in a good book. The building is stunning. it's a fine piece of Beaux Arts architecture. Thank you.", u'author_name': u'Joy Cuming', u'relative_time_description': u'in the last week', u'author_url': u'https://www.google.com/maps/contrib/116918817218338136889/reviews', u'time': 1487008916}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-jEHLTU9R4Ws/AAAAAAAAAAI/AAAAAAAAIRg/f-JojFeBly8/s128/photo.jpg', u'language': u'en', u'text': u'The architecture of the building facade and the library rooms is just stunning and picture-worthy. I spent a good two hours just walking around and taking photos, mindful of the other people working in and using the library. It is more than a library, although the library collection is pretty impressive as it is. It has public art in practically all corners of the building, small exhibits of cultural and historical significance, even a gift shop/bookstore. Best of all, it is free to the public.', u'author_name': u'Gomer Aquino', u'relative_time_description': u'3 months ago', u'author_url': u'https://www.google.com/maps/contrib/113815392849087130851/reviews', u'time': 1479193621}], u'formatted_phone_number': u'(917) 275-6975', u'address_components': [{u'long_name': u'476', u'types': [u'street_number'], u'short_name': u'476'}, {u'long_name': u'5th Avenue', u'types': [u'route'], u'short_name': u'5th Ave'}, {u'long_name': u'Midtown West', u'types': [u'neighborhood', u'political'], u'short_name': u'Midtown West'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10018', u'types': [u'postal_code'], u'short_name': u'10018'}]}
New York Public Library
{u'lat': Decimal('40.7942325'), u'lng': Decimal('-73.94343599999999')}
ChIJ52DRDAT2wokRijxbirDIuN4
{u'website': u'https://www.nypl.org/', u'rating': Decimal('3.8'), u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRSAAAAXwwRyRsaaJ8YKGvi0-T23C9LZ9imhHiVZy4DzQmg0lah4zxCn2o7clGfcTj7yr5qlNzLoub6-1wTa2royxq6F1cJbwzG5BEOxOJzwJSTbiQmrIiJX0xDcf4JpJTMp4iuEhBLk7HIxQGjFf01oIc5DNueGhTtKc9cJfyvhBmdOhiw3Am9N6LrLg', u'geometry': {u'location': {u'lat': Decimal('40.7942325'), u'lng': Decimal('-73.94343599999999')}, u'viewport': {u'northeast': {u'lat': Decimal('40.7944323'), u'lng': Decimal('-73.94328855000002')}, u'southwest': {u'lat': Decimal('40.7941659'), u'lng': Decimal('-73.94348514999999')}}}, u'adr_address': u'<span class="street-address">174 E 110th St</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10029-3212</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJ52DRDAT2wokRijxbirDIuN4', u'international_phone_number': u'+1 212-534-2930', u'vicinity': u'174 East 110th Street, New York', u'reviews': [{u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-Kb0rS8-EpqU/AAAAAAAAAAI/AAAAAAAAGv8/cNoqVXDwCD8/s128/photo.jpg', u'language': u'en', u'text': u"This is one of the smaller libraries, they have a kids section and offer kid friendly activities. I find the staff here to be pleasant and helpful. There's a cute bakery right next door.", u'author_name': u'Elianny Salcedo', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/108930872894861950091/reviews', u'time': 1484419266}, {u'rating': 1, u'aspects': [{u'rating': 0, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-rIltcT8L5ts/AAAAAAAAAAI/AAAAAAAADWU/w927yeJ1IU4/s128/photo.jpg', u'language': u'en', u'text': u"I honestly don't know why this library is even open... They have barely any books, the staff acts as if they're doing you a favor by doing they're jobs.", u'author_name': u'YejideNia DIn', u'relative_time_description': u'8 months ago', u'author_url': u'https://www.google.com/maps/contrib/107687175512223126682/reviews', u'time': 1464779509}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-95uOxld7_K4/AAAAAAAAAAI/AAAAAAAAAF8/ta8wl6uhOhI/s128/photo.jpg', u'language': u'en', u'text': u'Walked in and out in a matter of ten minutes with the papers and information I needed.', u'author_name': u'Oswaldo Garcia', u'relative_time_description': u'5 months ago', u'author_url': u'https://www.google.com/maps/contrib/107688851904887914614/reviews', u'time': 1473570072}, {u'rating': 2, u'aspects': [{u'rating': 0, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-IATw5qFFphg/AAAAAAAAAAI/AAAAAAAAAC8/f00S9uEPOo8/s128/photo.jpg', u'language': u'en', u'text': u'Worst New York library there is', u'author_name': u'David Abreu', u'relative_time_description': u'3 years ago', u'author_url': u'https://www.google.com/maps/contrib/117153145705212588287/reviews', u'time': 1390076310}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'author_name': u'Fely Garcia', u'language': u'es', u'text': u'Aqui es mi Lugar favorito !\U0001f4da\U0001f4d6', u'relative_time_description': u'6 months ago', u'author_url': u'https://www.google.com/maps/contrib/110565374016002547815/reviews', u'time': 1469652895}], u'formatted_phone_number': u'(212) 534-2930', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=16048797932695796874', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1800'}, u'open': {u'day': 1, u'time': u'1100'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 11:00 AM \u2013 6:00 PM', u'Tuesday: 10:00 AM \u2013 7:00 PM', u'Wednesday: 10:00 AM \u2013 7:00 PM', u'Thursday: 10:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'174', u'types': [u'street_number'], u'short_name': u'174'}, {u'long_name': u'East 110th Street', u'types': [u'route'], u'short_name': u'E 110th St'}, {u'long_name': u'East Harlem', u'types': [u'neighborhood', u'political'], u'short_name': u'East Harlem'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10029', u'types': [u'postal_code'], u'short_name': u'10029'}, {u'long_name': u'3212', u'types': [u'postal_code_suffix'], u'short_name': u'3212'}], u'formatted_address': u'174 E 110th St, New York, NY 10029, USA', u'id': u'de267ecb2165247879d61f42c66f18a270d0c6fa', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library
{u'lat': Decimal('40.82996109999999'), u'lng': Decimal('-73.87484560000001')}
ChIJ_eLUvO_0wokRDy0jMptVZUw
{u'website': u'https://www.nypl.org/', u'rating': Decimal('4.2'), u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRRAAAAWQ0cluSF3oWbbey9t8gxOiAHAh22ecmuNGXxXiVForvjlyXuS1daxiCtWiP1XZPapu4dyWm-_DwEfIt9Sz11bvyi7o8AxAcHbXmGEeA4AHHaK5yWO7-9mWcImH_anO-HEhAqjJLRnzDgo_bsI2C6URbfGhRsswdqhMvLJD_sHQu-C6-xYxP3pQ', u'photos': [{u'photo_reference': u'CoQBdwAAAFvTYlRVCqs0GRL3AYuzLIrXjAYhkhZtCMy-p37-dwkau8fTwNUGY6hJFbtu82OEnSMXVk7Uzbo9ntHFOAqRnO--UTIRrQ89ImYGAjAwW4vFnXWhYXtqEHuCNMNm2nrBUubcKgWJGvAvJlZo8FmzxHcBbbv0Z7DJTW3pFIwvOUcYEhBb1CRSrxfOBp-9BN5x3OQOGhRZJ9Edr5TuqVmt7xHOgZZ1wl2_mw', u'width': 1024, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/104542517871553189279/photos">Paul Santo</a>'], u'height': 768}], u'geometry': {u'location': {u'lat': Decimal('40.82996109999999'), u'lng': Decimal('-73.87484560000001')}}, u'adr_address': u'1215 Morrison Avenue Bronx, NY 10472, <span class="locality">Bronx</span>, <span class="region">NY</span> <span class="postal-code">10472</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJ_eLUvO_0wokRDy0jMptVZUw', u'international_phone_number': u'+1 718-842-1235', u'vicinity': u'1215 Morrison Avenue Bronx, NY 10472, Bronx', u'reviews': [{u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-I9PDkS8777Y/AAAAAAAAAAI/AAAAAAABGQc/-uIn0kazZQo/s128/photo.jpg', u'language': u'en', u'text': u"We get our DVDs in here. Not the greatest selection though. I go on the Computers sometimes. It's clean and well ran.", u'author_name': u'Paul Santo', u'relative_time_description': u'2 years ago', u'author_url': u'https://www.google.com/maps/contrib/104542517871553189279/reviews', u'time': 1410662069}, {u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-zfP1JhxTFIo/AAAAAAAAAAI/AAAAAAAAUeo/hCqW5ueAF2w/s128/photo.jpg', u'language': u'en', u'text': u"Not impressed not very welcoming just to general been there once I've been there again I guess I can say this is new york the new york public library system is under funded understand and just needs face lift", u'author_name': u'Bla blah blah Jr', u'relative_time_description': u'2 years ago', u'author_url': u'https://www.google.com/maps/contrib/107617982244825829102/reviews', u'time': 1415076141}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'author_name': u'bianca chapul', u'language': u'es', u'text': u'Me gustan los programas que dan y la atenci\xf3n que brindan', u'relative_time_description': u'10 months ago', u'author_url': u'https://www.google.com/maps/contrib/111725825061184184980/reviews', u'time': 1460583869}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-t3Le5ygjTu0/AAAAAAAAAAI/AAAAAAAACHo/w5Wv3q9eiZI/s128/photo.jpg', u'language': u'es', u'text': u'Muy buen servicio', u'author_name': u'Hector Perez', u'relative_time_description': u'2 years ago', u'author_url': u'https://www.google.com/maps/contrib/117057038122388276430/reviews', u'time': 1400011731}, {u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-sFA15gfEpYw/AAAAAAAAAAI/AAAAAAAAABY/IE2bNLhPgFI/s128/photo.jpg', u'language': u'en', u'text': u'', u'author_name': u'Sasha Jean Louis', u'relative_time_description': u'5 months ago', u'author_url': u'https://www.google.com/maps/contrib/104938466292768060388/reviews', u'time': 1474327223}], u'formatted_phone_number': u'(718) 842-1235', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=5504900244579757327', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 7:00 PM', u'Tuesday: 10:00 AM \u2013 7:00 PM', u'Wednesday: 10:00 AM \u2013 7:00 PM', u'Thursday: 10:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'Bronx', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Bronx'}, {u'long_name': u'East Bronx', u'types': [u'neighborhood', u'political'], u'short_name': u'East Bronx'}, {u'long_name': u'Bronx County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'Bronx County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10472', u'types': [u'postal_code'], u'short_name': u'10472'}], u'formatted_address': u'1215 Morrison Avenue Bronx, NY 10472, Bronx, NY 10472, USA', u'id': u'a9abdeba18706660eed610a2b4d2e81216f7f0a4', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library
{u'lat': Decimal('40.8116039'), u'lng': Decimal('-73.9243675')}
ChIJNeN8Utv1wokRDNpoijxWkQ4
{u'website': u'https://www.nypl.org/', u'rating': Decimal('3.4'), u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRRAAAAJ1lXYO0J-xWKcqhlkoVT106mnMZQ__aEuqOt02xtnqTft1rGHAwDjoO_67UvrzSAlyEk5oQrc7UPo9-57rpKmG_cwoPBT7eWsLtAzlcZxDfhaXEKd_CMJwKPAJottXvpEhArbVrwnChF5ZeROUOi0PIAGhQkHLjBmCA3wrkbe8YU2vC09j3bhg', u'geometry': {u'location': {u'lat': Decimal('40.8116039'), u'lng': Decimal('-73.9243675')}, u'viewport': {u'northeast': {u'lat': Decimal('40.8116723'), u'lng': Decimal('-73.92431759999999')}, u'southwest': {u'lat': Decimal('40.81139870000001'), u'lng': Decimal('-73.9245172')}}}, u'adr_address': u'<span class="street-address">321 E 140th St</span>, <span class="locality">Bronx</span>, <span class="region">NY</span> <span class="postal-code">10454-1147</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJNeN8Utv1wokRDNpoijxWkQ4', u'international_phone_number': u'+1 718-665-4878', u'vicinity': u'321 East 140th Street, Bronx', u'reviews': [{u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-d9fZXOSugqk/AAAAAAAAAAI/AAAAAAAADk0/UCqu7GIS6zU/s128/photo.jpg', u'language': u'en', u'text': u"It's not just for people with low income & no technical skills? what are you talking about ! that has nothing to do with it. It's for people who just need time with themselves for research. nice library, sometime a bit noisy with the kids after school. but nice been goin here for years.", u'author_name': u'Reign Clouds', u'relative_time_description': u'4 months ago', u'author_url': u'https://www.google.com/maps/contrib/107454346010401715964/reviews', u'time': 1474562692}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-7tvYu_T-7R0/AAAAAAAAAAI/AAAAAAAAJV4/_pCOdFwrM24/s128/photo.jpg', u'language': u'en', u'text': u'I go to this library often, nice neighborhood, very quite and children are well behaved, good library to get piece of mind or what you like.', u'author_name': u'Edwin Vega Jr', u'relative_time_description': u'10 months ago', u'author_url': u'https://www.google.com/maps/contrib/106943484854215047969/reviews', u'time': 1460300974}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-TSmJ7iM74sg/AAAAAAAAAAI/AAAAAAAAABE/eT59EjYwR40/s128/photo.jpg', u'language': u'en', u'text': u'A library that is for the people with low income and no technical skills. A great neighborhood library the children and teenagers are well supervised and love it. A safe environment for all. Thanks NYPL great job!', u'author_name': u'Frederick Henderson', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/118226147291440758945/reviews', u'time': 1435491931}, {u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'author_name': u'Naheed Hossain', u'language': u'en', u'text': u"I think the library offers many resources for people ranging from classes to performances. However, I am upset about the recent cutbacks to children's programmings. They used to have a Mad Science program and have a children's play or performance every Saturday. They hardly have anything anymore. This change occured after the start of the 2012 school year(September). I suppose this is due to decrease funding. It's unfortunate to say the least. Overall the library is neat and kept in order. Sure the children's section can be loud, but that's why a whole floor is devoted to it. In think floors 3-5 are great and quiet enough for people who want to study or read in peace. Oh..but the bathrooms are horrible, absolutely horrendous. Going there often with children, I noticed that the children's bathrooms smells better than the adult bathrooms. ", u'relative_time_description': u'4 years ago', u'author_url': u'https://www.google.com/maps/contrib/108010433492726556187/reviews', u'time': 1355382457}, {u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'author_name': u'Ny Citizen', u'language': u'en', u'text': u'Loudest library I\'ve ever stepped foot in and I\'ve lived the worse parts of the Bronx, Manhattan and Queens. The local area kids and teens treat the bottom floor as a playground, video arcade and nightclub (playing music through their cell phones) and the noise is sometimes LOUDER than a schoolyard. Complaints to staff result in literally nothing but a quick "kids quiet down" which lasts about 2 seconds. I\'m also pretty sure that some of the staff here will gossip about you to the kids outside should you become aggressive in your complaints. I\'ve caught them doing it more than once. Also, the foul language in there resembles the type of filth you hear outside a parole office. \n\n3 stars because they run pretty long hours.', u'relative_time_description': u'2 years ago', u'author_url': u'https://www.google.com/maps/contrib/117530420735006764827/reviews', u'time': 1413398524}], u'formatted_phone_number': u'(718) 665-4878', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=1049715006174190092', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 7:00 PM', u'Tuesday: 10:00 AM \u2013 7:00 PM', u'Wednesday: 10:00 AM \u2013 7:00 PM', u'Thursday: 10:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'321', u'types': [u'street_number'], u'short_name': u'321'}, {u'long_name': u'East 140th Street', u'types': [u'route'], u'short_name': u'E 140th St'}, {u'long_name': u'Mott Haven', u'types': [u'neighborhood', u'political'], u'short_name': u'Mott Haven'}, {u'long_name': u'Bronx', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Bronx'}, {u'long_name': u'Bronx County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'Bronx County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10454', u'types': [u'postal_code'], u'short_name': u'10454'}, {u'long_name': u'1147', u'types': [u'postal_code_suffix'], u'short_name': u'1147'}], u'formatted_address': u'321 E 140th St, Bronx, NY 10454, USA', u'id': u'383523f881a9197eda3602e3a39db4bfc26e3edf', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
The New York Public Library Shop
{u'lat': Decimal('40.75321869999999'), u'lng': Decimal('-73.98235609999999')}
ChIJJcFX6alZwokRPElLWaXkTeA
{u'website': u'http://shop.nypl.org/', u'rating': Decimal('4.3'), u'utc_offset': -300, u'name': u'The New York Public Library Shop', u'reference': u'CmRSAAAAbgswFfL__LRBtfBzyeQb3-LBTSUahX-XA9cxYYEQXTx2L-SrngfSSBpHDXcwuH_cX8lsSERWvgW-q4QaPRwWg2NfeQoxKOdhFUQu1HX4P-XwdtSAkcP2iw5YZAoouDYjEhCreQoQfr0XHTKyetBH0S86GhSv-4lO0AGNt2NDdgPgdP9s007MNg', u'photos': [{u'photo_reference': u'CoQBdwAAAHNhlw9fvGh1UDOywzb28Wx8X4zZoUDKCEMt21XfYWSnFO8QonI12DnGYlfjB7XOA7ve3_rHSYwKxwDwx80rKeeq41iXK-Ugx3pySgb8FqzuInzLYE2uwUnXREjv5wWHXeqKr3fH_LVCSQHRqDxPnsLOOXKiKSl4LXoYRVU0Ww7gEhDlrawfvOTs4TsYSLeFkJZzGhQKO8KLYiRUXIpqD3ab0ozRLVO2Bg', u'width': 3872, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/110059003304785921608/photos">Carlos Ruiz Badilla</a>'], u'height': 2592}, {u'photo_reference': u'CoQBdwAAAJtxZNkIyoQUWVFzuQYBYl-aSF8lAfnbXH_h4mY0wJaGVg8rzKr7ONDMmvoBaKbSsc-CvGO83mGaor8KSJHsKgz0XA7y0t27mvrVUFsFaDosX05xRyyCE1zZtvusPqAwI0AnXShBwRKfRs7RwYNTzb9HH8Hu6OxhG-s0TsHBZFnZEhBJxwc5-AiknWDP494UVruMGhS1O0r8ul7kblt6vt1oFHhO-wD3Zg', u'width': 2909, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/106159039996049719932/photos">Eric Anthony Pepper</a>'], u'height': 1081}, {u'photo_reference': u'CoQBdwAAABUD0h600BUSpjb9Ve2k2ts0hNL4-flSf4v_NlrWixrbKtJ4TkBl3aG_QuGqgCqm3uGdhIKyemEoGBg8gk2gdM1KZw4qIbxb0r8UEVldrMYUVVGlfelD8uwfeUmKFDh_Y5F_8a1u0HyoDritjAgRLnas8ujlckDllxSG-A1lkOr0EhDLM21l6s-XwlCcpY9VCA72GhSiLBSLxDKLla4t6nH9utCkfuJrfw', u'width': 4128, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/117914066613608289129/photos">joshua \u9ad8</a>'], u'height': 2322}, {u'photo_reference': u'CoQBdwAAADP1huor8fTQYFr_YeC_flEHTBl_mLJlpN8J_UxJq_m2lzNuWnckcP_1JmRX3H2Z75f5mzXxn3wWN-O5IjoWytOWadwQKIJUAduLQLwz7WnT2kCb6rEs7PkQyLQeXqaG3fvn9vHyM1UQMLrqUL531ZCoMviOhGs_-hgOca1TJ7ZZEhARmMJE47EPFoqu24eY-hwgGhQeBDbpDNStZeBFwP80Y8e8ITNKdA', u'width': 3872, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/110059003304785921608/photos">Carlos Ruiz Badilla</a>'], u'height': 2592}, {u'photo_reference': u'CoQBdwAAAF5XFGdElqh6954XSoPBssuEgKEJXaYGpd8pmTRbeYR6WCdgEnZ7-beV3xzXHw16vWS_LtJPCrA-A3W2bwdmrfxWU1ShPNd5Is_kiuTXLo-ecFCjTWUfKNphM6bVvr3PqvTUyXiQ0_FfiHV4ge2a-vmwr1oP1b6pZfy1F-vql4ZyEhAwvSMANxUz2SLoTfO-NmWwGhQtyu3POEnd7WPUr93RXnDyqVsHmw', u'width': 3872, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/110059003304785921608/photos">Carlos Ruiz Badilla</a>'], u'height': 2592}, {u'photo_reference': u'CoQBdwAAAPJ-3ZXAR1XvmWjOvi_7li7LfDmSIV09F6UgDC4qBFpRID38yAZO0RuA7YyV_Gd2wvjR9C3hnZ5fzgbexiXxE0xzb59BIw8e_T9TgYXDSxMOP6St5Q6RCDe5b0PujIGJMrcqfajxiOWV0TFBzr-qwTEFEE_RWLKlpaxKZ5cCKOP_EhDppAgNv1uPpa4AfcduwjSHGhTRuwRAhxw0BAi96iUG-HaFVtNM2A', u'width': 3872, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/110059003304785921608/photos">Carlos Ruiz Badilla</a>'], u'height': 2592}, {u'photo_reference': u'CoQBdwAAAKjx-zT8KR4ImizHLC4rOWqnehDFcNKJU45Oh_2qUchRDEZ_JeaEmAPfSa6BDZr7reL3nSJIXnQ21dUmqGA6guo_FS-_dA9XJA43ahSXecbs5mhoCzFyeXpgDTg_Tg6IlPa-bcY68Psgr2RABpWmKcRfZogNM-iLmza3AeRVSHx6EhCGi0tmqNQoo8ZOXU3pa8CFGhT9ow52eY4aPf3GterPqw3yiNJtmQ', u'width': 3872, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/110059003304785921608/photos">Carlos Ruiz Badilla</a>'], u'height': 2592}, {u'photo_reference': u'CoQBdwAAABeFr0IJNOozzfYGXnZBAtLhlwZQLpsqUb5g7g3uXZ61G9vuZpAGiw1YtdrLG180408-NgsbAmxVvpSB0terEcayBA7zPIGJCVUbiFvbYjrymtCiTOT_qNJz-7KtNfLsrgxquieg71You3i1rZDya4YOXbTWDujawyGgf-upO3fxEhAAU5oos0CpOabbGorP2F9uGhQHV1NPWpQ5c0WiOzQrnxu9oqys0A', u'width': 4898, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/108263403760550946771/photos">Emily Sands</a>'], u'height': 3266}, {u'photo_reference': u'CoQBdwAAAKo5jr-_y4Q6ggZMTqVz16QdwHwfTDb3_T3eFyA8I31i1BR59JBJ47vMayVrNYViVwQzOsRyK3JGdNGRas5SYKlfZ0YzpYVfl6WMXX9tBV4C233E1Bi1FaFYgcQcFygC_6Q_QN4zofDVsi3HnPxCZarVhwuoGrwlgJTx5KsMSjzZEhB3vg09CEhXm6rpsXmHDLMJGhQ1TIBgvBtrT-IMuNjRmJkAygFhfg', u'width': 4128, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/117914066613608289129/photos">joshua \u9ad8</a>'], u'height': 2322}, {u'photo_reference': u'CoQBdwAAAPRjZZGR-kmsioheS9J-NpTEJyyYK1v5eQAEoHoeslspX6sqFnjhHs1QLralgSnlpcOZMv9VK1fSlamlY3d0cfznBBEnQt7-auE3_W3eW_EtSLzKenZiKTbU2nKJvInhNk83ropduRVmN1zasKsqBXwgkypDOTMevIF5A_2rqUjGEhBwb-DAps6Eu30kSpzj917hGhSTlUbqyBRFJ6djFe40IRkZZw1Q5g', u'width': 5312, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/107134518584108158623/photos">Serhii Kyslyakov</a>'], u'height': 2988}], u'geometry': {u'location': {u'lat': Decimal('40.75321869999999'), u'lng': Decimal('-73.98235609999999')}, u'viewport': {u'northeast': {u'lat': Decimal('40.75342389999999'), u'lng': Decimal('-73.9808951')}, u'southwest': {u'lat': Decimal('40.75260309999999'), u'lng': Decimal('-73.9828431')}}}, u'adr_address': u'<span class="street-address">476 5th Ave</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10018</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJJcFX6alZwokRPElLWaXkTeA', u'international_phone_number': u'+1 212-930-0641', u'vicinity': u'476 5th Avenue, New York', u'reviews': [{u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-KXdfdK0R05g/AAAAAAAAAAI/AAAAAAAAAMI/ptm-UM_HCJ0/s128/photo.jpg', u'language': u'en', u'text': u'Massive library has everything', u'author_name': u'Phillip DeMello', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/115416085552935762442/reviews', u'time': 1483655919}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'language': u'en', u'text': u'really cute!', u'relative_time_description': u'6 years ago', u'author_name': u'A Google User', u'time': 1291763779}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-6AHKsX14L7Q/AAAAAAAAAAI/AAAAAAABg8c/jMjwMCIWA6A/s128/photo.jpg', u'language': u'zh-TW', u'text': u'\u9069\u5408\u4f11\u606f\u8cb7\u7d00\u5ff5\u54c1\u7684\u5730\u65b9', u'author_name': u'Ginny Chen-Jung Kang', u'relative_time_description': u'3 months ago', u'author_url': u'https://www.google.com/maps/contrib/115292130337968953956/reviews', u'time': 1477230370}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-vs9lSmA9i5g/AAAAAAAAAAI/AAAAAAAAXhw/iRFAueeMs2c/s128/photo.jpg', u'language': u'pt-BR', u'text': u'Pr\xe9dio maravilhoso vale a visita.amei.', u'author_name': u'M\xf4nica Cavalcante', u'relative_time_description': u'9 months ago', u'author_url': u'https://www.google.com/maps/contrib/105578826422259999457/reviews', u'time': 1463700102}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-qWVYEg4Yo1c/AAAAAAAAAAI/AAAAAAAAFhc/NeYOrneSIjk/s128/photo.jpg', u'language': u'en', u'text': u'', u'author_name': u'Leslie Tabor', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/113074250825499149748/reviews', u'time': 1446347453}], u'formatted_phone_number': u'(212) 930-0641', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=16162826036521421116', u'opening_hours': {u'periods': [{u'close': {u'day': 0, u'time': u'1700'}, u'open': {u'day': 0, u'time': u'1300'}}, {u'close': {u'day': 1, u'time': u'1800'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'1800'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'1800'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1800'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1800'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1800'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 6:00 PM', u'Tuesday: 10:00 AM \u2013 6:00 PM', u'Wednesday: 10:00 AM \u2013 6:00 PM', u'Thursday: 10:00 AM \u2013 6:00 PM', u'Friday: 10:00 AM \u2013 6:00 PM', u'Saturday: 10:00 AM \u2013 6:00 PM', u'Sunday: 1:00 \u2013 5:00 PM'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'476', u'types': [u'street_number'], u'short_name': u'476'}, {u'long_name': u'5th Avenue', u'types': [u'route'], u'short_name': u'5th Ave'}, {u'long_name': u'Midtown West', u'types': [u'neighborhood', u'political'], u'short_name': u'Midtown West'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10018', u'types': [u'postal_code'], u'short_name': u'10018'}], u'formatted_address': u'476 5th Ave, New York, NY 10018, USA', u'id': u'b999fde40afde8120fd743c6079d606cd83a1552', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library
{u'lat': Decimal('40.77315430000001'), u'lng': Decimal('-73.9849395')}
ChIJkx9xgPVYwokRZjZfQE7-UJc
{u'website': u'http://www.nypl.org/locations/lpa', u'rating': Decimal('4.6'), u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRSAAAAybhaE5NDFMU1-waGQW7JVrKR56RltoUBwygAO5dNX-wAC5b4kwjaHVrhSa80FA_f2YWLBTv2rfHPXT8EdSvhDSLnsgS9Hl2-0IUwZgLLjNBryZXNVQ1P7IVuU2dfG2RgEhD-duiHk9d-z8jwrS9SR154GhRLSL1RVj6OGvvcU72JlsZEEH2dpg', u'photos': [{u'photo_reference': u'CoQBdwAAACWvYbOtcQYRVTZUXox5f-YsAFuJHVzaDhK7k2Spq37-fXpprP_bwFO9ujHzmQ4mwZg8YVaP3Omfbkdg20ydf1PfuwBuVE1OnDFGIkrwhNCerjbK_AMT-tlUz8xsMkIimI7_UddFu0jUj8eH176kQJHRrMWPAP_nG_iexVTl_30qEhC0EEAcG5_u4UkXFYYQKwEEGhRAHGSSp2--6z4OdZSWZLKtup8iWA', u'width': 4320, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/106100737036072557121/photos">David M. Lite-Ingunza</a>'], u'height': 2432}, {u'photo_reference': u'CoQBdwAAAEruClGvhAoiHel3qmgXdoF92yCnNJZGN4AZUk9liDujBhTI0DRTeyWneL8XrrmIg8POFSkRRdHw19jwDm_0-11zK7SuLikwbBoD9Mi4xQiv1WFwFwMkFeGLK8CL2QrPSy2rDpmGO27IyW8QaPWjYMVbjcOezN9IuUFhMjM8yJSxEhAs7dACT8kVqnvMiPPWKhfsGhRjgJn44-yvE6UXy_w0msq_ZLUJKA', u'width': 4160, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/100692201939953425841/photos">Jonathan Pei-Chan</a>'], u'height': 2340}, {u'photo_reference': u'CoQBdwAAAICqG30_KPTSzCPYOH1vvwIH1C7BhcVd90H4tfM8zNrTlUcu-j_b7aKyWKQWQwre-O82I3Np7DoFys4WzJFJo1mAaTTgo0EsS-XDJwAo7XwIa4v1ltvRuP0HL8Kt2DgUuQ2MWZQWNc_R2taEoO0Z236y_DAjSWsns752QTrVuMJvEhC7uZWJ6yr3KOEC8RKXXO5jGhQZoVBF-Flp34I-h-HRrvB3ZNRM7Q', u'width': 1024, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/113757648014969788399/photos">\u6c5f\u69ae\u6176</a>'], u'height': 768}, {u'photo_reference': u'CoQBdwAAAOoDe_SO1P3r6nYJc2_4Ts1STO3QgdpsIxRqWOP8ON1B66fE9oDoqgVuFUMAHznQ1XdecNUjr7nScgxBr_F7hCQWWdqLfru-24QrqzHSsIuYy2nDOioDcpZuYC0rNtc6czlcbtQmMuxIibZkFFwJiy6T2C3t6pLosvij-nQfnrZYEhBw6xXVzk_B16nUSlN2Ddg2GhRkThb2ZtTr1HuntoWtKSMj4-TaQg', u'width': 1280, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/102857914442312897284/photos">Ela PRL</a>'], u'height': 960}, {u'photo_reference': u'CoQBdwAAAFDrjWCv8Kj6Byn1tUfcf653qeWGMSeQzrZbYDkxrOEeyBthCuOKfG8jj9HnEojGJDP1mnZEPwvGTRolzBeMKzVSpmdJZMRkUcmsaEhg73s-aY9rM5GGjjSp6HcBGK_AwtHqpmxqmRI8UUxLR2zk1c8rj-dk9fjfHaeQ0q0Lvda7EhBESJ28tyGGfcAQS_R9QE7LGhRssp_k2Nc0z4SWOxLa6nuICcMNRg', u'width': 541, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/115723991147318777788/photos">Wei San Ooi</a>'], u'height': 720}, {u'photo_reference': u'CoQBdwAAACpdwIlrRAJSQrhjIUKVE-70W3WEGbut1GOLsq3cfez7UKA_VjhFo69Yx9au0P05jDTOvp396e_85rBDO19rziwXG_qM3ThXosioWigxI8ZLUh6yaELYH376AiqQOZr7eBKmPUHz8X5TI031_EewTOrmSg9tb39m7iM6oUrheJBpEhDKH7CLxYyQiv6heGgDk7meGhSTIXUPoE5dU1IfCLera_rS3eXm-w', u'width': 3264, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/113815392849087130851/photos">Gomer Aquino</a>'], u'height': 2448}, {u'photo_reference': u'CoQBdwAAADvCg6EoVIlUFwDL2XcmqGqA_EvONe_A-x0pIT5UK59rG75C_m1tyv2Bri2wy6eBZH8PWV9yQoemBPTHkw4GkgIgk60yKS--SU8PVlXYm3mgNvvXgduBiBnygSz_jqL0iX8jU5TdlmLdWmAAf1oNE-WEayKM3xYGTU1gWGgagEVsEhBZEDiom75cc-JHpkN6eAw8GhQbvNHjiFk9-GlalIyWAjdlxZltLQ', u'width': 2448, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/109077594732443138053/photos">Graham Austin</a>'], u'height': 2448}, {u'photo_reference': u'CoQBdwAAAJE7pql-yH50mzkB-PISbWnty45fTvrzBlfarklcPOAdtPv5I2_OtsWqTlXW-fOn_RyxtRCvSOXs7g_sJpWffaalXFRhiZk3hlCejtNKzR6PeOi1MGg6cxMuUHvwDkLbU1gw2egrjK46UUe7tv6_6McgoB4I5Oc3Lffu8pFqS5vLEhAqnm3GtkWdvd8l7GbwsVYvGhSK32cTdpsd3P1m4yJjSbDu9dixWQ', u'width': 4160, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/112048878651459844783/photos">Marley Sheen</a>'], u'height': 2340}, {u'photo_reference': u'CoQBdwAAAMKxzlswpjMrPrsz4vlu-TDbLnItRxBfHhgwSwqWyjAa-GV-3m4iNJluMlm8lZF_IILchVHmIWRtjJiTC3TtMmZm61rZrEdzE2gUcqhIKPUD821-hSrkbM2L3DDmu9FNt-4BiHmOdwpFWvg8G2GoaOXPO0csxS_UU5smGIoVeo_XEhDh732kH9oDBjGhhku7IZNDGhSTPln40kefLqKqMlAR0FqR39KMQQ', u'width': 3264, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/113815392849087130851/photos">Gomer Aquino</a>'], u'height': 2448}, {u'photo_reference': u'CoQBdwAAAP-16n0tFW3TkKyy1iCUTX_nkNkuIyvWTYlGSD4k_abW_udVLlQkIauX-8lLgW5T1ymjWCIbPGQ-oFk7DAT5OOLtyl1bEKiEFP6IYTWyxafxuUtfMz9ryWXYE3wMUveYaGOpgAR6n8zcbJEE1SP2wSzvXebQlYbTmfILDd6KcC_KEhAbgKzVOEx4HZeyGHVh4HraGhQkuizT_fndGEYb6oPoMipA5j2zHw', u'width': 2448, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/104497483474301815800/photos">Mauricio Vidal da Silva</a>'], u'height': 3264}], u'geometry': {u'location': {u'lat': Decimal('40.77315430000001'), u'lng': Decimal('-73.9849395')}, u'viewport': {u'northeast': {u'lat': Decimal('40.77348174999999'), u'lng': Decimal('-73.9846841')}, u'southwest': {u'lat': Decimal('40.77304515000001'), u'lng': Decimal('-73.9857057')}}}, u'adr_address': u'<span class="street-address">40 Lincoln Center Plaza</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10023</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJkx9xgPVYwokRZjZfQE7-UJc', u'international_phone_number': u'+1 212-870-1630', u'vicinity': u'40 Lincoln Center Plaza, New York', u'reviews': [{u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-jEHLTU9R4Ws/AAAAAAAAAAI/AAAAAAAAIRg/f-JojFeBly8/s128/photo.jpg', u'language': u'en', u'text': u'Nice multi-function public space with a library full of performance art references and resources, a small auditorium for live performances, art exhibits, and a cafeteria. The Broadway and West End exhibit has lots of interesting trivia and pieces from well-loved shows such as Chorus Line and The Lion King. ', u'author_name': u'Gomer Aquino', u'relative_time_description': u'2 months ago', u'author_url': u'https://www.google.com/maps/contrib/113815392849087130851/reviews', u'time': 1481582862}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-4QRDHXJSFoA/AAAAAAAAAAI/AAAAAAAAR_E/qdCpBGdLr7E/s128/photo.jpg', u'language': u'en', u'text': u"The Performing Arts Library is one of our city's treasures. Any performing artist should come here and comb through the music, the scripts, and there recordings. There's no end to what you can find and learn.", u'author_name': u'Matt Falber', u'relative_time_description': u'4 months ago', u'author_url': u'https://www.google.com/maps/contrib/101139385378270283986/reviews', u'time': 1475710775}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-pTWRhVOna8o/AAAAAAAAAAI/AAAAAAAAABE/wIw1Do2_25w/s128/photo.jpg', u'language': u'en', u'text': u'It is my favorite place in manhattan.\nI can read scores whatever and they provide free wifi. Desk and chair are wonderful to learn. ', u'author_name': u'Hyunwook Na', u'relative_time_description': u'4 months ago', u'author_url': u'https://www.google.com/maps/contrib/105175026924675856301/reviews', u'time': 1474479480}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-kTi_svj7b1c/AAAAAAAAAAI/AAAAAAAAEQM/mwqqr5Lhz50/s128/photo.jpg', u'language': u'en', u'text': u'Clean library, good for working, great collections. Computers are relatively clean. The second floor laptop area can get loud. ', u'author_name': u'Alec Farber', u'relative_time_description': u'7 months ago', u'author_url': u'https://www.google.com/maps/contrib/113764522984930358390/reviews', u'time': 1466619232}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'author_name': u'Rishabh Singh', u'language': u'en', u'text': u'Even if you have no interest in performing arts, the study areas on the second floor are superb!', u'relative_time_description': u'7 months ago', u'author_url': u'https://www.google.com/maps/contrib/104533187638524389194/reviews', u'time': 1468347173}], u'formatted_phone_number': u'(212) 870-1630', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=10903494309904856678', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'2000'}, u'open': {u'day': 1, u'time': u'1030'}}, {u'close': {u'day': 2, u'time': u'1800'}, u'open': {u'day': 2, u'time': u'1030'}}, {u'close': {u'day': 3, u'time': u'1800'}, u'open': {u'day': 3, u'time': u'1030'}}, {u'close': {u'day': 4, u'time': u'2000'}, u'open': {u'day': 4, u'time': u'1030'}}, {u'close': {u'day': 5, u'time': u'1800'}, u'open': {u'day': 5, u'time': u'1030'}}, {u'close': {u'day': 6, u'time': u'1800'}, u'open': {u'day': 6, u'time': u'1030'}}], u'weekday_text': [u'Monday: 10:30 AM \u2013 8:00 PM', u'Tuesday: 10:30 AM \u2013 6:00 PM', u'Wednesday: 10:30 AM \u2013 6:00 PM', u'Thursday: 10:30 AM \u2013 8:00 PM', u'Friday: 10:30 AM \u2013 6:00 PM', u'Saturday: 10:30 AM \u2013 6:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'40', u'types': [u'street_number'], u'short_name': u'40'}, {u'long_name': u'Lincoln Center Plaza', u'types': [u'route'], u'short_name': u'Lincoln Center Plaza'}, {u'long_name': u'Lincoln Square', u'types': [u'neighborhood', u'political'], u'short_name': u'Lincoln Square'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10023', u'types': [u'postal_code'], u'short_name': u'10023'}], u'formatted_address': u'40 Lincoln Center Plaza, New York, NY 10023, USA', u'id': u'94e1c1ab2477af467ecd6a11ae689f362bf0d309', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library - Andrew Heiskell Braille and Talking Book Library
{u'lat': Decimal('40.74045460000001'), u'lng': Decimal('-73.99338159999999')}
ChIJTWOGDKNZwokR6Fau-GJkF0E
{u'website': u'http://www.nypl.org/locations/heiskell', u'rating': Decimal('4.1'), u'utc_offset': -300, u'name': u'New York Public Library - Andrew Heiskell Braille and Talking Book Library', u'reference': u'CmRRAAAArg6Cy5OA54Itgw3rB0fLSA0ZROslxipgqpmXECl3UrzxaRXMZuRsUA91DrPHkarHR0qT-r-83q-ct1SSLUhAtfv6aLziV7CEr3CXUsptl680-lvBJXbOBOyj0UrFVZt0EhC1nBKJjfPSZsUkKPe8HobwGhQIqIQt4kbCHDCDgY37fAP3O5jxfA', u'photos': [{u'photo_reference': u'CoQBdwAAAAf4p94-zWFMQemdjGksfwrTbmd8HwOUsnRaZ8HE892QW7FZJ17vo0aM11rmGG_r4f7okXP9jFEjmgoS7ejfTG6Hw2en2W0PHSTha7P8-j3epOsjNyQ3JCD_LlNTEd4-pzUOtqdbD-De7pm6MZi0vw-KAcQC7X3BYoX4zrHCI1Z-EhCv4_C0-MQPDp_gycR6OiAeGhQT3nHch_33aCgljbzN75_Kdlcq8w', u'width': 3264, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/116418406502215967625/photos">Mira Serrill-Robins</a>'], u'height': 2448}, {u'photo_reference': u'CoQBdwAAAC-hHsIIavfO9N17UbLckoKH_ikLWbVS7UxB6FfM3tzawJHGopy35-pJhzwXcQjdP8LtaEvKWlzQJKue-BxxQBOe98uBQv29DrAF91w4NZPvDq4NEq_1FFuQUX6sNH-mejzVUHDOCcVquQGNwmTB3OlK3ZdmeCk_HQwmJo_VSN-pEhAgSQg0CnsIj4o5Mba7LOqCGhSuoz6GLyPXBbCGhhUiQlbDywBG5A', u'width': 2160, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/114740517277294504234/photos">Michael Luethi</a>'], u'height': 3840}, {u'photo_reference': u'CoQBdwAAAAMl_BMgF2JcITqDMjTgJjU1_RsUOovre2f_4j_KBgbD32i9-_k4QDSusILer9SK2L50YdFKLFFPzltZdHHy1xRblKiHPCxdyH7_6nDmLaG3yBlCplKH6GBZo8c9PemshgK9qvngXjRvkC0nXI2pvP8Ao_Ovx2hS0jwKblK2lIv6EhBPcbkAxMCz0lURc05BJEedGhRwbqlfD8vEXQ4kmtUSsIQiOzPS2Q', u'width': 3264, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/116418406502215967625/photos">Mira Serrill-Robins</a>'], u'height': 2448}], u'geometry': {u'location': {u'lat': Decimal('40.74045460000001'), u'lng': Decimal('-73.99338159999999')}}, u'adr_address': u'<span class="street-address">40 W 20th St # 1</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10011-4211</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJTWOGDKNZwokR6Fau-GJkF0E', u'international_phone_number': u'+1 212-206-5400', u'vicinity': u'40 W 20th St # 1, New York', u'reviews': [{u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'author_name': u'Mira Serrill-Robins', u'language': u'en', u'text': u"After going to some other public libraries in the area, this one is lacking in stuff but also, pleasantly, lacking in people and strong odors. I'd come back when I need a place to sit for a bit and work or read. There are nice couches that are comfortable and not too beat up. It's nice and quiet. There are only a few seats with table space, but again, the not crowdedness seems to mean that even the few seats are enough. There's a public computer lab and free wifi. The bathrooms are relatively clean. ", u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/116418406502215967625/reviews', u'time': 1482872976}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-6h0lpJPlZrY/AAAAAAAAAAI/AAAAAAAAFWU/eBpVP4ed1LY/s128/photo.jpg', u'language': u'en', u'text': u'A very quiet, but friendly library. A good place for doing some work too. There is a lot of free workplaces around, especially in the first floor.\n\nBring your kid! There is a playing room for kids near the entrance.', u'author_name': u'Michael Luethi', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/114740517277294504234/reviews', u'time': 1446057943}, {u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-jOFgz2-iK7o/AAAAAAAAAAI/AAAAAAAACA0/P1VquW5fAGE/s128/photo.jpg', u'language': u'en', u'text': u'Not that many books or dvds, or other stuff that you would expect to find in a library outside, since its library focus is in braille items. \n\nSo I normally order in the internet and I pick it up here. I am sorry that they dont have that library feeling. Its also a small space, with not that many tables.', u'author_name': u'Diana Freytag', u'relative_time_description': u'10 months ago', u'author_url': u'https://www.google.com/maps/contrib/103607546958308624766/reviews', u'time': 1460118911}, {u'rating': 2, u'aspects': [{u'rating': 0, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-vpWCFqaYj1U/AAAAAAAAAAI/AAAAAAAAACA/qTCZN3o5ZfA/s128/photo.jpg', u'language': u'en', u'text': u'Some of the staff are rude and unhelpful. (One older lady was super nice). The attitude , in general, is not what you expect from library employees. Not going there again unless I absolutely have to.', u'author_name': u'Geli A', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/115136524498373466560/reviews', u'time': 1436200325}, {u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-2dL-Ah1pFNE/AAAAAAAAAAI/AAAAAAAChY8/sHO1a4cXc_g/s128/photo.jpg', u'language': u'en', u'text': u"It's just a small library in the city. ", u'author_name': u'Aidan Han', u'relative_time_description': u'8 months ago', u'author_url': u'https://www.google.com/maps/contrib/100780390147495110413/reviews', u'time': 1466272101}], u'formatted_phone_number': u'(212) 206-5400', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=4690327913171408616', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1700'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1200'}}, {u'close': {u'day': 3, u'time': u'1700'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1200'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 5:00 PM', u'Tuesday: 12:00 \u2013 7:00 PM', u'Wednesday: 10:00 AM \u2013 5:00 PM', u'Thursday: 12:00 \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'40', u'types': [u'street_number'], u'short_name': u'40'}, {u'long_name': u'W 20th St # 1', u'types': [u'route'], u'short_name': u'W 20th St # 1'}, {u'long_name': u'Midtown', u'types': [u'neighborhood', u'political'], u'short_name': u'Midtown'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10011', u'types': [u'postal_code'], u'short_name': u'10011'}, {u'long_name': u'4211', u'types': [u'postal_code_suffix'], u'short_name': u'4211'}], u'formatted_address': u'40 W 20th St # 1, New York, NY 10011, USA', u'id': u'ec49da1717bac8eb01bf67e39c7adecca679bc75', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library
{u'lat': Decimal('40.63758619999999'), u'lng': Decimal('-74.13114849999999')}
ChIJ4bcj9N1NwokRkthfOh44lAg
{u'website': u'https://www.nypl.org/', u'rating': Decimal('4.3'), u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRRAAAAmabHlvKsGp0d7IYyAmf1zj1riEqAh_V-X8qMiIr8GOVDZUBoyooz6vyaZ9N4O_g_sM5kyCc4QtZS6XLysf6Jf3HkEqKzK4wrL7fmJDYbZllp52LkopF9NORPU7y3Dvo0EhANFpRava2bwGUHEAPBPm8JGhQJ-XHgF_4nvMheaH4e0hiY2XdIwA', u'photos': [{u'photo_reference': u'CoQBdwAAAAbBGz2qkTkiYt-tHY1zz4tay_g_iy4jL0YUGSNFI9HmCAtjYzDZe15rOSvCc-iTSn00bBb22EVELfF1yGCGj94VYBoTR6JGa_paXoiDJXiZGGtmtEs4-6KtUq-rnFcjx7gK1qBH3smKn-l2_Fh2TBpKA4FSCgiaJLCKhnmHL_TwEhAy2GFkQFqp3QsTl7oIuSF8GhTrpwIwp1qozugn01Vs-qy1uRV9wg', u'width': 576, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/106604440766520331661/photos">Claudia Rozonvega</a>'], u'height': 960}, {u'photo_reference': u'CoQBdwAAAP1R_sj931js42YJg3HQOSG0u-sxtchYdmJfhSYI_fXDwXNlaV7EPkosAqlkjAP0IS5hmTAroYZlWMsQ_7UiU2s51aH3nrcydwSTwNIO9dnRaGcr1Wds7PIwdT2naUDlu4jKWLQMnUzF6ZPh__D8Z7CoS2UjRnYB50FGMY1keJjtEhBZv-D1mtd3Sm1SM_pUTunRGhSw53hqS_d-Hp_5mMDR96X73uiX9w', u'width': 480, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/106604440766520331661/photos">Claudia Rozonvega</a>'], u'height': 320}, {u'photo_reference': u'CoQBdwAAAI66HLctNfkmZzDLOVlBYbLg3WcL0-TE2-MDPF4y4qA38qKqR6zzjJ70bV744SQzg2T_FZFL3l1AKiABQHeXrakHKn-n4NrYgKeTse5tixdJ8zS0iGktfDGe4c9aV1cAP1SdwMzXnrLmsetuoziDum4aeF7rW6ooOTayXl-fXM0wEhARzbt3UXJSSqqRAfB4uDMbGhTm3ULinJzjQ4L81kNuccNY1CleDA', u'width': 618, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/106604440766520331661/photos">Claudia Rozonvega</a>'], u'height': 418}, {u'photo_reference': u'CoQBdwAAACaRoeTgCTnsybEq_xcE07ssNPeFkFXQ0KuPfAz6DTWZSrDwxyfIjEBjwxa02SE8vQuDNaYhH4Hy8pW7jzGZDgtnlRBazv5c32HgoZxZVnOu_H8YyWyNtRCyeCs4ZY06PYG60QOVTiwpEM4QAFUerJZBQiKtenQ7ZuNLlNu54-5bEhDtbG3_kUg2PZMdeR-BaWdyGhQdZJpnESfFEqiO66Ds5tIIxEXjgA', u'width': 480, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/106604440766520331661/photos">Claudia Rozonvega</a>'], u'height': 488}], u'geometry': {u'location': {u'lat': Decimal('40.63758619999999'), u'lng': Decimal('-74.13114849999999')}, u'viewport': {u'northeast': {u'lat': Decimal('40.63768844999999'), u'lng': Decimal('-74.13107174999999')}, u'southwest': {u'lat': Decimal('40.63727945'), u'lng': Decimal('-74.13137874999998')}}}, u'adr_address': u'<span class="street-address">75 Bennett St</span>, <span class="locality">Staten Island</span>, <span class="region">NY</span> <span class="postal-code">10302</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJ4bcj9N1NwokRkthfOh44lAg', u'international_phone_number': u'+1 718-442-0158', u'vicinity': u'75 Bennett Street, Staten Island', u'reviews': [{u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-wRx7Gk_3s2Y/AAAAAAAAAAI/AAAAAAAANQs/ZGL1Uw3LYGQ/s128/photo.jpg', u'language': u'en', u'text': u'Always have great fun free activities for the children to promote reading & education. Their summer carnivals are the best!', u'author_name': u'Jennifer Minucci', u'relative_time_description': u'7 months ago', u'author_url': u'https://www.google.com/maps/contrib/116116420075734481597/reviews', u'time': 1467549277}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-4P4-FpauawM/AAAAAAAAAAI/AAAAAAAACFk/caY-gj-nWCc/s128/photo.jpg', u'language': u'en', u'text': u'They give merchant mariners free internet usage . Very nice , but must have valid credentials !', u'author_name': u'Doug Britt', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/105073709991514334660/reviews', u'time': 1450870604}, {u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-QN6LRemPi2A/AAAAAAAAAAI/AAAAAAAAQHA/j8HmyxltMtI/s128/photo.jpg', u'language': u'en', u'text': u'okay. very good.', u'author_name': u'Claudia Rozonvega', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/106604440766520331661/reviews', u'time': 1446753409}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-AzeWnI4p-Mg/AAAAAAAAAAI/AAAAAAAACmo/YetlzyeFCQg/s128/photo.jpg', u'language': u'en', u'text': u'', u'author_name': u'Young J', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/106647559323803090544/reviews', u'time': 1483654540}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'author_name': u'Jared Reyes', u'language': u'en', u'text': u'', u'relative_time_description': u'6 months ago', u'author_url': u'https://www.google.com/maps/contrib/112558103774521153128/reviews', u'time': 1470498419}], u'formatted_phone_number': u'(718) 442-0158', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=618180751336134802', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'2000'}, u'open': {u'day': 4, u'time': u'1200'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 7:00 PM', u'Tuesday: 10:00 AM \u2013 7:00 PM', u'Wednesday: 10:00 AM \u2013 7:00 PM', u'Thursday: 12:00 \u2013 8:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'75', u'types': [u'street_number'], u'short_name': u'75'}, {u'long_name': u'Bennett Street', u'types': [u'route'], u'short_name': u'Bennett St'}, {u'long_name': u'Elm Park', u'types': [u'neighborhood', u'political'], u'short_name': u'Elm Park'}, {u'long_name': u'Staten Island', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Staten Island'}, {u'long_name': u'Richmond County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'Richmond County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10302', u'types': [u'postal_code'], u'short_name': u'10302'}], u'formatted_address': u'75 Bennett St, Staten Island, NY 10302, USA', u'id': u'942ed617f4172f23dccc3ae93505f0d84160761c', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library
{u'lat': Decimal('40.8186843'), u'lng': Decimal('-73.8940875')}
ChIJy8Qxm6v1wokRt3LhQlV5YAU
{u'website': u'https://www.nypl.org/', u'rating': Decimal('3.4'), u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRRAAAAb8U-Wv5ZQVIXRcGLrTnIOacBhYZizh-JoFwiExC98Mxb3KaX0CFI-X_nnhXjlbD9Zc2TfK8eNcHBmSv_iZiThM5HvrTdGokjbcYkccqBdliZiTHqB0bVDTgIcEfZ6VI_EhAXRhhl7Krog9iLYV7-YBYoGhQfDF4q4Yp3KmX_ip_axt1vwsDpzw', u'geometry': {u'location': {u'lat': Decimal('40.8186843'), u'lng': Decimal('-73.8940875')}, u'viewport': {u'northeast': {u'lat': Decimal('40.81872585'), u'lng': Decimal('-73.89388514999997')}, u'southwest': {u'lat': Decimal('40.81855964999999'), u'lng': Decimal('-73.89415495')}}}, u'adr_address': u'<span class="street-address">877 Southern Blvd</span>, <span class="locality">Bronx</span>, <span class="region">NY</span> <span class="postal-code">10459</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJy8Qxm6v1wokRt3LhQlV5YAU', u'international_phone_number': u'+1 718-617-0338', u'vicinity': u'877 Southern Boulevard, Bronx', u'reviews': [{u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-tVIftWJC8VI/AAAAAAAAAAI/AAAAAAAAAO0/jaa413MkGCs/s128/photo.jpg', u'language': u'en', u'text': u"Haven't been to a library in over 10 years went today to this location, and I LOVED IT! Staff so nice and helpful. Got some work done and some peace!", u'author_name': u'Christina Campos', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/106759049673271563466/reviews', u'time': 1483113029}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-D48tpkxND3E/AAAAAAAAAAI/AAAAAAAAAt8/piFczn7kQd8/s128/photo.jpg', u'language': u'en', u'text': u'Closed on Certain sundays during the fall and winter seasons, Thanksgiving and Xmas as well as other federal holidays. If Xmas is on the weekend, then Fri Sat Sun, or Sat, sun, Mon. Most libraries controlled by NYPL are similar.', u'author_name': u'Nicholas McGee', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/117031407071945158896/reviews', u'time': 1482672358}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'author_name': u'Deirdre Evans', u'language': u'en', u'text': u"I'm new to this area and I find the librarians very helpful and nice. My overall experience is a very pleasant one. I just wish there was more of a variety of dvds.", u'relative_time_description': u'6 months ago', u'author_url': u'https://www.google.com/maps/contrib/110117112485602992655/reviews', u'time': 1469887381}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'author_name': u'Munchkin Nena', u'language': u'en', u'text': u"I love that they constantly have new books and it's cool and relaxing and it's closer to where I live if it was bigger and the staff was less rude it would be better but I like it", u'relative_time_description': u'7 months ago', u'author_url': u'https://www.google.com/maps/contrib/109073781763510029840/reviews', u'time': 1467483971}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-rubc3qPsKno/AAAAAAAAAAI/AAAAAAAAACM/J6bz8HTtBZQ/s128/photo.jpg', u'language': u'en', u'text': u'Easy access, very good attention', u'author_name': u'Zatoichiwizard', u'relative_time_description': u'in the last week', u'author_url': u'https://www.google.com/maps/contrib/111064531736546339628/reviews', u'time': 1486784378}], u'formatted_phone_number': u'(718) 617-0338', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=387442975055114935', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 7:00 PM', u'Tuesday: 10:00 AM \u2013 7:00 PM', u'Wednesday: 10:00 AM \u2013 7:00 PM', u'Thursday: 10:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'877', u'types': [u'street_number'], u'short_name': u'877'}, {u'long_name': u'Southern Boulevard', u'types': [u'route'], u'short_name': u'Southern Blvd'}, {u'long_name': u'West Bronx', u'types': [u'neighborhood', u'political'], u'short_name': u'West Bronx'}, {u'long_name': u'Bronx', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Bronx'}, {u'long_name': u'Bronx County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'Bronx County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10459', u'types': [u'postal_code'], u'short_name': u'10459'}], u'formatted_address': u'877 Southern Blvd, Bronx, NY 10459, USA', u'id': u'5cde74c91ba1e79c2c43544c53cec7701e318be8', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library - New Amsterdam Library
{u'lat': Decimal('40.7136403'), u'lng': Decimal('-74.00784519999999')}
ChIJ_SA1txhawokRU5ESS_fYQgk
{u'website': u'http://www.nypl.org/', u'rating': Decimal('4.3'), u'utc_offset': -300, u'name': u'New York Public Library - New Amsterdam Library', u'reference': u'CmRRAAAA5WdXbwu9OIOIg1FZ4f5O5pbHevtE-uYuqPk1HvaJT2XYOacBWC90FhfX3P8oVAMmME2-Q0yNALUlqPCkzRCa3fup5H8_U_3EMEib-eIuNWb9P11Z7Dwbttx6HU3OdVhkEhCFag3tjel5XlzRRKKRTxP9GhSAYa3Mld3Rd1fxjX24rmQr5A7pJg', u'photos': [{u'photo_reference': u'CoQBdwAAALGa7O49CMXhW10qC4B8AYvJ0R4KBsS3imUsMZS32Uh_jFnxX0QU71dJSGWz_rmigYRQboeGzwwjEKfWGcHeXc31kQOIn1kt4_Ljwg67U39AD0J1lcIuud5MQmwZYeqhIOhzolKTQPqSQrcq8n64gRSULsXtskfstnfSN4Gn7934EhA4VN5gG6jowmSKay-as9PEGhSx3PB-5KY6Feo3rHyjldesUKOJ2g', u'width': 2448, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/108119373404040609174/photos">Jason Jiang</a>'], u'height': 3264}, {u'photo_reference': u'CoQBdwAAAFtqbxy5qGa6F2D_Zr3fNSYcT3fs3fyUwF6g_D4tXvIO5SGqh7Qelb04THR9s1P1tiXvUOLynWY2EIGlw3f8DQHYHJN2fkOhdglpvFpmwV8EQR2gUKn_mdvmuWGa_tEe-fyIaCq3QJrg7aZGzaGr_4KqQAcai0Qsctw9ISaPQJ0xEhBtO7jHa5N9kceSK96IPBnKGhTFhu_z0hB1hZ1F1Hy0acO0eGGWHQ', u'width': 775, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/114437705200393004751/photos">Jason Shurb</a>'], u'height': 517}, {u'photo_reference': u'CoQBdwAAAJlMjdqotRSTwxKCFs1QTG0udV0mX--7EofdLYj7GlRPTAVuBlZqWvZ3jQK8MO1DcgC5PEVzkM6klxRij0FkHlXwkNbSouqvdFWnfEQ9PNk2dU-H2KnMgvNXFNK5sWuR7x13a8UcrU5Diobbsx053nKFCiQhD-aYjcMHbqxaTwJ9EhDlYL_WdOTtbvpjfOOs0JlnGhTlZbG2xjzgC0NQy0oUSvB7204vOg', u'width': 1020, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/114437705200393004751/photos">Jason Shurb</a>'], u'height': 730}, {u'photo_reference': u'CoQBdwAAAEBXjVMKGkHR5xh9zU8X9PJ-WTlHYwZ2HWW523QdZewKx4oUpN6LLti44kCnfF2FnTaNa3rROOAhfC56VhvejpMArAR6YDnNXuWa2YaU4VcqbaAO1fSqnHKiR2HzzLoYyFxDOjjStin8aN-oN-ET_dQdJf_cB-I-G88IJuB12hvOEhD1MIqjhyWSAugqPZ-k85lQGhQo9JuzmRhkH2E2AEF-0vb6PM7Yfw', u'width': 800, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/108447695082249073384/photos">jazz gaming</a>'], u'height': 821}, {u'photo_reference': u'CoQBdwAAAIfu5T-NPM9gkGHBhCR7aQBV7wzMMgcRQjh8Dpj84uZJfvVbbjbCoKvjGlVEljWKTcYllHskxjTwKHxK1TgQlOmP2BRcqj_gOEQ_yDsZmGUbKSVDzL4D2SUGk3EWn9YtWjsJzHR_pHtxVB6_CoJeFhGoHRw1VxxK2dTPn-CVGxT3EhBHfku-DqgLRrDmt5S9hLz5GhRjcGSqri93Rq2UaunY9QrRLQmvMQ', u'width': 750, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/114437705200393004751/photos">Jason Shurb</a>'], u'height': 1000}, {u'photo_reference': u'CoQBdwAAAI44Z_sYDJsRcGAyYnuQKNd-ulMJfjGdMtlWW2YaJncN6RG00pIDGD1KnsNm6Qv3LcysJrOka6SaLswqbHYXrfjOd2CBwAYURVTnHQCMrQ_w9gB08fk_SxAehy3tDc4TQAVeAFtgxInlsGDbSjdAASaeTeuaO7DTLQA5P2I9a9PiEhBNMVCjFLJr6LXNA1tQhsS4GhTGIdZOIucu-U2mrIXWf7QetzupkQ', u'width': 635, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/114437705200393004751/photos">Jason Shurb</a>'], u'height': 423}, {u'photo_reference': u'CoQBdwAAAGB2oZp-L0hLMFFhMYf2Xeb4d6DBp52TLAwTntaPfF6W6_URm5cGioK5ROMxUvejRQnpXeFNIRSHZYC4_Bag9feOPaD4ra0oiMXR0Y_xpTbbKunX6di4Elrp2KVjyRTSfMRqwqhwL3YMGYIfRz_5AYMbMOYWf9ZT0UqPIKaBfJmTEhAgPHXlqSIuJn05xT-GI9O9GhRMDrHcXzkElAIiybIXIqJvP8c9QA', u'width': 500, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/114437705200393004751/photos">Jason Shurb</a>'], u'height': 375}], u'geometry': {u'location': {u'lat': Decimal('40.7136403'), u'lng': Decimal('-74.00784519999999')}, u'viewport': {u'northeast': {u'lat': Decimal('40.71375875000001'), u'lng': Decimal('-74.00777889999999')}, u'southwest': {u'lat': Decimal('40.71328495'), u'lng': Decimal('-74.00804409999999')}}}, u'adr_address': u'<span class="street-address">9 Murray Street</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10007</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJ_SA1txhawokRU5ESS_fYQgk', u'international_phone_number': u'+1 212-732-8186', u'vicinity': u'9 Murray Street, New York', u'reviews': [{u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'author_name': u'Raquel Humphris', u'language': u'en', u'text': u'Beautiful place. Unfortunately one of the rooms was closed due to renovation. But we will be back!', u'relative_time_description': u'7 months ago', u'author_url': u'https://www.google.com/maps/contrib/116160134007554778996/reviews', u'time': 1467890051}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-7cZXQETIynM/AAAAAAAAAAI/AAAAAAAAAKo/eEZ5WTUPQAs/s128/photo.jpg', u'language': u'en', u'text': u'Good thing is there many programs, workshops. but kind of small, and the water taste like old pipes.', u'author_name': u'Ed Tao', u'relative_time_description': u'9 months ago', u'author_url': u'https://www.google.com/maps/contrib/109891576224279162625/reviews', u'time': 1463092378}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-oHT_9TW-b7U/AAAAAAAAAAI/AAAAAAAAAKo/4nj9J2wmXm0/s128/photo.jpg', u'language': u'en', u'text': u'Love this library...a haven of the free in the insanely expensive downtown area', u'author_name': u'Julie Ann Rivera', u'relative_time_description': u'10 months ago', u'author_url': u'https://www.google.com/maps/contrib/102947933767393964564/reviews', u'time': 1461022215}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-YApZm7G-2Io/AAAAAAAAAAI/AAAAAAADIGo/HHteJjqo8rU/s128/photo.jpg', u'language': u'en', u'text': u'ok', u'author_name': u'Tony Lee', u'relative_time_description': u'2 months ago', u'author_url': u'https://www.google.com/maps/contrib/117761469153603232483/reviews', u'time': 1479917377}, {u'rating': 2, u'aspects': [{u'rating': 0, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-4vynS4pTmPQ/AAAAAAAAAAI/AAAAAAAAgjM/IZ2iDKIBvtY/s128/photo.jpg', u'language': u'en', u'text': u'The worst library ever. ', u'author_name': u'Tamika S. Wright', u'relative_time_description': u'4 months ago', u'author_url': u'https://www.google.com/maps/contrib/104802540652903980665/reviews', u'time': 1475527604}], u'formatted_phone_number': u'(212) 732-8186', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=667334251432284499', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 7:00 PM', u'Tuesday: 10:00 AM \u2013 7:00 PM', u'Wednesday: 10:00 AM \u2013 7:00 PM', u'Thursday: 10:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'9', u'types': [u'street_number'], u'short_name': u'9'}, {u'long_name': u'Murray Street', u'types': [u'route'], u'short_name': u'Murray Street'}, {u'long_name': u'Lower Manhattan', u'types': [u'neighborhood', u'political'], u'short_name': u'Lower Manhattan'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10007', u'types': [u'postal_code'], u'short_name': u'10007'}], u'formatted_address': u'9 Murray Street, New York, NY 10007, USA', u'id': u'2bd1ad3be906457595064d368a57ddd9ccda6cd3', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library
{u'lat': Decimal('40.7859538'), u'lng': Decimal('-73.951815')}
ChIJ9etHl6ZYwokRYSn_4IG_OVg
{u'website': u'https://www.nypl.org/', u'rating': Decimal('4.3'), u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRRAAAAcfszUrxpESv8tjUDAVOexJvcaGsGGO4jvqbaIGQ07YAoy1wmawl3DE9xeZT5V4Uc2lKBi_OFk9PmQJfEdc-9f1d5OQ5evEVUgPZpTMIUvhYW80KzAAvEOZWol6M2C9ciEhCc1F2UAv4WPngGdSX7MXgkGhQTs72fG3eV_z6rmJBuPaGdXv5jEg', u'photos': [{u'photo_reference': u'CoQBdwAAAF_tym3ExPjO-7DC6IEnb3gsLPWVGgmPUWKr1zMxSNeNBEsL6gzHa1po7pYzMgGOUq5PZjMiUrrEUbDfeojqMhmwrpAbuxiT3S7gg3bhO8sS4RaC71Bb6hpbwN3BDcxOO7kOCd-ca_hr5of7cl6q5rcenFXzARP-bBFE1Ko5b8anEhBgY5tNaceBZhsWkLYgBtYdGhRdxdxkNfhB_SMrfBxSJf88cIu_7A', u'width': 3072, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/104646342119421693824/photos">Darek Kra\u015bnicki</a>'], u'height': 1728}, {u'photo_reference': u'CoQBcwAAAMF9VRLx_FF7cFyR6KJ-9ikS3pLY9OxHqs65vIgU2T_c64R6Vrkvq4fAGA25Y_9UVbz_VqKeY-YbrptUjGNEUdfdfsq0psdMUY1Vtx3vEzCLscJsxbsDEzlljX6WPFKhGo4hqp_EcfY-E1gHxXG--R_DGY8c2MWEQwmePc5lZflEEhBqG5btHWOf2xgmlk88pbdvGhTGOyyBWCeWIWt1KY5_BwOcPzukIg', u'width': 2448, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/116838844525874831562/photos">Uri Shusterman</a>'], u'height': 3264}, {u'photo_reference': u'CoQBdwAAAMV284_H3g5IvEpKSkf_7_cY1Yf-jx2TWOxlFM8WWu4P8U_Z-o6veIQ8JwlHQupksTkOu06P9nDZsjrBbbXrAceOz26lTSS6DK0DwmBF2i5Kd9b_JKnvYVjEBMHp9_7cg4xkajbFcGkrUFmBbhsz7_lhedCB5eqVNe2boTPp4ef_EhAQFBiBrIEuFjXRtmSfKiR9GhQijvZg5m46q-JAg8_3amU_UR9SoQ', u'width': 2448, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/116063192351749061658/photos">TH3GODHOV3 Ps4</a>'], u'height': 3264}, {u'photo_reference': u'CoQBdwAAAKBdfGHCa4SBFEAtqBxplAMedY3UoXVl377qF5mnJJQg1MNGxf7utuKn-DUrL3W0RJuUeIMEhRRK8N5jw1KrC0vMZIZqr5gc3O5cQKSIBkDE8Os6e_oZx2VH0dkdTolaIfeuhReYkkVpWw3ituocQVj3Q9OAd2xAEghEoKf9pxdOEhABreWx79Mq2bz6LlIhc4hFGhRQdTGSFQChCLK70A4dY50MscihLw', u'width': 2448, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/101937707008991231663/photos">Commander Rick</a>'], u'height': 3264}], u'geometry': {u'location': {u'lat': Decimal('40.7859538'), u'lng': Decimal('-73.951815')}, u'viewport': {u'northeast': {u'lat': Decimal('40.78628515'), u'lng': Decimal('-73.95157005')}, u'southwest': {u'lat': Decimal('40.78584335'), u'lng': Decimal('-73.95189664999998')}}}, u'adr_address': u'<span class="street-address">112 E 96th St</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10128-2626</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJ9etHl6ZYwokRYSn_4IG_OVg', u'international_phone_number': u'+1 212-289-0908', u'vicinity': u'112 East 96th Street, New York', u'reviews': [{u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-Mkw62Uy9XvE/AAAAAAAAAAI/AAAAAAAAAFw/BmMrK_PRpHM/s128/photo.jpg', u'language': u'en', u'text': u"Decently sized library. It has 4 floors total. In the basement there's 2 conference rooms and restrooms which were locked when I was there. Main floor has about 3 tables with 4 chairs each. Second floor is for children and the third floor is reference with about 10 tables with 4 chairs each, so lots of sitting space. Not extremely quiet but quiet enough in the 3rd floor. ", u'author_name': u'Commander Rick', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/101937707008991231663/reviews', u'time': 1483639785}, {u'rating': 1, u'aspects': [{u'rating': 0, u'type': u'overall'}], u'author_name': u'Fly Onwall', u'language': u'en', u'text': u'It was very frustrating! No bathroom, & staff is very loud. Could not focus on studying at all.', u'relative_time_description': u'3 months ago', u'author_url': u'https://www.google.com/maps/contrib/117195349690234874093/reviews', u'time': 1479255089}, {u'rating': 1, u'aspects': [{u'rating': 0, u'type': u'overall'}], u'author_name': u'B C', u'language': u'en', u'text': u'Bad Experience at this library. "The Lady" in the 3rd floor says teenagers can\'t be in the 2nd or 3rd. Even if they are doing homework. 1 star. Horrible.', u'relative_time_description': u'3 months ago', u'author_url': u'https://www.google.com/maps/contrib/107474457513287603927/reviews', u'time': 1478141010}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-NilRYwW-_N8/AAAAAAAAAAI/AAAAAAAAAGI/wv0n3OyJtnk/s128/photo.jpg', u'language': u'en', u'text': u'Love it they have all my favorite manga', u'author_name': u'hey !', u'relative_time_description': u'6 months ago', u'author_url': u'https://www.google.com/maps/contrib/109737947958805288151/reviews', u'time': 1470842433}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-qAXItjaKuqA/AAAAAAAAAAI/AAAAAAAAL7g/u-TD6v1qfYk/s128/photo.jpg', u'language': u'en', u'text': u'Great location to get connected to the internet and browse books.', u'author_name': u'Benjamin Hillyard', u'relative_time_description': u'8 months ago', u'author_url': u'https://www.google.com/maps/contrib/113883982295715734537/reviews', u'time': 1464156934}], u'formatted_phone_number': u'(212) 289-0908', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=6357322913556670817', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 7:00 PM', u'Tuesday: 10:00 AM \u2013 7:00 PM', u'Wednesday: 10:00 AM \u2013 7:00 PM', u'Thursday: 10:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'112', u'types': [u'street_number'], u'short_name': u'112'}, {u'long_name': u'East 96th Street', u'types': [u'route'], u'short_name': u'E 96th St'}, {u'long_name': u'Upper East Side', u'types': [u'neighborhood', u'political'], u'short_name': u'UES'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10128', u'types': [u'postal_code'], u'short_name': u'10128'}, {u'long_name': u'2626', u'types': [u'postal_code_suffix'], u'short_name': u'2626'}], u'formatted_address': u'112 E 96th St, New York, NY 10128, USA', u'id': u'65146de3a2db63329eb8ccfdd81e8e136e1183d0', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library
{u'lat': Decimal('40.7445045'), u'lng': Decimal('-73.99595959999999')}
ChIJp3O8ILtZwokRbgO_BXZqGNI
{u'website': u'http://www.nypl.org/locations/muhlenberg', u'rating': Decimal('3.7'), u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRSAAAANzSUrcGjUG06w-kH3lOBqSfvLLxwLtAWpM2m6pQt9HDE-b4ugWGRcjaWwdnCck-btwJtJpsXNi-jVbKV4jItgsOMegYGv4GRy3rFlf0EN5Y21WpAZlbZ_vcVj4nkv3-TEhCg1SSiYXS03fvVIOSe_L0iGhSyMe2dFnczrH_vdxzAS7cgpWD0XA', u'photos': [{u'photo_reference': u'CoQBdwAAAJrtYa_gsXcOjRuisDgfORTr5nP2lOEVCOSTooIpForVsp9Eu-q47oN1uVO7SNVIDG_oSDkIM1RalD8lJY6HgLw545XgyHJ_bMJ2fht5-N7p7BRwm4kuH0HyAtkpyHmOJ9uV6yEbBMwNb4qU92asNLs-1KvDH_QdrcnzW617pq2LEhCHQkYHuiB64myeWqF9aS-RGhRG38a7ttQChkGoOx25uw2mOEcWrw', u'width': 2448, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/115183086544552542262/photos">dex _</a>'], u'height': 3264}, {u'photo_reference': u'CoQBdwAAAJIj6VIX8U8ZWjuL2-UE3_VWSQbX5Ge-N97UN8VsTvmjVImU8_GY48YdVypUDtSNvcdR-loDZR4RZr8rDydlxwxo2pP34ceLz7JONexLmIGQRtp-1qunK7uQsxa-dPYkFSosppJCkJQomVoeMUsXtW-lSohvpRTb6pa5lfQe6SYDEhDyslT8T24LdY7E6cQ_JNg0GhSv9hA9b1183q6kFAuMVAUQj1VldA', u'width': 3024, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/111793281148483537299/photos">Warren Sze</a>'], u'height': 4032}, {u'photo_reference': u'CoQBdwAAAHG2VRRV1LdBiigpNbYREc5ac6UpiHZGDRkotZvzcDFr5Kvm2kLZbI6mkUojs92p8yKkDu_92voTBDCq449R6mnN1d8Px2GHhBB4hiSekBTZuideTu2h5Q22qakQQiyPITyjQRAkDSeOAH5sleBnbvtf82NOj-PDx2oSOZDIs4umEhBjmBJhy5AnX9_CnbPBoL-qGhRv0lgXltTTwMALfhpqjt3lMymVMA', u'width': 1840, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/113094800256420121664/photos">Tulio Janniere</a>'], u'height': 3264}, {u'photo_reference': u'CoQBdwAAAFQR2QWSwx__rE0ekIDsY-Ty9Xcw_Hc66IgI3r5CILiPEScu5eVdGfEiCbI4wLKNx5zblL83yOKP_9FYyLl76JLcSCFeG0VgN-kgGOeDvGOuKpNHlNGLAsXtGTnvVX5HzhodRYNAt-pp9j5y7DBJwjA77G4ofE_mzysL1CE6YGTLEhAavPu9Auh2QdfDucua78XWGhS3uTglbO3_5tGqr4sFdSH6Z363SA', u'width': 3024, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/111793281148483537299/photos">Warren Sze</a>'], u'height': 4032}, {u'photo_reference': u'CoQBdwAAAE158gbZ_S3qybou1TCuLVZEZuyq506UA_DV23yQK5ADdGsEyZeaMeJWvGaqajUJPUfxOPAr2-XINuct1M-I_UdwLajc72UGk1CStyMRCPG6NKE3prfMmusCoXuHm1VEZqUt8Y__4SAhpzJt0SPWqex_FdXC6De_j31OARQiiZTyEhCPAjHhSEbiP7LXzBEmCjfXGhT-N7xhr36CTyWX6YbWl0KTXFICjw', u'width': 2988, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/103005017077380450277/photos">Conan Yuan</a>'], u'height': 5312}, {u'photo_reference': u'CoQBdwAAACeUNwOfUsmRO3VbqSXMuMKgVkngPNtf-SIQpkdG5sScJYRpHpR5qNEX4jOgqI0PItwKs_Fppo_PW68z6-wBnkHQYibei-dDoPDj6_9kxrZYvLFnVWZ1iPo8hw4HHH8WSTk88fHEtuEd4F9r81O_7UhZ2k5ZwyuoJLI8km14DN09EhBfdAr5Tyr5G26zSX3LVX9VGhRIoshHN-Dxjo4PI15S2r4R5hWKRg', u'width': 2448, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/116418406502215967625/photos">Mira Serrill-Robins</a>'], u'height': 3264}, {u'photo_reference': u'CoQBdwAAADPMGP9f3tWW2G1xuILqA-xc6PIh_GaA-GN8vtXiDvZIYNQBoZk8dZ80o3gAiJdANIl1hcKxN5BcnuFxlaOK-Nlx5vEf3zantH5Yl7KRATqF2qaQoJF2dfGws-tIBwIKs3Bao3YNc5Eh_2tL4Zyudz-HxBVCLZicfdTp2R24iTZgEhBVRyU_rm910kSMKjL1TcDsGhT11p4qxu_IJtUG4GoqPlCIXo1uKQ', u'width': 3024, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/111793281148483537299/photos">Warren Sze</a>'], u'height': 4032}], u'geometry': {u'location': {u'lat': Decimal('40.7445045'), u'lng': Decimal('-73.99595959999999')}, u'viewport': {u'northeast': {u'lat': Decimal('40.74460704999999'), u'lng': Decimal('-73.9958843')}, u'southwest': {u'lat': Decimal('40.74419684999999'), u'lng': Decimal('-73.99618549999998')}}}, u'adr_address': u'<span class="street-address">209 W 23rd St</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10011-2302</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJp3O8ILtZwokRbgO_BXZqGNI', u'international_phone_number': u'+1 212-924-1585', u'vicinity': u'209 West 23rd Street, New York', u'reviews': [{u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-9prN6BBBrnU/AAAAAAAAAAI/AAAAAAAACzk/h8H0GkvKo0s/s128/photo.jpg', u'language': u'en', u'text': u'A smaller branch often with lots of people but usually quiet. ', u'author_name': u'Kaori N', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/109496509642203395587/reviews', u'time': 1484199566}, {u'rating': 2, u'aspects': [{u'rating': 0, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-hdJvUzzLj8Y/AAAAAAAAAAI/AAAAAAAAAB4/GaFKveU4N_4/s128/photo.jpg', u'language': u'en', u'text': u'Too small for Adults. Upper floor is not for those, age 19 and above . Beautiful, black stoned staircase. You may only climb to seek items, but not to sit-down.', u'author_name': u'Tulio Janniere', u'relative_time_description': u'5 months ago', u'author_url': u'https://www.google.com/maps/contrib/113094800256420121664/reviews', u'time': 1474129753}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'author_name': u'Jane Raskin', u'language': u'en', u'text': u'Muhlenberg is a good library, with conscientious librarians and support staff, tons of media, working PCs, and a dedication to serving the WHOLE community--even on rainy days!!', u'relative_time_description': u'8 months ago', u'author_url': u'https://www.google.com/maps/contrib/106058437549934908838/reviews', u'time': 1466455347}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-F_od7Tr6HCE/AAAAAAAAAAI/AAAAAAAAMnk/wXilsiUk54w/s128/photo.jpg', u'language': u'en', u'text': u'Decent selection for a smaller branch.', u'author_name': u'Lauren Joy', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/104902348275471708948/reviews', u'time': 1482964728}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-z7atrCM_8Eg/AAAAAAAAAAI/AAAAAAAAEo4/QUVNqhs6bLA/s128/photo.jpg', u'language': u'en', u'text': u'Place is usually full. People like to read!', u'author_name': u'sanket jain', u'relative_time_description': u'3 months ago', u'author_url': u'https://www.google.com/maps/contrib/114841169119658377679/reviews', u'time': 1478394395}], u'formatted_phone_number': u'(212) 924-1585', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=15138967202541011822', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 7:00 PM', u'Tuesday: 10:00 AM \u2013 7:00 PM', u'Wednesday: 10:00 AM \u2013 7:00 PM', u'Thursday: 10:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'209', u'types': [u'street_number'], u'short_name': u'209'}, {u'long_name': u'West 23rd Street', u'types': [u'route'], u'short_name': u'W 23rd St'}, {u'long_name': u'Chelsea', u'types': [u'neighborhood', u'political'], u'short_name': u'Chelsea'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10011', u'types': [u'postal_code'], u'short_name': u'10011'}, {u'long_name': u'2302', u'types': [u'postal_code_suffix'], u'short_name': u'2302'}], u'formatted_address': u'209 W 23rd St, New York, NY 10011, USA', u'id': u'e503bf295bb535b4c9d150960dc43cc939a02980', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library
{u'lat': Decimal('40.8060839'), u'lng': Decimal('-73.96470979999999')}
ChIJJXN1Dzz2wokRjPSRXY3qHi4
{u'website': u'https://www.nypl.org/locations/morningside-heights', u'rating': Decimal('4.4'), u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRRAAAAWjboTYifVokijzWbUSRUiZNt-UgEfqp-bMma49TvkgbribWBb2qZDIXiAR8wl-ta9h9Ml0Zk83Scn9VqXrgJSI-3u34V_KtawWULwhV8V35RFasOdF0EQboOkv-HZB3ZEhAWRNxZbNDJXbw7B9y98ADmGhR9Lv-hx_oDy2QnNDiFJvsRcyildA', u'photos': [{u'photo_reference': u'CoQBdwAAAHPLjqD505DZRG_4-iBOlrIAKMO7zcEm5uWetuv-F2VbZYWmzrdyONB7CDKpSimLW7L7761FU-QkH2yA3QHigOz6KeSUbosBqxqN328pcVOrf7MJHWKGLhtgGhtHWxe0uUAHJGcfM6kbzjTp-lA_wrCFEo4SkrZIFUHKzmUZnBTWEhCQhBsZus-hHqQCtmcRcUX2GhTulIdS5RNWE8ZQOfO6retrPapYYA', u'width': 2448, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/115810845550188796652/photos">Ko Poo</a>'], u'height': 3264}], u'geometry': {u'location': {u'lat': Decimal('40.8060839'), u'lng': Decimal('-73.96470979999999')}, u'viewport': {u'northeast': {u'lat': Decimal('40.80632089999998'), u'lng': Decimal('-73.9645256')}, u'southwest': {u'lat': Decimal('40.8060049'), u'lng': Decimal('-73.96526239999999')}}}, u'adr_address': u'<span class="street-address">2900 Broadway</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10025-7822</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJJXN1Dzz2wokRjPSRXY3qHi4', u'international_phone_number': u'+1 212-864-2530', u'vicinity': u'2900 Broadway, New York', u'reviews': [{u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'author_name': u'Kevin Neil Bernard', u'language': u'en', u'text': u"love this library. love the staff. for the kids and myself it's a great place to be.", u'relative_time_description': u'2 months ago', u'author_url': u'https://www.google.com/maps/contrib/118205699710958479720/reviews', u'time': 1480090266}, {u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'author_name': u'Grant Figari', u'language': u'en', u'text': u'Hard to focus for more than 5 minutes without a wailing baby interrupting your train of thought, even with headphones. \nI like kids, but this is a library, not a daycare.', u'relative_time_description': u'7 months ago', u'author_url': u'https://www.google.com/maps/contrib/102773444234538215175/reviews', u'time': 1468944858}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-Gb0CWrYTvn4/AAAAAAAAAAI/AAAAAAAHLwI/WqQfSgIECgU/s128/photo.jpg', u'language': u'en', u'text': u"Pretty good location overall. They have plenty of tables and people generally stay quiet (except for some annoying babies...) Columbia's libraries aren't open to the public so this is a great alternative!", u'author_name': u'Casey P', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/106755311109474150935/reviews', u'time': 1447791453}, {u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-oTRMIggZv4I/AAAAAAAAAAI/AAAAAAAAV74/i3fIrMSRTTs/s128/photo.jpg', u'language': u'en', u'text': u"I had a conversation with Maggie Barbour, Manager of Morningside Heights, We were trying to contact IT and put a ticket in to network the Printer/Copier with the internet. In doing this it would allow a customer the ability to send a scanned image/copy to their email as a image file or a PDF file it would be a great convenience to the customers at Morningside Heights and probably other libraries in the region; guests- visitors from around the Globe- _ I have seen this done for the public libraries in Michigan, also many universities do this too. Most likely there's some type of kit that could make the connection very straightforward for the IT professional.\n", u'author_name': u'Dan Newell', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/116981282388666505931/reviews', u'time': 1454454181}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-F9ICheLQ_D8/AAAAAAAAAAI/AAAAAAAAAfk/j6yCQ27TuCw/s128/photo.jpg', u'language': u'en', u'text': u"This place is great. Nice staff. Not too crowded. I'm there a lot as I live in the neighborhood. Very pleased.", u'author_name': u'Steve Brophy', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/105937727290122505717/reviews', u'time': 1436194554}], u'formatted_phone_number': u'(212) 864-2530', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=3323351467927139468', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 7:00 PM', u'Tuesday: 10:00 AM \u2013 7:00 PM', u'Wednesday: 10:00 AM \u2013 7:00 PM', u'Thursday: 10:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'2900', u'types': [u'street_number'], u'short_name': u'2900'}, {u'long_name': u'Broadway', u'types': [u'route'], u'short_name': u'Broadway'}, {u'long_name': u'Upper Manhattan', u'types': [u'neighborhood', u'political'], u'short_name': u'Upper Manhattan'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10025', u'types': [u'postal_code'], u'short_name': u'10025'}, {u'long_name': u'7822', u'types': [u'postal_code_suffix'], u'short_name': u'7822'}], u'formatted_address': u'2900 Broadway, New York, NY 10025, USA', u'id': u'3fd494bb3383a3fb0dfb97df4e4eff99da3e72ad', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library - Riverside Library
{u'lat': Decimal('40.7743645'), u'lng': Decimal('-73.9845136')}
ChIJ6Zcs3V9YwokRG7Y1fXA1Ku4
{u'rating': Decimal('4.3'), u'utc_offset': -300, u'name': u'New York Public Library - Riverside Library', u'reference': u'CmRSAAAAamGhcmfA7x-T8TaW2-QbHk2S_1pT_gyEVVVq2QirMmCd201JGKfMcsBMuwa0jaSQWAPdiGaKG5IPU6mXBqDge_Mi63uGpdCaooAb62zD-GW2yLba4Q6doGORKm-7mJxeEhCEZObJk8eTJOnuFMDbi2AWGhQ1fq7FCelfux3P47-_dfr5pgh8HA', u'geometry': {u'location': {u'lat': Decimal('40.7743645'), u'lng': Decimal('-73.9845136')}, u'viewport': {u'northeast': {u'lat': Decimal('40.77445675'), u'lng': Decimal('-73.9844379')}, u'southwest': {u'lat': Decimal('40.77433375'), u'lng': Decimal('-73.98474069999997')}}}, u'adr_address': u'<span class="street-address">127 Amsterdam Ave</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10023-6447</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJ6Zcs3V9YwokRG7Y1fXA1Ku4', u'international_phone_number': u'+1 212-870-1810', u'vicinity': u'127 Amsterdam Avenue, New York', u'reviews': [{u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-e0UZrVbOIh4/AAAAAAAAAAI/AAAAAAAAIBI/hiNLbV-kzCY/s128/photo.jpg', u'language': u'en', u'text': u'Awesome place for architecture or photography. With nice classic furniture and lamps. Make for a great learning environment.', u'author_name': u'Jason Huang', u'relative_time_description': u'9 months ago', u'author_url': u'https://www.google.com/maps/contrib/101465723476285354444/reviews', u'time': 1463420621}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-If2PaBZsbKA/AAAAAAAAAAI/AAAAAAAA_Z4/0ZtZSDXAmPE/s128/photo.jpg', u'language': u'en', u'text': u'Tip: there is a auto check out machine by the door. That will save you from waiting in line. ', u'author_name': u'Max Lin', u'relative_time_description': u'3 months ago', u'author_url': u'https://www.google.com/maps/contrib/105314126224382243755/reviews', u'time': 1478348225}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-BNWInp7aRIU/AAAAAAAAAAI/AAAAAAAAAhg/SEFWbZ27pvU/s128/photo.jpg', u'language': u'en', u'text': u"Doesn't have a lot of selections. Other than that, it's pretty nice little library.", u'author_name': u'Joe C', u'relative_time_description': u'9 months ago', u'author_url': u'https://www.google.com/maps/contrib/110593367833114512967/reviews', u'time': 1461990414}, {u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'author_name': u'Tallez Vous', u'language': u'en', u'text': u"The Riverside branch has some extra features not available at other branches such as a community room. They often hold special events in their community room as well as regular events such as yoga classes. A quick check out machine is available to skirt the long/slow checkout lines. The unsightly thing about this branch is that you will often find homeless napping in the branches seating. Situated in the street level of a residential building, it greets its visitors with stone flooring and a nice marble staircase for their second level. It's not a branch that one should go out of their way to visit though.... for that, go to the main branch on Fifth Ave. & 42 St.", u'relative_time_description': u'3 years ago', u'author_url': u'https://www.google.com/maps/contrib/111975132064742792688/reviews', u'time': 1364150562}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-Na1zy350aak/AAAAAAAAAAI/AAAAAAAAFjU/vzOWdXkCWJ0/s128/photo.jpg', u'language': u'en', u'text': u'Librarians are always helpful and courteous.', u'author_name': u'Jonathan Pei-Chan', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/100692201939953425841/reviews', u'time': 1452385626}], u'formatted_phone_number': u'(212) 870-1810', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=17161588087301977627', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 7:00 PM', u'Tuesday: 10:00 AM \u2013 7:00 PM', u'Wednesday: 10:00 AM \u2013 7:00 PM', u'Thursday: 10:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'127', u'types': [u'street_number'], u'short_name': u'127'}, {u'long_name': u'Amsterdam Avenue', u'types': [u'route'], u'short_name': u'Amsterdam Ave'}, {u'long_name': u'Lincoln Square', u'types': [u'neighborhood', u'political'], u'short_name': u'Lincoln Square'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10023', u'types': [u'postal_code'], u'short_name': u'10023'}, {u'long_name': u'6447', u'types': [u'postal_code_suffix'], u'short_name': u'6447'}], u'formatted_address': u'127 Amsterdam Ave, New York, NY 10023, USA', u'id': u'0f209442e99114223ae88699192e95130f36e53e', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library
{u'lat': Decimal('40.7958642'), u'lng': Decimal('-73.96761909999999')}
ChIJ6SGU8yb2wokRmPVa0OGGWD4
{u'website': u'http://www.nypl.org/locations/bloomingdale', u'rating': Decimal('4.2'), u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRRAAAAX_B4zFwCiQIhzDmTBxdB8B2Cs299LA9RuJ4mb6kLbSfjX-1oxS2r_Pjrc9ofLixKah78WtQz1UzNhpvcv8k_mx89hv1lRMVa1LTbkLv-kPIK4sXXAf-PglPV0Ui6siWREhDtWXO4Ple7R28lP__UdudKGhSDmYuXs9T0iZ8wk2bYmOrp8pInrw', u'photos': [{u'photo_reference': u'CoQBdwAAAFvWCD2UiY2eWPLTYxDTB8-uSZ3s85YNRklqmPQ94DBrb8Iew_rj700NZ4_eBgRSn_hGOMQULvIqjJf2Xc1-lThKvkVV-J0DaTMDv1KawY8AbPbzkNFtiwuTxmjGalXUpRs7USjzgfg9YUAxRX1o5ZXdccuhU1blSLiaYaK07bXuEhAHYmcGuClIjuHHyZSXqsPwGhTwP47_uBsvtZF_gK8qySrgE7lZZQ', u'width': 5312, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/107542443173392886540/photos">Al Cohen</a>'], u'height': 2988}, {u'photo_reference': u'CoQBdwAAAGhN4TBqd4OTpzlQaB5fW2RVBpOLUzZpORhslENXFrSX1edXgl8YvVhN9sIuQ2WT5JzCsbkiltrydso06J0ZfWdwjoFAVucsvjSXuMcKJZTgE7G3e74OR--3fZ6BUWtTnSprXW_A-AhsR_veiSts8RPh8o3UiRGZC_lSBaAuahoQEhDr5k6RRVpOKF2EJlId0q8_GhQN5D9BMfMhG-zOv7Z0oICmIHnZOg', u'width': 3264, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/100977787671095852487/photos">Bekzod Ahmedov</a>'], u'height': 2448}, {u'photo_reference': u'CoQBdwAAAKEZQeGb24W1fL13x4ZTrezPaPEXutW8SAYbjkdBQD-i8yBhIhHk3u_FPh94r98aL4F9DMSHOUczE17r_J_9SKqzymJuVSAr5Ifm0fN_20Q9qWoHHPSa9FwBQZtehVy_E2j9_0xZeo35x46EIGGFSg769YzzQcktHc-YSVgNrFfsEhB_MZFwQQh4KjSzmZ2Jgd-IGhRjftuRAzDmKGCd8eOQt3LhQH4I-Q', u'width': 3264, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/100977787671095852487/photos">Bekzod Ahmedov</a>'], u'height': 2448}, {u'photo_reference': u'CoQBdwAAAI-ZX3ZtIhT5BA2ZntpKQczIt17-FUD8ytKeqb377Te7Xv66B-TslxTuHuoHJlwchrnb0C-eauDj32kU93U-fISNwyczM4c_rOqPk3SLHP8WZ4GJdr2QQ_OOt0FRktp1RV_iFiKs8uDz5zzy0YiDyw6vhLzaU9sVys_-IwllweoJEhBuHy8j4X_LY0Cjy5vWno3cGhQ3zzVeohM0DGl4pyEr7wkTbk8VaA', u'width': 1530, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/109043136544678200383/photos">Charles Smith</a>'], u'height': 2048}, {u'photo_reference': u'CoQBdwAAAGARCVBXwZhDkrRFQ2v4eUiirZ56vGbU8pizG3U_Mpq4DvKbWxbUHoIyShj6nnOCGAtbY5qpQKsEkSFPJbwZFOS0vo1fUl5JA9qFC40cQtItrQ6v8zAdDLhMRbwU4TlQtL3APO3EONxBli6JA-ZAkxBch8q_5vQysNCovSFhSEE7EhAaQPHuBDMAqNU1bYshQlJZGhQGstHW4OcxiVo02yTmaOPP99DWyA', u'width': 4048, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/107068838566965446335/photos">Moe Friedman</a>'], u'height': 3036}, {u'photo_reference': u'CoQBdwAAAEAI_RYMSzlw_h6rKD9rZbm6GJr7nnmVK8ibFQN8ATAIKSszwkuBdygB7KkVKKqdsfF1ETgW90nOe-5YbjNX6iaW2is6YZTUYM40hw4W-VQniOopwCJ6fkdtxboh0YkZGFvzBDuINTBPdVUYKZvBsVoLS2IpLVprqecyhLIfFOpSEhDhIFRdI0NG-dwU75cWF14SGhRpg-sq8CsfW-jDeubd4n1Tnpw5aw', u'width': 2448, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/100977787671095852487/photos">Bekzod Ahmedov</a>'], u'height': 3264}, {u'photo_reference': u'CoQBdwAAAOCPyveiGpm8V8CLpFbgwka58mfvZSnq8G_1_PFQ9tl3jSOw2cMB-Ei4K2uychorZ9zb1wHvt8a2hpaORz6PL3QBfA-UUqC_iu-jn9z63LZ85qfnzLEyUPtB2VXczNZJN9myGlJd3cFfxeIwbvmdj7szSNIVHxv-PjqbBXyuniKMEhD0xy5s6AG8kRXjUkZtTtADGhRnnektO8-dCCvw0o5KRGmk-FMZfQ', u'width': 2448, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/100977787671095852487/photos">Bekzod Ahmedov</a>'], u'height': 3264}], u'geometry': {u'location': {u'lat': Decimal('40.7958642'), u'lng': Decimal('-73.96761909999999')}, u'viewport': {u'northeast': {u'lat': Decimal('40.79640705'), u'lng': Decimal('-73.96722580000001')}, u'southwest': {u'lat': Decimal('40.79568324999999'), u'lng': Decimal('-73.96775019999998')}}}, u'adr_address': u'<span class="street-address">150 W 100th St</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10025-5145</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJ6SGU8yb2wokRmPVa0OGGWD4', u'international_phone_number': u'+1 212-222-8030', u'vicinity': u'150 West 100th Street, New York', u'reviews': [{u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-gIkCfe_Vq6I/AAAAAAAAAAI/AAAAAAAACs0/7aNJiKA8r4o/s128/photo.jpg', u'language': u'en', u'text': u'Excellent local library, I can spend hours easily in here. Good service, pretty clean, enough computers and laptops. Internet runs fast and smooth. Bathroom is clean too', u'author_name': u'Rich Gunzz', u'relative_time_description': u'3 weeks ago', u'author_url': u'https://www.google.com/maps/contrib/111381452783115488260/reviews', u'time': 1484948004}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-ksFGFtSdp-4/AAAAAAAAAAI/AAAAAAAAAco/_e_sCLQr-p8/s128/photo.jpg', u'language': u'en', u'text': u"This is a wonderful library and I can't imagine anyone having an ill word to say about it. The people at the front desk are totally overloaded but put on a friendly face anyway. The kids section is amazing and it's super easy to navigate. ", u'author_name': u'Jen Fraenkel', u'relative_time_description': u'10 months ago', u'author_url': u'https://www.google.com/maps/contrib/108470810920941060465/reviews', u'time': 1460841205}, {u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-3dDJpJeQzNk/AAAAAAAAAAI/AAAAAAAAAAA/BgliXtulNwc/s128/photo.jpg', u'language': u'en', u'text': u"I love having this library here. I order books from the online catalog and then I get an email when they are moved here. But what's with all that unused space for in front of the library? Why doesn't it abut the street? Was it designed for suburbs?", u'author_name': u'Ira Gershenhorn', u'relative_time_description': u'11 months ago', u'author_url': u'https://www.google.com/maps/contrib/106545457486765510928/reviews', u'time': 1457067544}, {u'rating': 1, u'aspects': [{u'rating': 0, u'type': u'overall'}], u'author_name': u'Brian Rosetti', u'language': u'en', u'text': u'Very dirty. Smells.', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/108760081007956752312/reviews', u'time': 1482154515}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-eXgX2YII2jc/AAAAAAAAAAI/AAAAAAAAAAo/2ha4UO_RFMY/s128/photo.jpg', u'language': u'en', u'text': u'This is a suitable place to study...It has only one problem,there is only one restroom.They should atleast add two more.Then this library will be perfect.', u'author_name': u'Danial Mokhtari Sharghi', u'relative_time_description': u'9 months ago', u'author_url': u'https://www.google.com/maps/contrib/114884106162491194083/reviews', u'time': 1463367416}], u'formatted_phone_number': u'(212) 222-8030', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=4492488932723455384', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1100'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1100'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 7:00 PM', u'Tuesday: 10:00 AM \u2013 7:00 PM', u'Wednesday: 11:00 AM \u2013 7:00 PM', u'Thursday: 11:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'150', u'types': [u'street_number'], u'short_name': u'150'}, {u'long_name': u'West 100th Street', u'types': [u'route'], u'short_name': u'W 100th St'}, {u'long_name': u'Upper West Side', u'types': [u'neighborhood', u'political'], u'short_name': u'UWS'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10025', u'types': [u'postal_code'], u'short_name': u'10025'}, {u'long_name': u'5145', u'types': [u'postal_code_suffix'], u'short_name': u'5145'}], u'formatted_address': u'150 W 100th St, New York, NY 10025, USA', u'id': u'0da05ea2fd4cd7470613835bb494c7b02b16a6c1', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library
{u'lat': Decimal('40.7649134'), u'lng': Decimal('-73.9595554')}
ChIJOacJdsJYwokRRA6QzaHPyqg
{u'website': u'http://nypl.org/', u'rating': Decimal('4.7'), u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRSAAAAdir1SvMXWg_Le-XF4Neo9Lui3216Mj9neWaXXRI7n3BCzC46kj8MEN6jZKk0inVH8dTxuR54jPh7QIyCpsIA5CR1zP4SuuSD5FB4QT_73nL0p9-LtCWBPmaKdZvtmO7JEhD_AB6l6XJsDeLtd46L1YDaGhTP-nKpgnxWnwaQBSTd-ivmoMooDQ', u'photos': [{u'photo_reference': u'CoQBdwAAAMT0po2HcjK6hiEgjEY04qlcjzqdADTGqYXMHSJy8wqGg6HY8Y3D4ZHh7Jji6-_XajMEGJ4Ew4BlHVQO1lohWECn13-d-6d9kw5A16CvqZxjTXmNuzqHzzs9zVBFxBqRsjMxXd0E2uGm8Zl7_nD6TFydggrBssEgKDKnQn7Wd0SVEhAViQe8jpx2DjLcLvQuRM_PGhSZEhMJ5tMZpNVmMbXN5Q4Q9THbUw', u'width': 2432, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/102501947104136343389/photos">Steven T Lee</a>'], u'height': 3286}, {u'photo_reference': u'CoQBdwAAAB3qm7Li4iwAKQW6DjpWoMFPbqTAiBjZj7sWpPSJreQbBUzA47K60cB9Ciz1rRX06AvqvtFi2P9P6_Tcg56Xi4HoWrdvNEa5ToP5JCrsL0jZSI4ne4xUj2jhCaJi31ecNXWFQjAAb3IaQm0YJuDuh3K5g6mY_QfpH_xeHyWH4L4mEhAADHZQtKV_w9M8IwEHv3TPGhRYb5psufpjgUWJ1AyGX6JxYm-Qlg', u'width': 3286, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/102501947104136343389/photos">Steven T Lee</a>'], u'height': 2432}], u'geometry': {u'location': {u'lat': Decimal('40.7649134'), u'lng': Decimal('-73.9595554')}, u'viewport': {u'northeast': {u'lat': Decimal('40.7651585'), u'lng': Decimal('-73.95935169999997')}, u'southwest': {u'lat': Decimal('40.7648317'), u'lng': Decimal('-73.9596233')}}}, u'adr_address': u'<span class="street-address">328 E 67th St</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10065-6204</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJOacJdsJYwokRRA6QzaHPyqg', u'international_phone_number': u'+1 212-734-1717', u'vicinity': u'328 East 67th Street, New York', u'reviews': [{u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-xYpDzE8QQs0/AAAAAAAAAAI/AAAAAAAAARA/ZD-Zc0r990Y/s128/photo.jpg', u'language': u'en', u'text': u"Extremely knowledgeable and friendly staff. Melissa works with class groups there, and does a great job presenting library info to the students. There selection is decent for a small library, and the facilities are great. It's also bustling with community activity and families! ", u'author_name': u'Mathew Kennedy', u'relative_time_description': u'6 months ago', u'author_url': u'https://www.google.com/maps/contrib/112999129720180453786/reviews', u'time': 1471032065}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-mU6LVKH4B9k/AAAAAAAAAAI/AAAAAAAAYp4/_YivTl2ID2w/s128/photo.jpg', u'language': u'en', u'text': u'The great place to read and rent books, CD, movies. The friendly staffs always ready to help you. Avoid going after 2pm weekdays if you want quiet hours. ', u'author_name': u'Steven T Lee', u'relative_time_description': u'5 months ago', u'author_url': u'https://www.google.com/maps/contrib/102501947104136343389/reviews', u'time': 1474135570}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-AbCeVHFScMk/AAAAAAAAAAI/AAAAAAAAAC0/kFhBaGmUKjU/s128/photo.jpg', u'language': u'en', u'text': u'If you looove reading, you may appreciate such a great selection of books.', u'author_name': u'Zlobin Ilya', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/100151635108524139251/reviews', u'time': 1482648262}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-setjVuPAsIc/AAAAAAAAAAI/AAAAAAAAFFM/5gJeUYFr90Y/s128/photo.jpg', u'language': u'en', u'text': u"It's nice to get some light by the front window to the north. ", u'author_name': u'Nick / Greg', u'relative_time_description': u'11 months ago', u'author_url': u'https://www.google.com/maps/contrib/108075002156722626253/reviews', u'time': 1458738231}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'author_name': u'Sebastian M\xfcller', u'language': u'en', u'text': u'I have been going to the english speaking group since October 2015. It is a really good opportunity to further improve your english and get in contact with people all over the world.', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/108413493202675562791/reviews', u'time': 1447596159}], u'formatted_phone_number': u'(212) 734-1717', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=12162762037512900164', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1100'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1100'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1100'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1100'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 11:00 AM \u2013 7:00 PM', u'Tuesday: 11:00 AM \u2013 7:00 PM', u'Wednesday: 11:00 AM \u2013 7:00 PM', u'Thursday: 11:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'328', u'types': [u'street_number'], u'short_name': u'328'}, {u'long_name': u'East 67th Street', u'types': [u'route'], u'short_name': u'E 67th St'}, {u'long_name': u'Lenox Hill', u'types': [u'neighborhood', u'political'], u'short_name': u'Lenox Hill'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10065', u'types': [u'postal_code'], u'short_name': u'10065'}, {u'long_name': u'6204', u'types': [u'postal_code_suffix'], u'short_name': u'6204'}], u'formatted_address': u'328 E 67th St, New York, NY 10065, USA', u'id': u'5b65ac6a6410ef9ac3aeaa2301179ea12bb33b84', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library TODT HILL
{u'lat': Decimal('40.60957619999999'), u'lng': Decimal('-74.1484694')}
ChIJZ1ot-0dMwokR66bxHEW1UQw
{u'website': u'http://www.nypl.org/', u'rating': Decimal('4.3'), u'utc_offset': -300, u'name': u'New York Public Library TODT HILL', u'reference': u'CmRRAAAA7OTBgHmVXSptHH9hCiLlC5EV9mFU4XKYxTJtplKvbKJcpD1mbh9wWtR_q4WWkSp5eZXHJf0RDyIXShhuxHKBC7M8nA9T_g2OW2fG9gCKmyQE4SF89qHQFpmX14Q_Ju8REhAnPaqpiWSmV567rA0D49VsGhSvE3t0uCB_mSr9zMZE_3G4voxOhg', u'photos': [{u'photo_reference': u'CoQBdwAAAGaM_2zJaadnua4k7sq7RhOYhny7a2sqTSEMj319cuQ5V_2-wxx2LGqGI25bSyzlVsXqdiyiUQOMMfYvvRnvnt7FLkTBwy8KpchMYNgOPDmPqWSMFVjjsPSCuEv8X6xC_H7Vb4KW4ooxkup7WRAncTSbPulXqSHIQn_1dvfVn5NtEhD5rg_zoinNgquCsPoQWf9kGhRzoQJGTuDJvgJvP8uvvq99o1uYuQ', u'width': 2988, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/115176812575168044753/photos">jafar Abbas</a>'], u'height': 5312}], u'geometry': {u'location': {u'lat': Decimal('40.60957619999999'), u'lng': Decimal('-74.1484694')}, u'viewport': {u'northeast': {u'lat': Decimal('40.609953'), u'lng': Decimal('-74.14840675000001')}, u'southwest': {u'lat': Decimal('40.60945059999999'), u'lng': Decimal('-74.14865734999999')}}}, u'adr_address': u'<span class="street-address">2550 Victory Blvd</span>, <span class="locality">Staten Island</span>, <span class="region">NY</span> <span class="postal-code">10314</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJZ1ot-0dMwokR66bxHEW1UQw', u'international_phone_number': u'+1 718-494-1642', u'vicinity': u'2550 Victory Boulevard, Staten Island', u'reviews': [{u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-g_4-Pib-85Q/AAAAAAAAAAI/AAAAAAAACmY/pk5vEdwavFU/s128/photo.jpg', u'language': u'en', u'text': u'Love the place\n\nLove the place ', u'author_name': u'jafar Abbas', u'relative_time_description': u'a week ago', u'author_url': u'https://www.google.com/maps/contrib/115176812575168044753/reviews', u'time': 1486218185}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'author_name': u'Claire James', u'language': u'en', u'text': u'The staff at this Library are always very helpful', u'relative_time_description': u'5 months ago', u'author_url': u'https://www.google.com/maps/contrib/109536437378582740573/reviews', u'time': 1472648632}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'author_name': u'Hernandez Hernandez', u'language': u'en', u'text': u'Beautiful library \U0001f4da\U0001f4da', u'relative_time_description': u'4 months ago', u'author_url': u'https://www.google.com/maps/contrib/106884086149941417398/reviews', u'time': 1475936328}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-G6OP4-KBvi8/AAAAAAAAAAI/AAAAAAAAMPc/m8m7JO5M_So/s128/photo.jpg', u'language': u'en', u'text': u'I love my library \U0001f60a\U0001f60a\U0001f60a\U0001f60a', u'author_name': u'Natalie Romero', u'relative_time_description': u'6 months ago', u'author_url': u'https://www.google.com/maps/contrib/101845932095310945748/reviews', u'time': 1469884787}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-VE8cltPs3Gk/AAAAAAAAAAI/AAAAAAAACas/gZVhqC8ZLro/s128/photo.jpg', u'language': u'en', u'text': u'People very kind here , pretty big selection ', u'author_name': u'Joanna Frattalone', u'relative_time_description': u'8 months ago', u'author_url': u'https://www.google.com/maps/contrib/113261381546006894440/reviews', u'time': 1465747340}], u'formatted_phone_number': u'(718) 494-1642', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=887689910011668203', u'opening_hours': {u'periods': [{u'close': {u'day': 0, u'time': u'1700'}, u'open': {u'day': 0, u'time': u'1300'}}, {u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'2000'}, u'open': {u'day': 2, u'time': u'1100'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 7:00 PM', u'Tuesday: 11:00 AM \u2013 8:00 PM', u'Wednesday: 10:00 AM \u2013 7:00 PM', u'Thursday: 10:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: 1:00 \u2013 5:00 PM'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'2550', u'types': [u'street_number'], u'short_name': u'2550'}, {u'long_name': u'Victory Boulevard', u'types': [u'route'], u'short_name': u'Victory Blvd'}, {u'long_name': u'Graniteville', u'types': [u'neighborhood', u'political'], u'short_name': u'Graniteville'}, {u'long_name': u'Staten Island', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Staten Island'}, {u'long_name': u'Richmond County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'Richmond County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10314', u'types': [u'postal_code'], u'short_name': u'10314'}], u'formatted_address': u'2550 Victory Blvd, Staten Island, NY 10314, USA', u'id': u'4380e8fcfbb0228136c2d0032be483b604f241a3', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library - Harlem Library
{u'lat': Decimal('40.80621500000001'), u'lng': Decimal('-73.943276')}
ChIJVT23Xwz2wokRYadfDuMWxac
{u'website': u'http://www.nypl.org/locations/harlem', u'rating': Decimal('3.2'), u'utc_offset': -300, u'name': u'New York Public Library - Harlem Library', u'reference': u'CmRSAAAAF5MLZmWTUCddHiuRRR_YfYqd-r5Btb7WP8d1KPizKSm0buzU_rhq8HN9odRyMGc8i1AlZ38nEKjGY4_ZcPZKsGC5hcigFGGPcwTQ-zRQ-tSUe4L7Tsoy8iNdBI14b8R5EhAQOfp_5OBou8nDtXivBbxqGhT-RTQ9FJsq0Goj1wGwM-5T9weacA', u'photos': [{u'photo_reference': u'CoQBdwAAALAziPr13jGGBKDr4L5l5GnFdlNPUns_FZRj6BMh18MlPijEzqaXQrmIrGNH7IACqaJryI3rfpZ0AHWCXoK3PG54icNNUsLK0Q4VExFcyUK8JO_Bm23dQOO3yGGYnpsxnGJdhz7P7IF0vt5imKAeLZJi8Rfv1a1RnzzSelqaG0XYEhDtqB8DbtNNDge6pe7YWtsKGhSgauC_s9_8u9rlUFXFf-AnBpi9ag', u'width': 600, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/106069846784101428399/photos">Michael Grimm Moore-VonGaysen</a>'], u'height': 800}, {u'photo_reference': u'CoQBdwAAAPtHHKBX6c7hRLUJrtRuZQAzo1VCBp_bYJG7IjsjynDm8NYGMOxg7GE-k5tO6rs10V5MPibzjm168YT8oD2nTi_2zWR24ljhhy-ySIJoH6Ah-vaCfouVOeJZf-6nHpGUAqj_o9jv3TxhZ263-ynYF5-p9OEzqkKp6G2oJ9h7WpoPEhCKgPOlrPDWTV7B3cIWQGn5GhRF2Om7vwDD4Zqp-duFoXhyK_fAUg', u'width': 2992, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/107870835028660434741/photos">Jacques Joky</a>'], u'height': 4000}], u'geometry': {u'location': {u'lat': Decimal('40.80621500000001'), u'lng': Decimal('-73.943276')}, u'viewport': {u'northeast': {u'lat': Decimal('40.80631435000002'), u'lng': Decimal('-73.94319409999999')}, u'southwest': {u'lat': Decimal('40.80591695'), u'lng': Decimal('-73.94352169999999')}}}, u'adr_address': u'<span class="street-address">9 W 124th St</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10027</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJVT23Xwz2wokRYadfDuMWxac', u'international_phone_number': u'+1 212-348-5620', u'vicinity': u'9 West 124th Street, New York', u'reviews': [{u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-k_WlCBxRPeU/AAAAAAAAAAI/AAAAAAAABpU/k1vvFEp8KzI/s128/photo.jpg', u'language': u'en', u'text': u'Great employees. Very helpful', u'author_name': u'E Saunders', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/103538319395356060235/reviews', u'time': 1482811808}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-VTZZVYfmPSk/AAAAAAAAAAI/AAAAAAAAAHI/p40Pa8nS5sg/s128/photo.jpg', u'language': u'en', u'text': u'It is an historical landmark where the great Ossie Davis said he spent much time learning and honing his craft. The staff led by Ms. Donna Murphy are friendly, knowledgeable and very helpful.', u'author_name': u'Lucious Conway', u'relative_time_description': u'6 months ago', u'author_url': u'https://www.google.com/maps/contrib/112443030286491117728/reviews', u'time': 1470155858}, {u'rating': 3, u'aspects': [{u'rating': 1, u'type': u'overall'}], u'author_name': u'Corrine McLaughlin', u'language': u'en', u'text': u'Small library compared to other public libraries. Bathrooms are used by random people in the street who come in making a lot of noise. No one regulates those who are distrupting others. But hey, free wifi.', u'relative_time_description': u'4 months ago', u'author_url': u'https://www.google.com/maps/contrib/104767639281430039733/reviews', u'time': 1475083665}, {u'rating': 2, u'aspects': [{u'rating': 0, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-5Ps3uM3wF74/AAAAAAAAAAI/AAAAAAAAAF4/bLwkO3MMWBo/s128/photo.jpg', u'language': u'en', u'text': u'I can\'t call a library a good place if there were two fights in a three-hour span during the time I was there. A more peaceful place to study or read would be the park directly across the street. In my one visit to this branch, there was no expectation of hushed voices. This library also has very few power outlets. I would\'ve rated this 1 out of 3 if 1 were "Fair" instead of "Good."', u'author_name': u'Carson Reed', u'relative_time_description': u'4 years ago', u'author_url': u'https://www.google.com/maps/contrib/107780459483874979850/reviews', u'time': 1345668760}, {u'rating': 2, u'aspects': [{u'rating': 0, u'type': u'overall'}], u'author_name': u'whyNOTwhitneyy', u'language': u'en', u'text': u'Worst library I have every been to. Its extremely noisey and the staff are even worst very disrespectful. Im a 25 yr old college student with a 5 yr old. Me and my child were there for a couple of hours when one of the staff and sercurity walk over to us saying no sleeping in the library. I looked up and said im not sleep im reeading. she said i just seen you eyes closed its not a debate theres no sleeping in the library.. It took the patience of chirst him self not to slap her.... lol I showed her the book in my lap said it may have appeared that my eyes are closed because im looking down into my book... (duh) but i was not sleep. this is not a debate im an adult. you made a comment so did I its called conversing if theres nothing else id like to finish reading thanks... she was pissed serves her right tho ugh she was so rude!!!!', u'relative_time_description': u'2 years ago', u'author_url': u'https://www.google.com/maps/contrib/108092495732793318607/reviews', u'time': 1401552333}], u'formatted_phone_number': u'(212) 348-5620', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=12089093939200501601', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1100'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1100'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1100'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1100'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 11:00 AM \u2013 7:00 PM', u'Tuesday: 11:00 AM \u2013 7:00 PM', u'Wednesday: 11:00 AM \u2013 7:00 PM', u'Thursday: 11:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'9', u'types': [u'street_number'], u'short_name': u'9'}, {u'long_name': u'West 124th Street', u'types': [u'route'], u'short_name': u'W 124th St'}, {u'long_name': u'Harlem', u'types': [u'neighborhood', u'political'], u'short_name': u'Harlem'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10027', u'types': [u'postal_code'], u'short_name': u'10027'}], u'formatted_address': u'9 W 124th St, New York, NY 10027, USA', u'id': u'cc9ef12462b720c4e03d585b487e2e9e745bad4c', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library
{u'lat': Decimal('40.7531527'), u'lng': Decimal('-73.98222579999999')}
ChIJ2QvCZwBZwokRfZ35dst1trk
{u'website': u'https://www.nypl.org/', u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRSAAAAYTZzY2aroGxUzvFVLwFheU_pJ_qcEkHU6YLjQlSSZ6nIuWJZy9XQZhv4eM6sEUjsAs5pSV3jG0Ivtccv3z1i6t8x9IHsTUXY9BL9HZ3L_j2j4OhmJfNuxu1EA7wIld3NEhBIYFFlbmbqq8w7gdomVTWiGhSwaUm4aH3H4Bqf7F4x65mIk2HCZQ', u'geometry': {u'location': {u'lat': Decimal('40.7531527'), u'lng': Decimal('-73.98222579999999')}, u'viewport': {u'northeast': {u'lat': Decimal('40.75332915'), u'lng': Decimal('-73.98096954999998')}, u'southwest': {u'lat': Decimal('40.75262334999999'), u'lng': Decimal('-73.98264454999999')}}}, u'adr_address': u'<span class="street-address">476 5th Ave</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10110</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJ2QvCZwBZwokRfZ35dst1trk', u'international_phone_number': u'+1 917-275-6975', u'vicinity': u'476 5th Avenue, New York', u'formatted_phone_number': u'(917) 275-6975', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=13382012859512888701', u'opening_hours': {u'periods': [{u'close': {u'day': 0, u'time': u'1700'}, u'open': {u'day': 0, u'time': u'1300'}}, {u'close': {u'day': 1, u'time': u'1800'}, u'open': {u'day': 1, u'time': u'1000'}}, {u'close': {u'day': 2, u'time': u'2000'}, u'open': {u'day': 2, u'time': u'1000'}}, {u'close': {u'day': 3, u'time': u'2000'}, u'open': {u'day': 3, u'time': u'1000'}}, {u'close': {u'day': 4, u'time': u'1800'}, u'open': {u'day': 4, u'time': u'1000'}}, {u'close': {u'day': 5, u'time': u'1800'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1800'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 10:00 AM \u2013 6:00 PM', u'Tuesday: 10:00 AM \u2013 8:00 PM', u'Wednesday: 10:00 AM \u2013 8:00 PM', u'Thursday: 10:00 AM \u2013 6:00 PM', u'Friday: 10:00 AM \u2013 6:00 PM', u'Saturday: 10:00 AM \u2013 6:00 PM', u'Sunday: 1:00 \u2013 5:00 PM'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'476', u'types': [u'street_number'], u'short_name': u'476'}, {u'long_name': u'5th Avenue', u'types': [u'route'], u'short_name': u'5th Ave'}, {u'long_name': u'Midtown West', u'types': [u'neighborhood', u'political'], u'short_name': u'Midtown West'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10110', u'types': [u'postal_code'], u'short_name': u'10110'}], u'formatted_address': u'476 5th Ave, New York, NY 10110, USA', u'id': u'd7768c83f92f3635f8c463002c801791c4991080', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
New York Public Library
{u'lat': Decimal('40.81378960000001'), u'lng': Decimal('-73.9569903')}
ChIJNSr_TGr2wokR-5iK_fdDUnc
{u'rating': Decimal('4.5'), u'utc_offset': -300, u'name': u'New York Public Library', u'reference': u'CmRRAAAAuGwK3oyVlgR4IHxmYBuxK2yUqo4CCpceJdmTV_0LcUDnqi3jCFlemKtCDOt-B3lPdKYmgwR90uki-WTsorX5E67EwbTgj-EzZpNfZL4MKKODjz76WGwpLca24iJsHJRuEhDxam8TnRbFVedyeFspKK67GhSRbKZ2sK_05r6j5xC-9Gbrkx1S9Q', u'photos': [{u'photo_reference': u'CoQBdwAAAPYtTpZWxpxPkiitgQur4pPcGkwz9bh6hvl9EUjYsf-3SfALzAJzAZJY-wD-hiupExmDXcGVomH_IxttKr4wf3u3tNqKAwgKDima8Io7e9Jjch25QiwFkdrVdRQ3NlY9fnCntOPh_l47Dm6p_xQpQiS3bTzaf71jX16XYvlm6PkmEhC2LYrvhA3413AlNwSrghGsGhTYKELwtQEuQ0rEWioN2zWA9Mhocg', u'width': 640, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/109473969461332973532/photos">Sabina De la rosa</a>'], u'height': 360}, {u'photo_reference': u'CoQBdwAAAISCjk3pg1JIxeFeKbSlvoT90wEm1ww-rVyLF4H6B8q_rh9IO_27EmvRE5JUoCL2yO7fjOYlIGolTgGOQCOWofTqKdFcVS9z_0DOS9_T3Nhkf1ka08xauJsSrYuPE3GcqbaHfiXmdkER2ieXpJLuUuyno-heDzEuW4zg5gwhuTp6EhDesxA8E1cdn3NgR0qQuOJXGhRz9PGOjmnEtkyO3bWrCzyAkWf8iA', u'width': 2676, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/105928811308006518314/photos">Minh T. Nguyen</a>'], u'height': 1518}, {u'photo_reference': u'CoQBdwAAAHXPDsihcMwoV9FFrxosH4AArpJZrGUobV_N3YpHrHa8kWhziKoE2TXPGt51f95jpjGHzyZ8CLmIVTq9otYMWRM-Nx3EjMwzxt3lydNb1mjPU2rRoxnekqr0p0ICQ5FhS8AS35cK80FCcGLDXXwUNbQaIWay_c5K4qkTXBBNSauFEhAiTGM9TLyYwp6Rg9HxXUiQGhTLEaWXMHPR47TFePzCjwopcjskRA', u'width': 2560, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/116772665367999603858/photos">Lynneke Burris</a>'], u'height': 1440}, {u'photo_reference': u'CoQBdwAAACjOrdN5y1lm0l2Dd-ipKvhWH6VTFHjQR-qgUdGflgYYYakUVl8dQritPOgfyB4fOxG18PYoPub9pEbfo4rMgkoK0-FE0DHc5i0ET0LXPQIeBBAXvLYL6HgMLig97hdQgeZ8MLIn8kp8I5kt2vMyiL4SWiyFUigDJVwcImlUTCb8EhCymmsLqsKC5vs1KA_yXRcsGhTaSD6Vky7yxEAin5U6PtiL7vbtjw', u'width': 2676, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/105928811308006518314/photos">Minh T. Nguyen</a>'], u'height': 1518}, {u'photo_reference': u'CoQBdwAAABpISWBXFEZkwvPHgptCTlXZMYVe2ZOF42GJ8XmLK5dkfkUXGKMPvf4Max9IWYp5Yt-oiJD92O--zMbiIpJGpfL3q8wIthcizYtzGo5GkwgOoVymGIWM7qIx2oYtQ3RP6jGbHMnF4SPTtvNf-FgsZgHdP2f8j1PoI4QrBHd2GLn4EhCXpVRn21nd8dpxeGHoZx7oGhTEQ7axrvpeyYJqZM5W0OGlKrP54g', u'width': 2676, u'html_attributions': [u'<a href="https://maps.google.com/maps/contrib/105928811308006518314/photos">Minh T. Nguyen</a>'], u'height': 1518}], u'geometry': {u'location': {u'lat': Decimal('40.81378960000001'), u'lng': Decimal('-73.9569903')}, u'viewport': {u'northeast': {u'lat': Decimal('40.81401759999999'), u'lng': Decimal('-73.9566477')}, u'southwest': {u'lat': Decimal('40.81371360000001'), u'lng': Decimal('-73.9571045')}}}, u'adr_address': u'<span class="street-address">518 W 125th St</span>, <span class="locality">New York</span>, <span class="region">NY</span> <span class="postal-code">10027-3407</span>, <span class="country-name">USA</span>', u'place_id': u'ChIJNSr_TGr2wokR-5iK_fdDUnc', u'international_phone_number': u'+1 212-662-9727', u'vicinity': u'518 West 125th Street, New York', u'reviews': [{u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh6.googleusercontent.com/-dFsRuRhjqWg/AAAAAAAAAAI/AAAAAAAAl04/fjxGADs_emc/s128/photo.jpg', u'language': u'en', u'text': u"My kids prefer going to this library instead of the park. Most of my daughter's classmates spend time here also. The staff is beyond wonderful. I don't think I ever met a more helpful group of people in on setting before. My son (19 months) can't wait to jump out his stroller and run to the children's room. This is their place and I love it.", u'author_name': u'Apri Davidson', u'relative_time_description': u'3 months ago', u'author_url': u'https://www.google.com/maps/contrib/110214970640274670881/reviews', u'time': 1478962648}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-ljYtTOrysTA/AAAAAAAAAAI/AAAAAAAAF8o/JaR5xSu8-GQ/s128/photo.jpg', u'language': u'en', u'text': u'I attended this libtary as a child and my son has been going since he was 3 months old. The staff is helpful, kind and professional.', u'author_name': u'Diane Tinsley', u'relative_time_description': u'a month ago', u'author_url': u'https://www.google.com/maps/contrib/117824097805655135809/reviews', u'time': 1483102466}, {u'rating': 5, u'aspects': [{u'rating': 3, u'type': u'overall'}], u'profile_photo_url': u'//lh3.googleusercontent.com/-pvUqlVPoG-M/AAAAAAAAAAI/AAAAAAAAAYM/0SUXb6W_yAE/s128/photo.jpg', u'language': u'en', u'text': u"I live in the Bronx but I come to this library, the child librarian was so helpful with helping me with the appropriate books for my child grade level didn't get her name but she was African American lady ", u'author_name': u'Danielle Walker', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/105080706298766157647/reviews', u'time': 1447162847}, {u'rating': 4, u'aspects': [{u'rating': 2, u'type': u'overall'}], u'profile_photo_url': u'//lh4.googleusercontent.com/-uWPuqGRCH1s/AAAAAAAAAAI/AAAAAAAAAB8/pWMdzw4j0vo/s128/photo.jpg', u'language': u'en', u'text': u"My kids love it here Nd I'm so happy they never like to leave it's inviting and the staff is very very helpful Nd the books o so many great books to read Nd explore I love this place Nd also feel like a big kid when here......", u'author_name': u'Denise Henry', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/116397754152099496461/reviews', u'time': 1446303385}, {u'rating': 2, u'aspects': [{u'rating': 0, u'type': u'overall'}], u'profile_photo_url': u'//lh5.googleusercontent.com/-35fme8qBOsA/AAAAAAAAAAI/AAAAAAAAA2A/VULk1svJwHw/s128/photo.jpg', u'language': u'en', u'text': u'It\'s a decent library however it\'s very small and some of the rules are unreasonable. For example adults have to leave the children\'s area at 2 even if they\'re arnt any kids their. It\'s a small library and the adult and children area are basically combined so this makes no sense to me. It\'s often crowded and the most seats/space is in the "children\'s area" Smh. also the staff moves very slow and the security guard is extremely creepy and annoying. It is a nice comfortable space though', u'author_name': u'shannel stedford', u'relative_time_description': u'a year ago', u'author_url': u'https://www.google.com/maps/contrib/117557586124521535863/reviews', u'time': 1447704981}], u'formatted_phone_number': u'(212) 662-9727', u'scope': u'GOOGLE', u'url': u'https://maps.google.com/?cid=8598009370993400059', u'opening_hours': {u'periods': [{u'close': {u'day': 1, u'time': u'1900'}, u'open': {u'day': 1, u'time': u'1100'}}, {u'close': {u'day': 2, u'time': u'1900'}, u'open': {u'day': 2, u'time': u'1100'}}, {u'close': {u'day': 3, u'time': u'1900'}, u'open': {u'day': 3, u'time': u'1100'}}, {u'close': {u'day': 4, u'time': u'1900'}, u'open': {u'day': 4, u'time': u'1100'}}, {u'close': {u'day': 5, u'time': u'1700'}, u'open': {u'day': 5, u'time': u'1000'}}, {u'close': {u'day': 6, u'time': u'1700'}, u'open': {u'day': 6, u'time': u'1000'}}], u'weekday_text': [u'Monday: 11:00 AM \u2013 7:00 PM', u'Tuesday: 11:00 AM \u2013 7:00 PM', u'Wednesday: 11:00 AM \u2013 7:00 PM', u'Thursday: 11:00 AM \u2013 7:00 PM', u'Friday: 10:00 AM \u2013 5:00 PM', u'Saturday: 10:00 AM \u2013 5:00 PM', u'Sunday: Closed'], u'open_now': False, u'exceptional_date': []}, u'address_components': [{u'long_name': u'518', u'types': [u'street_number'], u'short_name': u'518'}, {u'long_name': u'West 125th Street', u'types': [u'route'], u'short_name': u'W 125th St'}, {u'long_name': u'Harlem', u'types': [u'neighborhood', u'political'], u'short_name': u'Harlem'}, {u'long_name': u'Manhattan', u'types': [u'sublocality_level_1', u'sublocality', u'political'], u'short_name': u'Manhattan'}, {u'long_name': u'New York', u'types': [u'locality', u'political'], u'short_name': u'New York'}, {u'long_name': u'New York County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'New York County'}, {u'long_name': u'New York', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'NY'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'10027', u'types': [u'postal_code'], u'short_name': u'10027'}, {u'long_name': u'3407', u'types': [u'postal_code_suffix'], u'short_name': u'3407'}], u'formatted_address': u'518 W 125th St, New York, NY 10027, USA', u'id': u'6a29af02fd2283d618e3a4f0e1fc8eec57ac6176', u'types': [u'library', u'point_of_interest', u'establishment'], u'icon': u'https://maps.gstatic.com/mapfiles/place_api/icons/school-71.png'}
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-27-d22af5192298> in <module>()
66 # Delete the place that you've just added.
67 google_places.delete_place(added_place.place_id)
---> 68 except GooglePlacesError as error_detail:
69 # You've passed in parameter values that the Places API doesn't like..
70 print error_detail
NameError: name 'GooglePlacesError' is not defined
In [ ]:
# You may prefer to use the text_search API, instead.
query_result = google_places.nearby_search(
location='New York, United States', keyword='New York',
radius=20000)
In [50]:
!pip install geopy
Requirement already satisfied (use --upgrade to upgrade): geopy in /Users/zoesh/anaconda/lib/python2.7/site-packages
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
In [57]:
from geopy.geocoders import Nominatim
geolocator = Nominatim()
location = geolocator.geocode("new york")
print(location.address)
print((location.latitude, location.longitude))
print(location.raw)
print location.raw['boundingbox']
NYC, New York, United States of America
(40.7305991, -73.9865811)
{u'display_name': u'NYC, New York, United States of America', u'importance': 0.98292818999099, u'place_id': u'201634220', u'lon': u'-73.9865811', u'lat': u'40.7305991', u'osm_type': u'relation', u'licence': u'Data \xa9 OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright', u'osm_id': u'175905', u'boundingbox': [u'40.477399', u'40.9161785', u'-74.2590899', u'-73.7001808'], u'type': u'city', u'class': u'place', u'icon': u'https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png'}
[u'40.477399', u'40.9161785', u'-74.2590899', u'-73.7001808']
In [62]:
###position map api with bounds
from geopy.geocoders import Nominatim
geolocator = Nominatim()
location = geolocator.geocode("new york")
x1,x2,y1,y2 = location.raw['boundingbox']
base_url = 'http://www.pointsonamap.com/search?bounds=%s,%s,%s,%s' %(str(x1),str(y1),str(x2),str(y2))
# http://www.pointsonamap.com/search?bounds=41.781808,-88.417428,42.204361,-87.046883&query=undefined%20Request%20Method:GET
In [63]:
base_url = 'http://www.pointsonamap.com/search?bounds=%s,%s,%s,%s' %(str(x1),str(y1),str(x2),str(y2))
In [65]:
r = requests.get(base_url)
In [85]:
import json
data = json.loads(r.text)
In [91]:
import pprint
for i in data['features']:
i['city'] = unicode(df.city[0] + ', ' + df.state[0])
In [73]:
import pandas as pd
/Users/zoesh/anaconda/lib/python2.7/site-packages/pandas/computation/__init__.py:19: UserWarning: The installed version of numexpr 2.4.4 is not supported in pandas and will be not be used
UserWarning)
In [75]:
df = pd.read_csv('/Users/zoesh/Desktop/travel_with_friends/top_1000_us_cities.csv')
In [99]:
df['search_city'] = df.city + ', ' + df.state
In [105]:
a = city_poi(city)
In [110]:
name = a[0]['properties']['title']
In [151]:
def time_spent_txt(poi):
poi_name = poi['properties']['title']
poi_name = poi_name.replace(' ', '+')
baseurl = 'https://www.google.com/search?q=%s' %(poi_name)
print baseurl
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
r = requests.get(baseurl,headers=headers)
s = BS(r.text, 'html.parser')
return s
try:
time_spent= s.find("div", attrs={"class": "_OKe"}).find('div',attrs={'class':'_B1k'}).find('b').text
return time_spent
except:
return None
In [152]:
time_spent = time_spent_txt(a[0])
https://www.google.com/search?q=Times+Square
In [156]:
#trip advisor!
from bs4 import BeautifulSoup
import json
import requests
import re
import time
user_agent = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3'
headers = { 'User-Agent' : user_agent }
ta_url = 'http://www.tripadvisor.ca'
base_url = 'http://www.tripadvisor.ca/Attractions-g155019-Activities-'
location_url = 'Toronto_Ontario.html'
def main():
activities = []
soup = dl_page_src(base_url + location_url)
# get the lazy loaded image list
image_list = get_image_list(soup)
# get last element in the pagenation (i.e.: total number of pages)
page_count = int(soup.select('.pagination a')[-1].text.strip())
for page_no in range(page_count):
# our formula to compute the next url to download:
# [page_no * 30]
# page 1: base_url + location_url
# page 2: base_url + 'oa' + [page_no * 30] + '-' + location_url
# etc ...
page_results = soup.select('#FILTERED_LIST .attraction_element')
# loop over all elements and extract the useful data
for result in page_results:
title = result.select('.property_title a')[0].text.strip()
rating_obj = result.select('.rate_no')
pattern = re.compile('\srate_no\sno(\d{2})"')
matches = pattern.search(str(rating_obj))
if matches:
print(matches.group(1))
rating = matches.group(1)
total_reviews = result.select('.rating .more a')[0].text.strip().replace(' reviews', '')
else:
rating = '0'
total_reviews = '0'
popularity = result.select('.popRanking')[0].text.strip()
review_url = ta_url + result.select('a.photo_link')[0]['href']
# get image url
lazy_load_obj = result.select('.photo_booking a img')
if lazy_load_obj[0].has_attr('id'):
lazy_load_id = lazy_load_obj[0]['id']
image_obj = [x['data'] for x in image_list if x['id'] == lazy_load_id]
image_url = image_obj[0]
else:
image_url = 'static/images/generic.jpg'
activities.append({
'title': title,
'rating': rating,
'reviews': total_reviews,
'popularity': popularity,
'review_url': review_url,
'image_url': image_url
})
# compute the url for the next page
next_page = base_url + 'oa' + str((page_no + 1) * 30) + '-' + location_url
time.sleep(15)
dl_page_src(next_page)
with open('tripadvisor.html', encoding='utf-8') as page_src:
source = page_src.read()
soup = BeautifulSoup(source, 'html.parser')
# get the lazy loaded image list
image_list = get_image_list(soup)
with open('activities.json', 'w', encoding='utf-8') as output:
output.write(json.dumps(activities, indent=4))
def dl_page_src(url):
print(url)
response = requests.get(url, headers=headers)
s = BS(response.text, 'html.parser')
return s
def get_image_list(soup):
# get all the script tags then get the one that contains the line
# 'var lazyImgs'
script_tags = soup.find_all('script')
pattern = re.compile('var\s*?lazyImgs\s*?=\s*?(\[.*?\]);', re.DOTALL)
for tag in script_tags:
matches = pattern.search(tag.text)
if matches:
image_list = json.loads(matches.group(1))
return image_list
In [157]:
base_url = 'http://www.tripadvisor.ca/Attractions-g155019-Activities-'
location_url = 'Toronto_Ontario.html'
activities = []
dl_page_src(base_url + location_url)
http://www.tripadvisor.ca/Attractions-g155019-Activities-Toronto_Ontario.html
Out[157]:
<!DOCTYPE html>\n\n<html xmlns:fb="http://www.facebook.com/2008/fbml">\n<head>\n<meta content="text/html; charset=unicode-escape" http-equiv="content-type"/>\n<link href="https://static.tacdn.com/favicon.ico" id="favicon" rel="icon" type="image/x-icon"/>\n<link color="#589442" href="https://static.tacdn.com/img2/icons/ta_square.svg" rel="mask-icon" sizes="any"/>\n<script type="text/javascript">\nwindow.onerror = function onErrorFunc(msg, url, line, colno, error) {\nif(!window.ta || !ta.has('ta.js_error_array.processed')) {\nif(typeof js_error_array == 'undefined') {\njs_error_array = [];\n}\nvar err = error;\njs_error_array[js_error_array.length] = {'msg': msg, 'error_script': url, 'line': line, 'column': colno, 'error': err, 'ready_state': document.readyState};\nreturn true;\n}\nelse {\nif(window.ta && ta.util && ta.util.error && ta.util.error.record) {\nta.util.error.record(error, 'error post load:: ' + msg, null, {'error_script': url, 'line': line, 'column': colno, 'ready_state': document.readyState});\n}\n}\n};\n</script>\n<script>(function(w){\nvar q={d:[],r:[],c:[],t:[],v:[]};\nvar r = w.require = function() {q.r.push(arguments);};\nr.config = function() {q.c.push(arguments);};\nr.defined = r.specified = function() {return false;};\nr.taConfig = function() {q.t.push(arguments);};\nr.taVer = function(v) {q.v.push(v);};\nr.isQ=true;\nw.getRequireJSQueue = function() {return q;};\n})(window);\n</script>\n<script data-rup="amdearly" type="text/javascript">(function(f){if(f&&f.requireCallLast){return}var a;var c;var h=false;function b(j){return typeof require==="function"&&require.defined&&require.defined(j)}var g=f.requireCallLast=function(k,m){a=null;var j=[].slice.call(arguments,2);if(b(k)){var l=require(k);l[m].apply(l,j)}else{if(b("trjs")){require(["trjs!"+k],function(n){n[m].apply(n,j)})}else{if(!h){c=+new Date();a=[].slice.call(arguments)}}}};var i=f.requireCallIfReady=function(j){b(j)&&g.apply(f,arguments)};var e=function(j,m,n,l){var k=i;if(n&&(n.type==="click"||n.type==="submit")){k=g;n.preventDefault&&n.preventDefault()}l.unshift(m);l.unshift(j);k.apply(f,l);return false};f.requireEvCall=function(m,l,k,j){m=m.match(/^((?:[^\\/]+\\/)*[^\\/\\.]+)\\.([^\\/]*)?$/);return e(m[0],m[1],l,[].slice.call(arguments,1))};f.widgetEvCall=function(m,l,k,j){return e("ta/prwidgets","call",l,[].slice.call(arguments))};f.placementEvCall=function(n,m,l,k,j){return e("ta/p13n/placements","evCall",l,[].slice.call(arguments))};function d(){h=true;if(a&&(+new Date()-c<5000)){g.apply(f,a)}}if(document.addEventListener){document.addEventListener("DOMContentLoaded",d)}else{if(f.addEventListener){f.addEventListener("load",d)}else{if(f.attachEvent){f.attachEvent("onload",d)}}}})(window);</script>\n<script type="text/javascript">\n</script>\n<meta content="no" http-equiv="imagetoolbar"/>\n<title>The Top 10 Things to Do in Toronto 2017 - TripAdvisor</title>\n<meta content="no-cache" http-equiv="pragma"/>\n<meta content="no-cache,must-revalidate" http-equiv="cache-control"/>\n<meta content="0" http-equiv="expires"/>\n<meta content="The Top 10 Things to Do in Toronto 2017 - TripAdvisor" property="og:title"/>\n<meta content="Book your tickets online for the top things to do in Toronto, Ontario on TripAdvisor: See 126,119 traveller reviews and photos of Toronto tourist attractions. Find what to do today, this weekend, or in February. We have reviews of the best places to see in Toronto. Visit top-rated & must-see attractions." property="og:description"/>\n<meta content="https://media-cdn.tripadvisor.com/media/photo-s/03/9b/30/44/toronto.jpg" property="og:image"/>\n<meta content="550" property="og:image:width"/>\n<meta content="331" property="og:image:height"/>\n<meta content="Toronto, Ontario, Things to do in Toronto, attraction, activity, things to do, fun, advice, attractions, attractions in Toronto, Ontario, activities in Toronto, Ontario, things to do in Toronto, Ontario, holiday, reviews, travel" name="keywords"/>\n<meta content="Book your tickets online for the top things to do in Toronto, Ontario on TripAdvisor: See 126,119 traveller reviews and photos of Toronto tourist attractions. Find what to do today, this weekend, or in February. We have reviews of the best places to see in Toronto. Visit top-rated & must-see attractions." name="description"/>\n<link href="https://www.tripadvisor.com/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="en" rel="alternate"/>\n<link href="https://www.tripadvisor.co.uk/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="en-GB" rel="alternate"/>\n<link href="https://www.tripadvisor.ca/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="en-CA" rel="alternate"/>\n<link href="https://fr.tripadvisor.ca/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="fr-CA" rel="alternate"/>\n<link href="https://www.tripadvisor.it/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="it" rel="alternate"/>\n<link href="https://www.tripadvisor.es/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="es" rel="alternate"/>\n<link href="https://www.tripadvisor.de/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="de" rel="alternate"/>\n<link href="https://www.tripadvisor.fr/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="fr" rel="alternate"/>\n<link href="https://www.tripadvisor.jp/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="ja" rel="alternate"/>\n<link href="https://cn.tripadvisor.com/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="zh-Hans" rel="alternate"/>\n<link href="https://www.tripadvisor.in/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="en-IN" rel="alternate"/>\n<link href="https://www.tripadvisor.se/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="sv" rel="alternate"/>\n<link href="https://www.tripadvisor.nl/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="nl" rel="alternate"/>\n<link href="https://www.tripadvisor.com.br/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="pt" rel="alternate"/>\n<link href="https://www.tripadvisor.com.tr/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="tr" rel="alternate"/>\n<link href="https://www.tripadvisor.dk/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="da" rel="alternate"/>\n<link href="https://www.tripadvisor.com.mx/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="es-MX" rel="alternate"/>\n<link href="https://www.tripadvisor.ie/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="en-IE" rel="alternate"/>\n<link href="https://ar.tripadvisor.com/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="ar" rel="alternate"/>\n<link href="https://www.tripadvisor.com.eg/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="ar-EG" rel="alternate"/>\n<link href="https://www.tripadvisor.cz/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="cs" rel="alternate"/>\n<link href="https://www.tripadvisor.at/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="de-AT" rel="alternate"/>\n<link href="https://www.tripadvisor.com.gr/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="el" rel="alternate"/>\n<link href="https://www.tripadvisor.com.au/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="en-AU" rel="alternate"/>\n<link href="https://www.tripadvisor.com.my/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="en-MY" rel="alternate"/>\n<link href="https://www.tripadvisor.co.nz/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="en-NZ" rel="alternate"/>\n<link href="https://www.tripadvisor.com.ph/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="en-PH" rel="alternate"/>\n<link href="https://www.tripadvisor.com.sg/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="en-SG" rel="alternate"/>\n<link href="https://www.tripadvisor.co.za/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="en-ZA" rel="alternate"/>\n<link href="https://www.tripadvisor.com.ar/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="es-AR" rel="alternate"/>\n<link href="https://www.tripadvisor.cl/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="es-CL" rel="alternate"/>\n<link href="https://www.tripadvisor.co/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="es-CO" rel="alternate"/>\n<link href="https://www.tripadvisor.com.pe/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="es-PE" rel="alternate"/>\n<link href="https://www.tripadvisor.com.ve/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="es-VE" rel="alternate"/>\n<link href="https://www.tripadvisor.fi/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="fi" rel="alternate"/>\n<link href="https://www.tripadvisor.co.hu/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="hu" rel="alternate"/>\n<link href="https://www.tripadvisor.co.id/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="id" rel="alternate"/>\n<link href="https://www.tripadvisor.co.il/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="he" rel="alternate"/>\n<link href="https://www.tripadvisor.co.kr/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="ko" rel="alternate"/>\n<link href="https://no.tripadvisor.com/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="nb" rel="alternate"/>\n<link href="https://pl.tripadvisor.com/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="pl" rel="alternate"/>\n<link href="https://www.tripadvisor.pt/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="pt-PT" rel="alternate"/>\n<link href="https://www.tripadvisor.ru/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="ru" rel="alternate"/>\n<link href="https://www.tripadvisor.sk/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="sk" rel="alternate"/>\n<link href="https://www.tripadvisor.rs/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="sr" rel="alternate"/>\n<link href="https://th.tripadvisor.com/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="th" rel="alternate"/>\n<link href="https://www.tripadvisor.com.vn/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="vi" rel="alternate"/>\n<link href="https://www.tripadvisor.com.tw/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="zh-Hant" rel="alternate"/>\n<link href="https://www.tripadvisor.ch/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="de-CH" rel="alternate"/>\n<link href="https://fr.tripadvisor.ch/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="fr-CH" rel="alternate"/>\n<link href="https://it.tripadvisor.ch/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="it-CH" rel="alternate"/>\n<link href="https://en.tripadvisor.com.hk/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="en-HK" rel="alternate"/>\n<link href="https://fr.tripadvisor.be/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="fr-BE" rel="alternate"/>\n<link href="https://www.tripadvisor.be/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="nl-BE" rel="alternate"/>\n<link href="https://www.tripadvisor.com.hk/Attractions-g155019-Activities-Toronto_Ontario.html" hreflang="zh-hk" rel="alternate"/>\n<link href="ios-app://284876795/tripadvisor/www.tripadvisor.ca/Attractions-g155019-Activities-m19963-Toronto_Ontario.html" rel="alternate"/>\n<meta content="TripAdvisor" property="al:ios:app_name">\n<meta content="284876795" property="al:ios:app_store_id">\n<meta content="284876795" name="twitter:app:id:ipad" property="twitter:app:id:ipad">\n<meta content="284876795" name="twitter:app:id:iphone" property="twitter:app:id:iphone">\n<meta content="tripadvisor://www.tripadvisor.ca/Attractions-g155019-Activities-m33762-Toronto_Ontario.html" property="al:ios:url">\n<meta content="tripadvisor://www.tripadvisor.ca/Attractions-g155019-Activities-m33762-Toronto_Ontario.html" name="twitter:app:url:ipad" property="twitter:app:url:ipad">\n<meta content="tripadvisor://www.tripadvisor.ca/Attractions-g155019-Activities-m33762-Toronto_Ontario.html" name="twitter:app:url:iphone" property="twitter:app:url:iphone">\n<script type="text/javascript">\n(function () {\nif (typeof console == "undefined") console = {};\nvar funcs = ["log", "error", "warn"];\nfor (var i = 0; i < funcs.length; i++) {\nif (console[funcs[i]] == undefined) {\nconsole[funcs[i]] = function () {};\n}\n}\n})();\nvar pageInit = new Date();\nvar hideOnLoad = new Array();\nvar WINDOW_EVENT_OBJ = window.Event;\nvar IS_DEBUG = false;\nvar CDNHOST = "https://static.tacdn.com";\nvar cdnHost = CDNHOST;\nvar MEDIA_HTTP_BASE = "https://media-cdn.tripadvisor.com/media/";\nvar POINT_OF_SALE = "en_CA";\n</script>\n<script crossorigin="anonymous" data-rup="jquery" src="https://static.tacdn.com/js3/jquery-c-v24215804092a.js" type="text/javascript"></script>\n<script crossorigin="anonymous" data-rup="mootools" src="https://static.tacdn.com/js3/mootools-c-v23900594016a.js" type="text/javascript"></script>\n<script type="text/javascript">\nvar jsGlobalMonths = new Array("January","February","March","April","May","June","July","August","September","October","November","December");\nvar jsGlobalMonthsAbbrev = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");\nvar jsGlobalDayMonthYearAbbrev = new Array("{0} Jan {1}","{0} Feb {1}","{0} Mar {1}","{0} Apr {1}","{0} May {1}","{0} Jun {1}","{0} Jul {1}","{0} Aug {1}","{0} Sep {1}","{0} Oct {1}","{0} Nov {1}","{0} Dec {1}");\nvar jsGlobalDaysAbbrev = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");\nvar jsGlobalDaysShort = new Array("S","M","T","W","T","F","S");\nvar jsGlobalDaysFull = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");\nvar sInvalidDates = "The dates you entered are invalid. Please correct your dates and search again.";\nvar sSelectDeparture = "Please select a departure airport.";\nvar DATE_FORMAT_MMM_YYYY = "MMM YYYY";\nvar DATE_PICKER_CLASSIC_FORMAT = "dd/MM/yyyy";\nvar DATE_PICKER_SHORT_FORMAT = "dd/MM";\nvar DATE_PICKER_META_FORMAT = "EEE, d MMM";\nvar DATE_PICKER_DAY_AND_SLASHES_FORMAT = "EEE dd/MM/yyyy";\nvar jsGlobalDayOffset = 1 - 1;\nvar DATE_FORMAT = { pattern: /(\\d{1,2})\\/(\\d{1,2})\\/(\\d{2,4})/, month: 2, date: 1, year: 3 };\nvar formatDate = function(d, m, y) {return [d,++m,y].join("/");};\nvar cal_month_header = function(month, year) {return cal_months[month]+" "+year;};\n</script>\n<script type="text/javascript">\nvar currencySymbol = new Array();\nvar cur_prefix = false;\nvar cur_postfix = true;\nvar curs=[,'CHF','SEK','TRY','DKK','NOK','PLN','AED','AFN','ALL','AMD','ANG','AOA','ARS','AWG','AZN','BAM','BBD','BDT','BGN','BHD','BIF','BMD','BND','BOB','BSD','BTN','BWP','BYR','BZD','CDF','CLP','COP','CRC','CVE','CZK','DJF','DOP','DZD','EGP','ERN','ETB','FJD','FKP','GEL','GHS','GIP','GMD','GNF','GTQ','GYD','HNL','HRK','HTG','HUF','IDR','IQD','IRR','ISK','JMD','JOD','KES','KGS','KHR','KMF','KWD','KYD','KZT','LAK','LBP','LKR','LRD','LSL','LYD','MAD','MDL','MGA','MKD','MNT','MOP','MRO','MUR','MVR','MWK','MYR','MZN','NAD','NGN','NIO','NPR','OMR','PAB','PEN','PGK','PHP','PKR','PYG','QAR','RON','RSD','RUB','RWF','SAR','SBD','SCR','SGD','SHP','SLL','SOS','SRD','STD','SZL','THB','TJS','TMT','TND','TOP','TTD','TZS','UAH','UGX','UYU','UZS','VEF','VUV','WST','YER','ZAR','CUP','KPW','MMK','SDG','SYP'];\nfor(var i=1;i<curs.length;i++){currencySymbol[curs[i]]=new Array(curs[i],false);}\nvar curs = [,'USD','GBP','EUR','CAD','AUD','JPY','RMB','INR','BRL','MXN','TWD','HKD','ILS','KRW','NZD','VND','XAF','XCD','XOF','XPF']\nvar curs2 = [,'US$','\xa3','\u20ac','$','A$','JP\xa5','CN\xa5','\u20b9','R$','MX$','NT$','HK$','\u20aa','\u20a9','NZ$','\u20ab','FCFA','EC$','CFA','CFPF']\nfor(var i=1;i<curs.length;i++){currencySymbol[curs[i]]=new Array(curs2[i],false);}\nvar groupingSize = 3;\nvar groupingSeparator = ",";\nvar JS_location_not_found = "Your location not found.";\nvar JS_click_to_expand = "Click to Expand";\nvar JS_choose_valid_city = "Please choose a valid city from the list.";\nvar JS_select_a_cruise_line = "Please select a cruise line.";\nvar JS_loading = "Loading ...";\nvar JS_Ajax_failed="We're sorry, but there was a problem retrieving the content. Please check back in a few minutes.";\nvar JS_maintenance="Our site is currently undergoing maintenance.We\\'re sorry for the inconvenience...we\\'ll be back soon.";\nvar JS_Stop_search = "stop search";\nvar JS_Resume_search = "Resume search";\nvar JS_Thankyou = "Thank you";\nvar JS_DateFormat = "dd/mm/yyyy";\nvar JS_review_lost = "Your review will be lost.";\nvar JS_coppa_sorry = "We're sorry....";\nvar JS_coppa_privacy = "Based on information you submitted, your TripAdvisor account does not meet the requirements of our <a href='/pages/privacy.html'>Privacy Policy</a>.";\nvar JS_coppa_deleted = "Your account has been deleted.";\nvar JS_close = "Close";\nvar JS_close_image = "https://static.tacdn.com/img2/buttons/closeButton.gif";\nvar JS_CHANGES_SAVED = "Changes saved";\nvar JS_community_on = "Community has been enabled";\nvar lang_Close = JS_close;\nvar JS_UpdatingYourResults = "Updating your results …";\nvar JS_OwnerPhoto_heading = "Thank you for submitting your request to TripAdvisor. ";\nvar JS_OwnerPhoto_subheading = "We process most listings and changes within 5 business days. ";\nvar JS_OwnerPhoto_more = "Add more photos to your listing";\nvar JS_OwnerPhoto_return = "Return to your Owner\u2019s Centre";\nvar JS_NMN_Timeout_title = "Do you want to keep trying?";\nvar JS_NMN_Timeout_msg = "It is taking longer than expected to get your location.";\nvar JS_NMN_Error_title = "Location error";\nvar JS_NMN_Error_msg = "There has been an error in trying to determine your location";\nvar JS_KeepTrying = "Keep Trying";\nvar JS_TryAgain = "Try Again";\nvar js_0001 = "Please select at least one vendor from the list."; var js_0002 = "Please choose dates in the future."; var js_0003 = "Please choose a check-out date that is at least one day later than your check-in date."; var js_0004 = "Please choose dates that are less than 330 days away."; var js_0005 = "Searching for deals ... this may take a few moments"; var js_0006 = "Your selections have not changed."; var js_0010 = "Please click again to open each window or adjust browser settings to disable popup blockers."; var js_0011 = "Update"; var js_0012 = "Show next offer"; var js_0013 = "Please click the \\"Check Rates!\\" button above to open each window."; var js_0014 = 'Opens one window for each offer. Please disable pop-up blockers.';\nvar js_0015 = 'Compare prices';\nvar js_invalid_dates_text = "The dates entered are invalid. Please correct your dates and search again."; var js_invalid_dates_text_new = "Please enter dates to check rates"; var js_invalid_dates_text_new2 = "Please enter dates to show prices";\nvar qcErrorImage = '<center><img src="https://static.tacdn.com/img/action_required_blinking.gif" /></center>';\nvar selectedHotelName = ""; var cr_loc_vend = 'https://static.tacdn.com/img2/checkrates/cr.gif';\nvar cr_loc_vend_ch = 'https://static.tacdn.com/img2/checkrates/cr_check.gif';\nvar cr_loc_logo = 'https://static.tacdn.com/img2/checkrates/logo.gif';\nvar cd_loc_vend = 'https://static.tacdn.com/img2/checkrates/cd.png';\nvar cd_loc_vend_ch = 'https://static.tacdn.com/img2/checkrates/cd_check.png';\nvar JS_Any_Date = "Any Date";\nvar JS_Update_List = "Update List";\nvar sNexusTitleMissing = "The title must be populated";\nvar JS_Challenge="Challenge";\nvar JS_TIQ_Level="Level";\nvar JS_TIQ="Travel IQ";\nvar JS_TIQ_Pts="pts";\nvar RATING_STRINGS = [\n"Click to rate",\n"Terrible",\n"Poor",\n"Average",\n"Very Good",\n"Excellent"\n];\nvar overlayLightbox = false;\nif("" != "")\n{\noverlayLightbox = true;\n}\nvar isTakeOver = false;\nvar overlayOptions = "";\nvar overlayBackupLoc = "";\nvar gmapDomain = "maps.google.com";\nvar mapChannel = "ta.desktop";\nvar bingMapsLang = "en".toLowerCase();\nvar bingMapsCountry = "CA".toLowerCase();\nvar bingMapsBaseUrl = "http://www.bing.com/maps/default.aspx?cc=ca&";\nvar googleMapsBaseUrl = "http://maps.google.ca/?";\nvar yandexMapsBaseUrl = "http://maps.yandex.com";\nvar serverPool = "A";\nvar reg_overhaul = true;\nvar posLocale = "en_CA";\nvar cssPhotoViewerAsset = "https://static.tacdn.com/css2/photos_with_inline_review-v21296058483a.css";\nvar cssAlbumViewerExtendedAsset = "https://static.tacdn.com/css2/media_albums_extended-v21706586342a.css";\nvar jsPhotoViewerAsset = 'https://static.tacdn.com/js3/src/ta/photos/Viewer-v22467600457a.js';\nvar jsAlbumViewerAsset = ["https://static.tacdn.com/js3/album_viewer-c-v22839500983a.js"];\nvar jsAlbumViewerExtendedAsset = ["https://static.tacdn.com/js3/media_albums_extended-c-v23709016736a.js"];\nvar cssInlinePhotosTabAsset = "https://static.tacdn.com/css2/photo_albums_stacked-v21437723925a.css";\nvar cssPhotoLightboxAsset = "https://static.tacdn.com/css2/photo_albums-v2905000581a.css";\nvar jsDesktopBackboneAsset = ["https://static.tacdn.com/js3/desktop_modules_modbone-c-v23429518784a.js"];\nvar jsPhotoViewerTALSOAsset = 'https://static.tacdn.com/js3/src/TALSO-v2647278423a.js';\nvar jsJWPlayerHelperAsset = 'https://static.tacdn.com/js3/src/ta/media/player/TA_JWPlayer-v2230132241a.js';\nvar g_jsIapVote = ["https://static.tacdn.com/js3/inappropriate_vote_dlg-c-v23814012882a.js"];\n</script>\n<script type="text/javascript">\nvar VERSION_MAP = {\n"ta-maps.js": "https://static.tacdn.com/js3/ta-maps-gmaps3-c-v22169458808a.js"\n,\n"ta-widgets-typeahead.js": "https://static.tacdn.com/js3/ta-widgets-typeahead-c-v23749793679a.js"\n,\n"ta-media.js": "https://static.tacdn.com/js3/ta-media-c-v21043782620a.js"\n,\n"ta-overlays.js": "https://static.tacdn.com/js3/ta-overlays-c-v21878070294a.js"\n,\n"ta-registration-RegOverlay.js": "https://static.tacdn.com/js3/ta-registration-RegOverlay-c-v22813861790a.js"\n,\n"ta-mapsv2.js": "https://static.tacdn.com/js3/ta-mapsv2-gmaps3-c-v233105953a.js"\n};\n</script>\n<script type="text/javascript">\nvar cookieDomain = ".tripadvisor.ca";\nvar modelLocaleCountry = "CA";\nvar ipCountryId = "191";\nvar pageServlet = "Attractions";\nvar crPageServlet = "Attractions";\nvar userLoggedIn = false;\n</script>\n<script type="text/javascript">\nvar migrationMember = false;\nvar savesEnable = false;\nvar flagsUrl = '/Attractions-g155019-Activities-Toronto_Ontario.html';\nvar noPopClass = "no_cpu";\nvar flagsSettings = [\n];\nvar isIPad = false;\nvar isTabletOnFullSite = false;\nvar tabletOnFullSite = false;\nvar lang_Close = "Close";\nvar isSmartdealBlueChevron = false;\nvar img_loop = "https://static.tacdn.com/img2/generic/site/loop.gif";\nvar communityEnabled = true\nvar footerFlagFormat = "";\nvar modelLocId = "155019";\nvar modelGeoId = "155019";\nvar gClient = 'gme-tripadvisorinc';\nvar gKey = '';\nvar gLang = '&language=en_CA';\nvar mapsJs = 'https://static.tacdn.com/js3/ta-maps-gmaps3-c-v22169458808a.js';\nvar mapsJsLite = 'https://static.tacdn.com/js3/lib/TAMap-v22716202300a.js';\nvar memoverlayCSS = 'https://static.tacdn.com/css2/pages/memberoverlay-v2735825778a.css';\nvar flagsFlyoutCSS = 'https://static.tacdn.com/css2/overlays/flags/flags_flyout-v21749820631a.css';\nvar globalCurrencyPickerCSS = 'https://static.tacdn.com/css2/overlays/global_currency_picker-v249165570a.css';\nvar g_emailHotelCSS = 'https://static.tacdn.com/css2/t4b/emailhotel-v22741496419a.css';\nvar g_emailHotelJs = ["https://static.tacdn.com/js3/t4b_emailhotel-c-v21829740252a.js"];\nvar passportStampsCSS = 'https://static.tacdn.com/css2/modules/passport_stamps-v21996473260a.css';\nvar autocompleteCss = "https://static.tacdn.com/css2/modules/autocomplete-v22296357173a.css";\nvar globalTypeAheadCss = "https://static.tacdn.com/css2/global_typeahead-v21130020621a.css";\nvar globalTypeAheadFontCss = "https://static.tacdn.com/css2/proxima_nova-v21536367270a.css";\nvar compareHotelCSS = 'https://static.tacdn.com/css2/pages/compareHotel-v21462619566a.css';\nvar wiFriHasMember = false ;\nvar JS_SECURITY_TOKEN = "TNI1625!AGLdSJHTV5TjkpL10Y2y7WGL8nHzdHrhpfuEsF26AIAzp484w0qGeISuRh+atNsSolQzpIfHC+22eyORJtIEj1a+RdKo4WWK+sJHyz3p0HY38lCXk+HEKMH/MA7as6rnnSM1QPcbQfRtPkoV0CY5OrMKfbbmmHUAbsxhq2aUGV3d";\nvar addOverlayCloseClass = "";\nvar isOverlayServlet = "";\nvar IS_OVERLAY_DEBUG = "false";\n</script>\n<script crossorigin="anonymous" data-rup="tripadvisor" src="https://static.tacdn.com/js3/tripadvisor-c-v21342705805a.js" type="text/javascript"></script>\n<script type="text/javascript">var taSecureToken = "TNI1625!AGLdSJHTV5TjkpL10Y2y7WGL8nHzdHrhpfuEsF26AIAzp484w0qGeISuRh+atNsSolQzpIfHC+22eyORJtIEj1a+RdKo4WWK+sJHyz3p0HY38lCXk+HEKMH/MA7as6rnnSM1QPcbQfRtPkoV0CY5OrMKfbbmmHUAbsxhq2aUGV3d";</script>\n<script type="text/javascript">\nif(window.ta && ta.store) {\nta.store('photo.viewer.localization.videoError', 'We\\'re sorry, video player could not load'); }\n</script>\n<script type="text/javascript">\nvar taEarlyRoyBattyStatus = 0;\n(function(){\nvar taSecureToken = "TNI1625!AGLdSJHTV5TjkpL10Y2y7WGL8nHzdHrhpfuEsF26AIAzp484w0qGeISuRh+atNsSolQzpIfHC+22eyORJtIEj1a+RdKo4WWK+sJHyz3p0HY38lCXk+HEKMH/MA7as6rnnSM1QPcbQfRtPkoV0CY5OrMKfbbmmHUAbsxhq2aUGV3d";\nvar cookieDomain = ".tripadvisor.ca";\ntry {\nif (taSecureToken && navigator.userAgent.indexOf('MSIE 10.0')<0) {\nvar val = taSecureToken+",1";\nval = encodeURIComponent(val);\nif (cookieDomain) {\nval += "; domain=" + cookieDomain;\n}\ndocument.cookie = "roybatty="+val+"; path=/";\nvar url="/CookiePingback?early=true";\nvar xhr = null;\ntry {\nxhr = new XMLHttpRequest();\n} catch (e1) {\ntry {\nxhr = new ActiveXObject('MSXML2.XMLHTTP');\n} catch (e2) {\ntry {\nxhr = new ActiveXObject('Microsoft.XMLHTTP');\n} catch (e3) {\n}\n}\n}\nif (xhr != null) {\nvar seth = function(name, val) {\ntry {xhr.setRequestHeader(name, val)}\ncatch(e){}\n};\nxhr.open("POST", url, true);\nseth('Content-type', 'application/x-www-form-urlencoded; charset=utf-8');\nseth('X-Requested-With', 'XMLHttpRequest');\nseth('Accept', 'text/javascript, text/html, application/xml, text/xml, */*');\nxhr.send('');\ntaEarlyRoyBattyStatus = 2;\n}\n}\n} catch(err) {\n}\n})();\n</script>\n<script crossorigin="anonymous" data-rup="ta-attractions-narrow" src="https://static.tacdn.com/js3/ta-attractions-narrow-c-v21566729956a.js" type="text/javascript"></script>\n<script type="text/javascript">\nvar geoParam = "&geo=155019";\n</script>\n<link data-rup="attraction_overview_narrow" href="https://static.tacdn.com/css2/attraction_overview_narrow-en_CA-v2658502520a.css" media="screen, print" rel="stylesheet" type="text/css"/>\n<!--[if IE 6]>\n <link rel="stylesheet" type="text/css" media="screen, print" href="https://static.tacdn.com/css2/winIE6-v22820092551a.css" />\n <![endif]-->\n<!--[if IE 7]>\n <link rel="stylesheet" type="text/css" media="screen, print" href="https://static.tacdn.com/css2/winIE7-v22702072199a.css" />\n <![endif]-->\n<style type="text/css"><!--\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #hotels_lf_header { position: relative; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_tag_header_wrap { margin: 0; padding: 0; border: none; overflow: hidden; -webkit-font-smoothing: antialiased; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_tag_header_wrap.p13n_see_through { background: transparent; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_tag_header { min-width: 1024px; max-width: 1132px; margin: 0 auto; padding: 0 18px 0; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .restaurants_list #p13n_tag_header { max-width: 100%; padding: 0 0 30px;}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .restaurants_list #p13n_tag_header #HEADING { top: 12px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .restaurants_list .breadCrumbBackground ,\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .restaurants_list #p13n_welcome_message\n{ max-width: 1132px; overflow: visible; margin: 0 auto; padding: 0 18px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .restaurants_list #p13n_welcome_message .mapCTA { top: 5px; right: 0; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list #p13n_tag_header_wrap .breadCrumbBackground.shadow #BREADCRUMBS a,\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .restaurants_list #p13n_tag_header_wrap .breadCrumbBackground.shadow #BREADCRUMBS a {\ncolor: #FFF;\ntext-shadow: 0 1px 2px rgba(0,0,0,.4);\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list #p13n_tag_header_wrap .breadCrumbBackground.shadow #BREADCRUMBS li,\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .restaurants_list #p13n_tag_header_wrap .breadCrumbBackground.shadow #BREADCRUMBS li {\ncolor: #ccc;\ntext-shadow: 0 1px 2px rgba(0,0,0,.4);\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .restaurants_list .floating_map_icon {\nposition: relative;\nfloat: right;\nbackground-color: transparent;\ndisplay: table-row;\ncursor: pointer;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list {\nposition: relative;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list #BIG_MAP_WRAPPER {\nbackground-color: #444;\nbottom: 1px;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list #p13n_tag_header {\nwidth: 100%;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list #p13n_welcome_message {\nmargin: 15px auto 12px;\noverflow: visible;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list #BIG_MAP_WRAPPER #BIG_MAP_IMG {\nopacity: 0.2;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list #p13n_tag_header_wrap {\nbackground-color: transparent;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list .mapCTA:hover {\ntext-decoration: underline;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list .mapCTA {\nposition: absolute;\nwidth: 120px;\nheight: 62px;\ntop: -8px;\nright: 20px;\ncursor: pointer;\nbox-shadow: 2px 2px 0 0 rgba(0,0,0,.25);\nborder-radius: 4px;\nborder: 2px solid white;\ntext-align: center;\ncolor: #267ca6;\nfont-weight: bold;\nfont-size: 13px;\nline-height: 22px;\ndisplay: table-cell;\nbackground: #fff url('/img2/maps/map_200x40.jpg') no-repeat -38px 0;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list .mapCTA:before {\ncontent: '';\nheight: 40px;\nwidth: 118px;\nmargin: 0 1px;\nposition: relative;\ndisplay: block;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list .floating_map_icon {\nposition: relative;\nfloat: right;\nbackground-color: transparent;\ndisplay: block;\ncursor: pointer;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list #p13n_welcome_message #HEADING.p13n_geo_hotels {\nwhite-space: nowrap;\noverflow: visible;\nmax-width: 750px;\nfloat: left;\n}\n.attractions_lists_redesign_maps_above_filters DIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list #p13n_welcome_message #HEADING.p13n_geo_hotels {\ncolor: #2c2c2c;\n}\n.attractions_lists_redesign_maps_above_filters DIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list #p13n_tag_header_wrap .breadCrumbBackground.shadow #BREADCRUMBS li {\ncolor: #656565;\ntext-shadow: none;\n}\n.attractions_lists_redesign_maps_above_filters DIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list .breadCrumbBackground.shadow .breadcrumb_link {\ncolor: #069;\n}\n.attractions_lists_redesign_maps_above_filters DIV.ppr_rup.ppr_priv_hotels_redesign_header .attractions_list #p13n_tag_header_wrap .breadCrumbBackground.shadow #BREADCRUMBS a {\ncolor: #069;\ntext-shadow: none;\n}\n.broad_geo_header DIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_welcome_message { margin: 0 0 7px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_tag_header_wrap .breadCrumbBackground.shadow { background: none; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_tag_header_wrap .breadCrumbContainer { width: auto; left: auto; margin-left: 0; display: inline-block; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_tag_header_wrap.p13n_no_see_through .breadCrumbBackground.shadow .breadcrumb_item { color: #999; text-shadow: none; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_tag_header_wrap.p13n_no_see_through .breadCrumbBackground.shadow .breadcrumb_link { color: #4a4a4a; text-shadow: none; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_welcome_message { display: block; margin: 24px 0 0; padding: 0; overflow: hidden; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_welcome_message #HEADING.p13n_geo_hotels { display: block; position: relative; max-width: none; color: #2c2c2c; font-size: 34px; font-weight: bold; line-height: normal; text-shadow: none; text-align: left; }\n.restaurants_list DIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_welcome_message #HEADING.p13n_geo_hotels,\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .p13n_see_through #p13n_welcome_message #HEADING.p13n_geo_hotels { color: #fff; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_welcome_message #BIG_MAP_CTA { float: right; top: 0; height: 32px; line-height: 32px; padding: 0 10px 0 30px; background-position: 10px 50%; background-color: #2c2c2c; opacity: 0.85; }\n.rtl DIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_welcome_message #BIG_MAP_CTA { padding: 0 10px 0 30px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #BIG_MAP_WRAPPER { position: absolute; width: 100%; bottom: 30px; background-color: rgb(128,128,128); }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #BIG_MAP { width: 0; height: 100px!important; margin: 0 auto; border: none; position: relative; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #BIG_MAP_IMG { position: absolute; bottom: 0; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #BIG_MAP_OVERLAY { opacity: 0.50; filter: alpha(opacity=50); }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_big_photo_wrap { z-index: 0; top: 0; bottom: 30px; overflow: hidden; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #BIG_MAP_WRAPPER .floating_sponsor { top: 30px; bottom: auto; padding: 0; background: none; white-space: nowrap; min-width: 140px; max-width: 170px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #BIG_MAP_WRAPPER .floating_sponsor > span { color: #ccc; display: inline-block; padding-top: 2px; float: left; white-space: nowrap; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #BIG_MAP_WRAPPER .floating_sponsor .sponsor_icon { border: 2px solid white; float: right; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #BIG_MAP_WRAPPER.matchEateryDesign { background-color: #444; bottom: 60px;}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #BIG_MAP_WRAPPER.matchEateryDesign #BIG_MAP_IMG{ opacity: .2; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #hotels_lf_header.small_map #BIG_MAP_WRAPPER { bottom: 60px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #hotels_lf_header.small_map #BIG_MAP_WRAPPER .floating_sponsor { top: 40px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #hotels_lf_header.small_map #p13n_tag_header_wrap.hotels_lf_header_wrap #p13n_welcome_message { margin-bottom: 20px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #BIG_MAP_WRAPPER.matchEateryDesign ~ #p13n_tag_header_wrap { height: 152px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #hotels_lf_header.small_map #BIG_MAP_WRAPPER.matchEateryDesign ~ #p13n_tag_header_wrap.with_map_icon { height: 162px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_tag_header.hotels_top {\npadding-bottom: 0;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters .priceFinderHeader { right: auto; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters .unified-picker { width: 38%; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters #hotels_lf_header_bar { min-width: 816px; left: 0; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters .hotels_static_datepickers { margin-left: 175px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters .hotels_lf_header_wrap .roomsChange { margin-left: -18px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters #hotels_lf_header_bar_wrap #hotels_lf_header_bar_fill { width: 860px; }\n.lang_de DIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters .priceFinderHeader,\n.lang_es DIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters .priceFinderHeader,\n.lang_pt DIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters .priceFinderHeader,\n.lang_el DIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters .priceFinderHeader { width: 139px; }\n.lang_de DIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters .hotels_static_datepickers,\n.lang_es DIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters .hotels_static_datepickers,\n.lang_pt DIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters .hotels_static_datepickers,\n.lang_el DIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters .hotels_static_datepickers { margin-left: 128px; }\n.rtl DIV.ppr_rup.ppr_priv_hotels_redesign_header .hotels_above_filters #STATIC_DATE_PICKER_BAR .meta_date_wrapper { margin-right: 260px; }\n.h_map_side_by_side DIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_tag_header {\nmax-width: 100%;\n}\n.h_map_side_by_side DIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_welcome_message #HEADING.p13n_geo_hotels {\ndisplay: block;\n}\n.h_map_side_by_side DIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_tag_header {\nmax-width: inherit;\npadding: 0 0 60px;\n}\n.h_map_side_by_side DIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_tag_header > *:not(#hotels_lf_header_bar_wrap) {\npadding-left: 18px;\npadding-right: 18px;\n}\n.h_map_side_by_side DIV.ppr_rup.ppr_priv_hotels_redesign_header #hotels_lf_header_bar {\nmax-width: inherit;\n}\n.h_map_side_by_side DIV.ppr_rup.ppr_priv_hotels_redesign_header #hotels_lf_header_bar:before,\n.h_map_side_by_side DIV.ppr_rup.ppr_priv_hotels_redesign_header #hotels_lf_header_bar:after {\ndisplay: none;\n}\n.h_map_side_by_side DIV.ppr_rup.ppr_priv_hotels_redesign_header .priceFinderHeader {\nmin-width: 200px;\nmax-width: 300px;\nwidth: 24%;\nfloat: left;\nposition: static;\n}\n.h_map_side_by_side DIV.ppr_rup.ppr_priv_hotels_redesign_header .jfy_header_dates_holder {\nwidth: auto;\nfloat: none;\n}\n.h_map_side_by_side DIV.ppr_rup.ppr_priv_hotels_redesign_header #hotels_lf_header_bar_wrap.fixed {\nright: 0;\nbox-shadow: -1px 2px 6px 0 rgba(0,0,0,0.5);\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .withAddress #BIG_MAP { height: 120px!important; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #BIG_MAP_WRAPPER.matchEateryDesign.withAddress ~ #p13n_tag_header_wrap { height: 172px; }\nDIV.ppr_rup.ppr_priv_hotels_redesign_header #hotels_lf_header.small_map #BIG_MAP_WRAPPER.matchEateryDesign.withAddress ~ #p13n_tag_header_wrap.with_map_icon { height: 182px; }\n.r_map_position_ul_fake .restaurants_list DIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_welcome_message #HEADING.p13n_geo_hotels {\ncolor: #2C2C2C;\ndisplay: block;\nfont-size: 34px;\nfont-weight: bold;\nline-height: normal;\nmax-width: none;\nposition: relative;\ntext-align: left;\ntext-shadow: none;\n}\n.r_map_position_ul_fake .restaurants_list DIV.ppr_rup.ppr_priv_hotels_redesign_header #p13n_tag_header {\npadding: 10px;\n}\nDIV.ppr_rup.ppr_priv_hotels_redesign_header .travelAlert {\nmargin: 0 0 12px;\nfont-size: 14px;\nline-height: 18px;\n}\n--></style><style type="text/css"><!--\nDIV.prw_rup.prw_ibex_rooms_guests_picker .xthrough_bad {\nmax-width: 95px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .xthrough_bad .strike_price {\nmargin-bottom: 6px;\nfont-family: Arial, Tahoma, "Bitstream Vera Sans", sans-serif;\ncolor: #d80007;\nfont-size: 1.25em;\nposition: relative;\nword-break: break-all;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .xthrough_bad .strike_price:after {\nborder-top: 1px solid #d80007;\ncontent: "";\nposition: absolute;\nleft: 0;\nright: 0;\ntop: 55%;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .xthrough_bad .ui_icon {\nfont-size: 1.25em;\nmargin-left: 2px;\nposition: relative;\nbottom: 1px;\ncolor: #777777;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .unified-picker {\nwidth: 48%;\nheight: 34px;\nline-height: 34px;\ndisplay: inline-block;\nposition: relative;\ncursor: pointer;\nmargin: 10px 0 0 0;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .unified-picker.hidden {\ndisplay: none;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .unified-picker .picker-inner {\nborder: 1px solid #c8c8c8;\nborder-radius: 3px;\nposition: absolute;\nleft: 0;\nright: 0;\ntop: 0;\nbottom: 0;\npadding: 0 5px 0 32px;\nbox-shadow: inset 0 7px 12px -7px #c8c8c8;\nbackground-color: white;\ntext-align: left;\nfont-size: 14px;\n-webkit-font-smoothing: antialiased;\noverflow: hidden;\nwhite-space: nowrap;\n-webkit-transition: border-color 200ms, background-color 200ms;\ntransition: border-color 200ms, background-color 200ms;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .unified-picker:nth-child(2) {\nmargin-right: 4%;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .unified-picker.age-picker {\nwidth: 22%;\nmargin: 5px 4% 5px 0;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .unified-picker.age-picker:nth-child(4n+5) {\nmargin-right: 0;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .focused .picker-inner {\nborder-color: #dadada;\nbackground-color: #eeeeee;\ncursor: default;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .icon {\nposition: absolute;\nright: 10px;\ntop: 7px;\nwidth: 16px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .open-close {\ncolor: #589442;\nposition: absolute;\nright: 0px;\nwidth: auto;\nheight: auto;\nbackground: none;\nfont-size: 23px;\nmargin-right: 0px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown {\nposition: absolute;\nwidth: 99%;\nleft: 0;\nborder: 1px solid #589442;\nborder-radius: 3px;\nz-index: 100;\nbox-shadow: inset 0 7px 12px -7px #c8c8c8;\nbackground-color: white;\ntext-align: left;\nfont-size: 14px;\n-webkit-font-smoothing: antialiased;\noverflow: hidden;\nwhite-space: nowrap;\n-webkit-transition: border-color 200ms, background-color 200ms;\ntransition: border-color 200ms, background-color 200ms;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown .curoption {\nborder-bottom: 1px solid #dadada;\npadding: 9px 0px 9px 5px;\nposition: relative;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown li.option {\npadding: 9px 5px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown li:hover {\nbackground-color: #c8c8c8;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown div.option.adults-picker {\nborder-bottom: 1px solid #dadada;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown div.option .title {\npadding-left: 10px;\nfont-size: 14px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown div.option .explain {\ncolor: #c8c8c8;\nfont-size: 10px;\nline-height: 10px;\nposition: relative;\nleft: 10px;\ntop: -7px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown {\nposition: relative;\nborder-width: 0;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown .open-close {\nposition: absolute;\nfloat: right;\ntop: 3px;\nright: 1px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown .options-container {\nmax-height: 170px;\noverflow-y: scroll;\nwidth: 100%;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker.ui_dropdown {\noverflow-y: hidden;\n/* prevent double scrollbars in IE */\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container {\ntext-align: left;\nmargin-bottom: 10px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap .picker-inner,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .picker-inner {\npadding: 0 5px 0 10px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap .picker-inner.error,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .picker-inner.error {\nborder-color: red;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap .picker-dropdown,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .picker-dropdown {\nposition: absolute;\nborder: 1px solid #589442;\nborder-radius: 3px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap .picker-dropdown .options-container,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .picker-dropdown .options-container {\nmax-height: 170px;\noverflow-y: scroll;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap .picker-dropdown .curoption,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .picker-dropdown .curoption {\npadding: 0;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap .picker-dropdown .picker-label,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .picker-dropdown .picker-label {\npadding-left: 10px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap li.option,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container li.option {\npadding: 0 0 0 10px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap .explain,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .explain {\ncolor: #c8c8c8;\nfont-size: 10px;\nline-height: 10px;\nmargin: 5px 0;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap .explain .ages_change,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .explain .ages_change {\ncolor: #065;\ncursor: pointer;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap .explain .ages_change:hover,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .explain .ages_change:hover {\ntext-decoration: underline;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap .ages-error,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .ages-error {\ncolor: red;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .arrowUp {\nborder-bottom-color: white;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container {\nwidth: 300px;\nmargin-bottom: 0px;\ndisplay: flex;\nflex-wrap: wrap;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .age-picker {\nwidth: 22%;\nmargin: 15px 1.5% 5px 1.5%;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .age-picker:nth-child(4n+5) {\nmargin-right: 1.5%;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .age-picker .picker-title {\nposition: relative;\ntop: -25px;\nleft: 5px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container .update_search_button {\ntop: 15px;\nheight: 34px;\nwidth: 300px;\nmargin-bottom: 15px;\norder: 999;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap-popup-container.hidden {\ndisplay: none;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .rooms-picker {\nwidth: 48%;\nmargin-right: 4%;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .rooms-picker,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .adults-picker,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .children-picker {\nwidth: 30%;\nmargin-right: 3.5%;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .rooms-picker:nth-child(5),\nDIV.prw_rup.prw_ibex_rooms_guests_picker .adults-picker:nth-child(5),\nDIV.prw_rup.prw_ibex_rooms_guests_picker .children-picker:nth-child(5) {\nmargin-right: 0;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .rooms-picker .unified-picker,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .adults-picker .unified-picker,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .children-picker .unified-picker {\nwidth: 30%;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .rooms-picker .explain,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .adults-picker .explain,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .children-picker .explain {\ndisplay: none;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .rooms-picker .picker-inner,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .adults-picker .picker-inner,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .children-picker .picker-inner {\npadding: 0 5px 0 5px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .rooms-picker .picker-dropdown .options-container,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .adults-picker .picker-dropdown .options-container,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .children-picker .picker-dropdown .options-container {\nmax-height: 170px;\noverflow-y: scroll;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .rooms-picker .picker-dropdown .picker-label,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .adults-picker .picker-dropdown .picker-label,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .children-picker .picker-dropdown .picker-label {\npadding-left: 5px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .rooms-picker .picker-dropdown li.option,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .adults-picker .picker-dropdown li.option,\nDIV.prw_rup.prw_ibex_rooms_guests_picker .children-picker .picker-dropdown li.option {\npadding-left: 5px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker .children-picker {\nmargin-right: 0;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker.large .picker-dropdown .curoption,\nDIV.prw_rup.prw_ibex_rooms_guests_picker.large .picker-dropdown li.option {\npadding-top: 15px;\npadding-bottom: 15px;\n}\nDIV.prw_rup.prw_ibex_rooms_guests_picker.large .age-picker .picker-dropdown .curoption,\nDIV.prw_rup.prw_ibex_rooms_guests_picker.large .age-picker .picker-dropdown li.option {\npadding-top: 0px;\npadding-bottom: 0px;\n}\n.hsx_hd DIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown .curoption {\npadding-left: 16px;\n}\n.hsx_hd DIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown .curoption .open-close {\nfont-size: 18px;\nright: 10px;\ncolor: #666;\n}\n.hsx_hd DIV.prw_rup.prw_ibex_rooms_guests_picker .picker-dropdown .option {\npadding-left: 16px;\n}\n.hsx_hd DIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap .picker-dropdown .picker-label {\npadding: 0;\n}\n.hsx_hd DIV.prw_rup.prw_ibex_rooms_guests_picker .ages-wrap .picker-dropdown .open-close {\ntop: 0;\n}\n.lang_fr DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-hotelreview .unified-picker .picker-inner,\n.lang_es DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-hotelreview .unified-picker .picker-inner,\n.lang_cs DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-hotelreview .unified-picker .picker-inner,\n.lang_vi DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-hotelreview .unified-picker .picker-inner,\n.lang_es DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-persistenthotels .unified-picker .picker-inner,\n.lang_fr DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-hotelreview .picker-dropdown,\n.lang_es DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-hotelreview .picker-dropdown,\n.lang_cs DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-hotelreview .picker-dropdown,\n.lang_vi DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-hotelreview .picker-dropdown,\n.lang_es DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-persistenthotels .picker-dropdown,\n.lang_fr DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-hotelreview .picker-dropdown li.option,\n.lang_es DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-hotelreview .picker-dropdown li.option,\n.lang_cs DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-hotelreview .picker-dropdown li.option,\n.lang_vi DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-hotelreview .picker-dropdown li.option,\n.lang_es DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-persistenthotels .picker-dropdown li.option {\nfont-size: 11px;\n}\n.lang_cs DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-persistenthotels .unified-picker .picker-inner,\n.lang_cs DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-persistenthotels .picker-dropdown,\n.lang_cs DIV.prw_rup.prw_ibex_rooms_guests_picker.wctx-persistenthotels .picker-dropdown li.option {\nfont-size: 13px;\n}\n--></style><style type="text/css"><!--\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .top_picks_container {\nmargin-bottom: 8px;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .top_picks_container .top_picks_section {\nmargin-bottom: 15px;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .top_picks_section .section_header {\nmargin-bottom: 8px;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .section_header .section_title {\nfont-size: 16px;\nfont-weight: bold;\nmargin-top: 18px;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .section_title .see_more {\ncolor: #006699;\ncursor: pointer;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .section_title .see_more:hover {\ntext-decoration: underline;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .top_picks_section .tile_container {\nmargin-top: 15px;\nwhite-space: nowrap;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .top_picks_section .tile_container:only-of-type {\nmargin-top: 0;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .tile {\nwidth: 32%;\ndisplay: inline-block;\nbackground-color: #FFF;\n-webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.15);\n-moz-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.15);\nbox-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.15);\nmargin: 0 0.66%;\nposition: relative;\nopacity: 1;\ntransition: opacity linear 100ms;\nwhite-space: normal;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .tile:hover .thumb {\nopacity: .9;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .tile:first-child {\nmargin-left: 0;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .tile .thumbCrop {\ncursor: pointer;\ndisplay: inline-block;\nheight: 111px;\noverflow: hidden;\nwidth: 100%;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .tile .thumbCrop img {\nheight: 187px;\nmargin-top: -38px;\nvertical-align: middle;\nwidth: 280px;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .tile .product_details {\npadding: 10px 15px 12px;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .name_and_price .product_name {\ncolor: #006699;\ncursor: pointer;\nfloat: left;\nfont-size: 14px;\nfont-weight: bold;\nheight: 48px;\noverflow: hidden;\nwidth: 75%;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .name_and_price .price {\nfloat: right;\nfont-size: 12px;\nheight: 36px;\nwidth: 25%;\ntext-align: right;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .name_and_price .price span {\nfont-size: 20px;\nfont-weight: bold;\ntext-align: right;\ndisplay: block;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .price .savings {\ntext-decoration: line-through;\ncolor: #E46715;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .price .savings .strikethruPrice {\nfont-size: 12px;\ncolor: black;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .product_details .rating_container {\ndisplay: inline-block;\nheight: 37px;\nmargin-top: 6px;\nwidth: 100%;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .rating_container .rating_and_reviews {\nfloat: left;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .rating_and_reviews .rating {\nmargin-bottom: 6px;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .rating_and_reviews .reviews {\nfont-size: 12px;\ncolor: #999;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .rating_container .more_info {\nfloat: right;\npadding-top: 5px;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .rating_and_reviews .button_inner {\npadding: 0 8px;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .clear {\nclear: both;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .top_picks_container .see_more_groups {\ntext-align: center;\nfont-family: Arial, sans-serif;\ncolor: #006699;\nfont-size: 15px;\nfont-weight: 700;\nwidth: 98%;\nborder-bottom: 2px solid #e9e8e2;\nline-height: 1px;\nmargin: 24px auto 24px;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .top_picks_container .see_more_groups span {\nbackground: #f4f3f0;\npadding: 0 10px;\ncursor: pointer;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories .top_picks_container .see_more_groups span:hover {\ntext-decoration: underline;\n}\nDIV.ppr_rup.ppr_priv_attraction_viator_categories h2.top_attractions {\nmargin-bottom: 12px;\n}--></style><style type="text/css"><!--\nDIV.prw_rup.prw_meta_maps_meta_block .providerLogo {\nwidth: 38%;\nheight: 100%;\nvertical-align: middle;\nmargin-left: 0;\nfloat: left;\ntext-align: center;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .disclaimerLnk {\nfloat: right;\ncolor: #999;\ndisplay: inline-block;\nfont-size: .9165em;\nline-height: 14px;\ntext-align: right;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .mapsv2-unavail, DIV.prw_rup.prw_meta_maps_meta_block .mapsv2-noprices {\nfont-weight: bold;\nmargin-bottom: 5px;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .moreInfo {\nheight: 20px;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .moreInfoWithTextLinks {\nheight: 40px;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .offer.premium {\nposition: relative;\nheight: 57px;\noverflow: visible;\nmargin: 5px 0;\npadding: 0;\nbackground: #fff;\nborder: 1px solid #e6e6e6;\nborder-radius: 3px;\nline-height: 54px;\nclear: both;\ncursor: pointer;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .providerImg {\nheight: 35px;\nvertical-align: middle;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .singlePriceBlock {\nvertical-align: middle;\nwidth: 28%;\nheight: 100%;\npadding-left: 0;\nline-height: 38px;\nfloat: left;\ntext-align: center;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .priceBlockContents {\nwidth: 100%;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .pricePerNight {\nfont-size: 10px;\ntext-align: center;\nline-height: normal;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .priceChevron {\nposition: relative;\nright: 78px;\ndisplay: table;\npadding: 0;\nline-height: normal;\ncolor: black;\nmargin: 0;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .price-center {\ndisplay: table-cell;\nvertical-align: middle;\nheight: 59px;\nwidth: 90px;\nmax-width: 90px;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .price {\nwhite-space: nowrap;\ncolor: black;\ndisplay: block;\nfont-weight: bold;\nmargin-bottom: -2px;\nfont-size: 20px;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .viewDealChevron {\nmin-width: 0;\nwidth: 70px;\nwhite-space: normal;\ntext-align: center;\ncolor: #000;\nfont-size: 16px;\nfont-weight: bold;\npadding: 0 13px 0 6px;\nline-height: 57px;\nheight: 58px;\nbackground: #fc0 none;\ntext-shadow: none;\nbox-shadow: none;\noverflow: visible;\ntext-overflow: ellipsis;\nfloat: right;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .viewDealText {\ndisplay: inline-block;\nline-height: normal;\nvertical-align: middle;\ntext-align: center;\nmax-width: 100%;\npadding-right: 2px;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .dealWrapper {\nwidth: 65px;\n}\nDIV.prw_rup.prw_meta_maps_meta_block .viewDealChevron:not(.lte_ie8):after {\nborder-color: #000;\nposition: absolute;\ntop: 50%;\nright: 8px;\nwidth: 6px;\nheight: 6px;\nmargin-top: -4px;\nborder-width: 0 2px 2px 0;\nborder-style: solid;\ncontent: "";\n-ms-transform: rotate(-45deg);\n-sand-transform: rotate(-45deg);\n-webkit-transform: rotate(-45deg);\ntransform: rotate(-45deg);\n}--></style><style type="text/css"><!--\nDIV.ppr_rup.ppr_priv_attraction_day_trip_shelf h2.top_attractions {\nmargin-bottom: 12px;\n}--></style><style type="text/css"><!--\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 { position:relative; z-index:4; padding:14px 0 16px; background:#fff;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .taLnk:hover { text-decoration:underline;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .header_container { position:relative; width:98%; margin:0 auto;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .full_width { position:relative; margin:0 auto;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014.hr_heading .full_width { width:983px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014.attractions_heading .full_width { box-sizing: border-box; width: 983px; clear: both; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .heading_name_wrapper { display:inline-block; max-width:870px; overflow:hidden;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 #HEADING_GROUP .heading_name_wrapper { max-width: 986px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 #HEADING_GROUP .heading_name_wrapper .heading_name { width: inherit;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 #HEADING_GROUP .heading_name_wrapper .heading_name.limit_width_800 { max-width: 750px; padding-right: 20px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .heading_name { display:inline-block; width:100%; font-weight:bold; font-size:2.3335em; word-wrap:break-word; float:left; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .heading_height { position:absolute; top:0; width:0; height:31px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .claimListing { font-size: 1.3em; font-weight: normal; float:right; margin: 10px 5px 0px 8px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .heading_ratings { height:100%; overflow:hidden; margin-top:6px; line-height:20px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .heading_ratings.tr_cta { width: 800px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .hr_heading .heading_ratings { font-size:1.333em;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .with_alt_title { font-size:2em;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .with_alt_title .heading_height { height:52px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .altHead { width:100%; font-size:.68em; clear:left; float:left;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .coeBadgeDiv .ui_icon {font-size: 17px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .coeBadgeDiv { display:block; color:#589442;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .coeBadgeDiv .text { color: #589442; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .tcLaurel { vertical-align: -5px; width: 20px; margin-right: 3px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .tc.text { color: #589442; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .glBadgeDiv { color:#589442;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .glBadgeDiv .greenLeaderLabelLnk { margin-left:4px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .glBadgeDiv .greenLeaderImg { margin-top:1px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .separator { position:relative; margin:0 23px 6px 0; float:left;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .separator:after { position:absolute; top:0; right:-13px; width:0; height:20px; border-right:1px solid #ddd; content:"";}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .separator:last-child:after { display:none;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .star { margin-top:2px; float:left;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .star.starHover { cursor:pointer;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .popRanking { overflow:visible; margin-bottom:0; padding-left:1px; color:#599442;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .popRanking a { color:#589442;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .popRanking a:hover { text-decoration:underline;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .header_address {padding-top: 4px; overflow: hidden;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .bl_details .header_address {overflow: visible;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blUpsellFocus .header_address {padding-top: 8px; overflow: visible;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blLinks .header_address {padding-top: 0px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blUpsellFocus .blLinks.header_address {padding-top: 2px; overflow: visible;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .header_address .icon { display:inline-block; margin:0 2px 0 0; vertical-align:text-top;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .header_contact_info .blLinks .header_address {white-space: nowrap}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .header_contact_info .blLinks .header_address .format_address {display: inline-block; width:100%; white-space: normal;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014.attractions_heading #HEADING_GROUP h1 { font-weight: normal; font-size: 2.8em; }\n.width_1132 DIV.ppr_rup.ppr_priv_poi_header .heading_2014.hr_heading .full_width { width:1132px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .header_contact_info.tr_cta {\nwidth: 740px;\n}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .header_contact_info.blLinks { width: 88%;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .contact_item { position:relative; margin-right:23px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .contact_item:before { position:absolute; top:0; left:-10px; width:0; height:20px; border-right:1px solid #e5e5e5; content:"";}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blBox { margin-top:6px; overflow:visible;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blLinks .blBox { margin-top:0px; overflow:visible;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .bl_details { height:100%; overflow:hidden;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .bl_details_wrap.blLinks { border-top: none; padding-top: 0px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .bl_details .blDetails { display:inline; margin-top:2px; line-height:1.9em;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blLinks .bl_details .blDetails { line-height:2em; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blLinks { font-size: 12px; line-height:2em; overflow:hidden;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blUpsellFocus .blLinks {overflow:visible;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blUpsellFocus .blDetails .contact_item {padding-top: 4px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .icnLink { margin-top:2px; margin-right:5px; overflow:hidden;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .icnLink.grayWeb { margin-top:3px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .icnLink.grayEmail { margin-top:4px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .icnSO { margin-right:5px; overflow:hidden; float:left; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .couponTeaser.wrap { display: inline; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .soOneLine { float:left; margin-right: 10px; padding-right: 10px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .soOneLine .icnSO, DIV.ppr_rup.ppr_priv_poi_header .heading_2014 .soOneLine .icnAnouncementRewrite { margin-top:3px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blLinks .icnSO { margin-top:5px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .bl_details .ui_icon,\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .header_contact_info .ui_icon { font-size: 20px; color: #666666; margin-top: -2px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .ui_icon.map-pin-fill { margin-top: -5px; font-size: 17px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .ui_icon.phone { font-size:24px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .ui_icon.email { margin-top: -1px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .ui_icon.laptop { margin-top: -1px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .ui_icon.present { margin-top: -3px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .ui_icon.checkmark { margin-top: -6px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .ui_icon.refresh-zapper { margin-top: -6px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .bl_details .ui_icon.refresh-zapper { margin-top: -2px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blLinks .ui_icon { font-size: 24px; color: #589442; margin-top: -2px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blLinks .ui_icon.map-pin-fill { font-size: 22px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blLinks .ui_icon.checkmark { margin-top: -3px; }\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blLinks .ui_icon.special-offer-45deg {margin-top: -1px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blLinks .ui_icon.special-offer-fill {color: #ffb300;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .amenFloat { display:inline-block; margin-top:3px; white-space:nowrap;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .blLinks .amenFloat {margin-top:0px;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .amenFloat .icnWeb { overflow:hidden; margin-top:2px; margin-right:5px; margin-right:8px !ie;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .amenFloat .amenities { display:inline; vertical-align:baseline;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .specialLabel { padding-right:12px; font-weight:bold; cursor:pointer; float:left;}\nDIV.ppr_rup.ppr_priv_poi_header .heading_2014 .icnAnouncementRewrite { margin:-3px 6px 0 0; float:left;}\nDIV.ppr_rup.ppr_priv_poi_header .tabs_seperator { height:1px; background-color:#e3e3e3; line-height:1px;}\nDIV.ppr_rup.ppr_priv_poi_header .headerShadow { position:relative; z-index:1; margin-top:-41px;}\nDIV.ppr_rup.ppr_priv_poi_header .headerShadow .roundShadowWrapper { position:relative; height:41px;}\nDIV.ppr_rup.ppr_priv_poi_header .headerShadow .roundShadow:after { position:absolute; top:30%; bottom:0; left:1%; width:98%; height:70%; box-shadow:0 0 20px rgba(30,30,30,0.3); border-radius:100%; content:"";}\nDIV.ppr_rup.ppr_priv_poi_header .starAttributionText { max-width:400px; margin-right:10px;}\nDIV.ppr_rup.ppr_priv_poi_header .tabs_2014 { position:relative; z-index:4; background-color:#fff;}\nDIV.ppr_rup.ppr_priv_poi_header .tabs_2014 .tabs_container { position:relative; width:98%; margin:0 auto; background-color:#fff;}\nDIV.ppr_rup.ppr_priv_poi_header .travelAlertCuba {\nfont-size: 15px;\npadding-bottom: 10px;\ncolor: #E50000;\nmargin-top: 0;\nmargin-bottom: 5px;\n}\nDIV.ppr_rup.ppr_priv_poi_header .travelAlertCuba .alertIcon {\nwidth: 20px;\n}\nDIV.ppr_rup.ppr_priv_poi_header .travelAlertCuba .alertTitle,\nDIV.ppr_rup.ppr_priv_poi_header .travelAlertCuba .clickLink {\nfont-weight: bold;\n}\nDIV.ppr_rup.ppr_priv_poi_header .headingWrapper {\nposition: relative;\n}\nDIV.ppr_rup.ppr_priv_poi_header .dineWithLocalsSymbolLarge {\ndisplay: inline-block;\nvertical-align: middle;\nheight: 40px;\nwidth: 40px;\nbackground-image: url('/img2/restaurants/eat_with/Hat_big.png');\n}\nDIV.ppr_rup.ppr_priv_poi_header .bubble_rating {\nfloat: left;\nmargin-right: 4px;\npadding: 1px 0 0 1px;\n}\n--></style><style type="text/css"><!--\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .crumbs_container.bgWhite {\nbackground-color: white;\n}\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .crumbs_container.bgWhiteSmoke {\nbackground-color: #f4f3f0;\n}\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .crumbs_desktop {\npadding: 7px 0;\ntext-shadow: none;\noverflow: visible;\nmargin: 0 auto;\n}\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .crumbs_desktop_limited_width_982 {\nmax-width: 982px;\n}\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .crumbs_desktop_limited_width_1018 {\nmax-width: 1018px;\n}\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .crumbs_desktop_limited_width_1132 {\nmax-width: 1132px;\nmin-width: 1024px;\n}\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .crumbs_desktop li {\ndisplay: inline-block;\ncolor: #6F6F6F;\n}\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .crumbs_desktop_light_color span {\ncolor: #069;\n}\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .mercury span {\ncolor: #666;\n}\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .crumbs_with_bg {\nz-index: 200;\nposition: relative;\n}\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .crumbs_with_bg span {\ncolor: white;\n}\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .crumbs_with_bg li {\ncolor: #CCC;\n}\nDIV.ppr_rup.ppr_priv_breadcrumb_desktop .separator {\nmargin: 5px 9px 3px 10px;\n}\n--></style><style type="text/css"><!--\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small { height:52px; background-color:#fff; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container { position:relative; width:1024px; max-width:1024px; margin:0 auto; padding:4px 0; font-size:18px; line-height:44px; font-weight: bold; color:#4a4a4a; text-align:center; white-space:nowrap;}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container span{ color: #eb651c;}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container:before { position:absolute; z-index:1; right:-50%; bottom:-18px; left:-50%; width:72%; height:6px; margin:0 auto; border-radius:100%; box-shadow:0 0 36px rgba(0,0,0,0.8); content:"";}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container .pcb_ollie, DIV.ppr_rup.ppr_priv_brand_consistent_header .consistent_header_container .sprite-ollie { display:inline-block; position:relative; top:3px; width:35px; height:21px; margin-left:9px; }\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container .pcb_ollie { background:url("/img2/branding/ollieHead.png") 0 0 no-repeat; }\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container .pcb_cta { margin-left:1px;}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container .highlighted_text { background-color: #e66700; color: #fff; border-radius: 6px; padding: 6px; font-size: 12px; font-weight: bold; margin-right: 9px; top: -2px; position: relative;}\n.lang_da DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container,\n.lang_de DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container,\n.lang_fi DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container,\n.lang_fr DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container,\n.lang_el DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container,\n.lang_es DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container,\n.lang_hu DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container,\n.lang_ja DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container,\n.lang_nl DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container,\n.lang_pl DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container,\n.lang_pt DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container,\n.lang_ru DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container,\n.lang_vi DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container{\nfont-size: 13px;\n}\n@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_small_text_long_ollie_small .consistent_header_container :before { bottom:-12px; }\n}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_long_text_long_optional_information .consistent_header_container2{\nmargin: 0 auto;\nwidth: 980px;\npadding: 8px 0;\ntext-align: left;\n}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_long_text_long_optional_information .consistent_header_container2 .bold{\nfont-weight: 900;\n}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_long_text_long_optional_information .consistent_header_container2 .lockup_icon_text{\ndisplay: inline-block;\nvertical-align: middle;\nmargin: 3px;\n}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_long_text_long_optional_information .consistent_header_container2 .lockup_icon_border{\ndisplay: inline-block;\nmargin-right: 12px;\nborder: 1px solid;\n}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_long_text_long_optional_information a, DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_long_text_long_optional_information a:visited, DIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_long_text_long_optional_information a:active {\ncolor: black;\ntext-decoration: none !important;\n}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_long_text_long_optional_information .consistent_header_container2 .header_text {\nvertical-align: middle;\n}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_long_text_long_optional_information .brand_lightbox_trigger {\ncursor: pointer;\n}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_long_text_long_optional_information .consistent_header_container2 .info_icon{\nfont-size: 17px;\nposition: relative;\n}\nDIV.ppr_rup.ppr_priv_brand_consistent_header .highlight_long_text_long_optional_information img.header_tag{\nvertical-align: text-top;\ntop: -10px;\nz-index: 1;\nfloat: right;\nvertical-align: top;\nposition: relative;\n}\n--></style>\n<style type="text/css">\nbody{}\n/* ADS-2159: Move ad out of header to restore proper stacking/z-index for expandable ads */\n.big_center_ad {\nmargin-top: 0;\n}\n.big_center_ad .iab_leaBoa {\nmargin: 0;\npadding-top:16px;\nbackground-color:#fff;\n}\n/* Margin only applies to non-empty ads */\n.big_center_ad .iab_leaBoa .gptAd {\nmargin:0 0 10px;\n}\n.heading_2014 {\npadding: 14px 0 16px;\nz-index: 4;\nbackground: #FFF;\nposition: relative;\n}\n.heading_2014.edge_to_edge {\nleft: 0;\nright: 0;\n}\n.heading_2014 .taLnk:hover {\ntext-decoration: underline;\n}\n.heading_2014 #HEADING_GROUP .heading_name_wrapper {\nmax-width: 870px;\ndisplay: inline-block;\noverflow: hidden;\n}\n.heading_2014 #HEADING_GROUP .heading_name_wrapper .heading_name {\ndisplay: inline-block;\n}\n.heading_2014 #HEADING_GROUP .heading_name_wrapper .heading_name.with_alt_title {\nfont-size: 2em;\n}\n.heading_2014 .heading_name_wrapper .heading_height {\nwidth: 0;\nheight: 31px;\ndisplay: inline-block;\nposition: absolute;\ntop: 0;\n}\n.heading_2014 .heading_name_wrapper .with_alt_title .heading_height {\nheight: 52px;\n}\n.heading_2014 .heading_name_wrapper span.altHead {\ncolor: #2c2c2c;\ndisplay: block;\nfont-size: .68em;\n}\n.heading_2014 #HEADING_GROUP {\nmargin: 0;\n}\n.heading_2014 #HEADING_GROUP h1 {\nfont-weight: bold;\nfont-size: 2.3335em;\n}\n.Attractions .heading_2014 #HEADING_GROUP h1 {\nfont-weight: normal;\nfont-size: 2.8em;\n}\n.heading_2014 #HEADING_GROUP.standard_width {\nposition: relative;\nwidth: 983px;\nmargin: auto;\n}\n.heading_2014 #HEADING_GROUP .infoBox {\nmargin-top: 0;\ncolor: #656565;\n}\n.heading_2014 .report_inaccurate {\nmargin: 2px 0 0 2px;\ndisplay: block;\n}\n.heading_2014 .moved_location_link {\nmargin: 2px 0 0 2px;\ndisplay: block;\n}\n.heading_2014 .separator {\ndisplay: inline-block;\nposition: relative;\nmargin: 0 23px 0 0;\n}\n.rtl .heading_2014 .separator {\nmargin: 0 0 0 23px;\n}\n.heading_2014 .separator:after {\ncontent: "";\nposition: absolute;\ntop: 0;\nright: -13px;\nwidth: 0;\nheight: 20px;\nborder-right: 1px solid #DDD;\n}\n.heading_2014 .separator:last-child:after {\ndisplay: none;\n}\n.rtl .heading_2014 .separator:last-child:after {\ndisplay: block;\n}\n.rtl .heading_2014 .separator:first-child:after {\ndisplay: none;\n}\n.heading_2014 .heading_ratings {\nmargin-top: 6px;\nfont-size: 1.1670em;\n}\n.heading_2014 .heading_ratings .heading_rating {\nvertical-align: top;\nheight: 20px;\n}\n.heading_2014 .heading_ratings .heading_rating .rating {\nmargin: 0;\nwidth: 100%;\n}\n.heading_2014 .heading_ratings .popRanking.alert .rank,\n.heading_2014 .heading_ratings .heading_rating.alert .rank {\ncolor:#a62100;\n}\n.heading_2014 .heading_ratings .heading_rating a:hover {\ntext-decoration: underline;\n}\n.heading_2014 .heading_ratings .popRanking,\n.heading_2014 .heading_ratings .heading_rating .rating .more {\nfont-size: 1.1670em;\n}\n.heading_2014 .heading_ratings .heading_rating .slim_ranking {\nmargin: 0;\n}\n.heading_2014 .heading_ratings .popRanking a,\n.heading_2014 .heading_ratings .heading_rating .slim_ranking,\n.heading_2014 .heading_ratings .heading_rating .slim_ranking a {\ncolor: #589442;\n}\n.heading_2014 .heading_ratings .heading_rating .coeBadgeDiv {\nmargin: 0;\n}\n.heading_2014 .heading_ratings .heading_rating .coeBadgeDiv .text {\ncolor: #589442;\n}\n.heading_2014 .heading_ratings .heading_rating .glBadgeDiv {\nfont-size: 1.1670em;\ncolor: #589442;\n}\n.heading_2014 .heading_ratings .heading_rating .glBadgeDiv .greenLeaderImg {\nmargin-top: 1px;\n}\n.heading_2014 .heading_ratings .heading_rating .glBadgeDiv .greenLeaderLabelLnk {\nmargin-left: 4px;\n}\n.heading_2014 .heading_details {\nmargin: 6px 0 0 2px;\nfont-size: 1.167em;\ncolor: #4a4a4a;\noverflow: hidden;\n}\n.heading_2014 .heading_details .detail {\ndisplay: inline-block;\nvertical-align: middle;\nline-height: 21px;\n}\n.heading_2014 .heading_details .detail.neighborhood .ppr_priv_neighborhood_widget .detail .info {\nmargin-top: -3px;\n}\n.heading_2014 .heading_details .detail.neighborhood .label.with_button {\ndisplay:none\n}\n.heading_2014 .heading_details .detail.neighborhood .label,\n.heading_2014 .heading_details .detail.neighborhood .icon {\nvertical-align: middle;\n}\n.heading_2014 .heading_details .detail .label {\nvertical-align: top;\n}\n.heading_2014 .heading_details .detail .icon {\ndisplay: inline-block;\nvertical-align: bottom;\n}\n.heading_2014 .heading_details .detail .label {\ndisplay: inline-block;\n}\n.heading_2014 #HEADING_GROUP address {\nmargin: 0;\n}\n.heading_2014 #HEADING_GROUP address .icnWeb {\nmargin-top: 2px;\n}\n.heading_2014 .header_contact_info {\nmargin-top: 2px;\n}\n.heading_2014 address .bl_details {\nmargin-top: 3px;\npadding-right: 1px;\n}\n.heading_2014 address .blDetails {\ndisplay: inline;\n}\n.heading_2014 address .header_address {\ndisplay: inline;\nline-height: 21px;\n}\n.heading_2014 address .bl_details .header_address {\nmargin: 0 21px 0 0;\n}\n.heading_2014 address .header_address .icon {\ndisplay: inline-block;\nvertical-align: text-top;\n}\n.heading_2014 #HEADING_GROUP .blBox {\nmargin-top: 6px;\n}\n.heading_2014 address .bl_details .contact_item {\nmargin-right: 21px;\n}\n.rtl .heading_2014 address .bl_details .contact_item {\nmargin: 0 0 0 21px;\n}\n.heading_2014 address .bl_details .contact_item:after {\ncontent: "";\nposition: absolute;\ntop: 0;\nright: -11px;\nwidth: 0;\nheight: 20px;\nborder-right: 1px solid #DDD;\n}\n.rtl .heading_2014 address .bl_details .contact_item:after {\nborder-right: 0;\n}\n.rtl .heading_2014 address .bl_details .contact_item:before {\ncontent: "";\nposition: absolute;\nleft: -11px;\nwidth: 0;\nheight: 20px;\nborder-right: 1px solid #DDD;\n}\n.heading_2014 #HEADING_GROUP .amexHotSpot {\nmargin: 7px 0 0 2px;\n}\n.heading_2014.hr_heading #HEADING_GROUP .amexHotSpot {\nmargin-left: 0;\n}\n.heading_2014 .tchAwardIcon {\nwidth: 90px;\nheight: 90px;\n}\n.header_container {\nposition: relative;\n/* Child elements have max-width and min-width. This ensures that there's always a minimum margin of 1% */\nwidth: 98%;\nmargin: 0 auto;\n}\n.heading_2014.hr_heading .full_width {\nposition: relative;\nwidth: 983px;\nmargin: 0 auto;\n}\n.heading_2014 .travelAlertHeadline {\nmargin: 18px 0 14px;\n}\n.tabs_2014 {\nbackground: #FFF;\nz-index: 4;\nposition: relative;\n}\n.tabs_2014.fixed {\nz-index: inherit;\n}\n.tabs_2014 .tabs_container {\nposition: relative;\nwidth: 98%;\nmargin: 0 auto;\nbackground-color: #FFF;\n}\n.hr_tabs_placement_test.rr_tabs .tabs_2014 .persistent_tabs_header.fixed {\nbackground-color: #FFF;\n}\n.hr_tabs_placement_test .tabs_2014 .persistent_tabs_container {\nposition: relative;\nwidth: auto;\nmargin-bottom: 0;\nbackground-color: #FFF;\nz-index: 1; /* To make the fancy shadow work. */\n}\n.hr_tabs_placement_test .tabs_2014 .persistent_tabs_header {\nbox-shadow: none;\n}\n.hr_tabs_placement_test .tabs_2014 .persistent_tabs_header .tabs_pers_item:after {\n/* No separators in this design. Setting content to initial deletes the :after element. */\ncontent: initial;\ndisplay: none;\n}\n.tabs_2014 .persistent_tabs_header .full_width {\nmin-width: 0;\n}\n.content_blocks.hr_tabs_placement_test .tabs_2014 .persistent_tabs_header.fixed .tabs_pers_item.current {\nborder-bottom-width: 4px;\n}\n.tabs_2014 .tabs_pers_content {\nwidth: auto;\nmargin-left: 0 auto;\n}\n.tabs_2014 .header_container {\nbackground-color: #FFF;\n}\n.tabs_2014 .hr_tabs .inner {\nposition: relative;\nmin-width: 0;\n}\n.tabs_2014 .hr_tabs .tabs_pers_content {\nmargin: 0 110px 0 0;\n}\n.rtl .tabs_2014 .hr_tabs .tabs_pers_content {\nmargin: 0 0 0 110px;\n}\n.tabs_2014 .hr_tabs .fixed .tabs_pers_content {\nmargin: 0;\n}\n.tabs_2014 .hr_tabs .fixed #SAVES {\ndisplay: none;\n}\n.tabs_2014 .tabs_pers_war {\nfloat: right;\nmargin: 4px 0 0 6px;\nline-height: 32px;\n}\n.tabs_2014 .tabs_pers_war .button_war {\nfont-weight: bold;\npadding: 7px 14px;\ndisplay: inline;\nline-height: normal;\nborder-radius: 5px;\nbox-shadow: none;\n}\n.tabs_2014 .tabs_pers_war .button_war.ui_button:hover {\ntext-decoration:none;\nborder-color:#448040 #2f582c #2f582c #448040;\nbackground-color:#448040;\n}\n.tabs_2014 .tabs_pers_war .button_war:hover {\nbackground: #589442;\n}\n.tabs_2014 .tabs_container .fixed .tabs_pers_war {\nmargin-top: 10px;\nmargin-right: 1%;\n}\n.rtl .tabs_2014 .tabs_pers_war {\nfloat: left;\nmargin: 4px 6px 0 0;\n}\n.tabs_2014 .tabs_war_campaign {\nfloat: right;\nmargin: 5px -6px 0 6px;\n}\n.tabs_2014 .fixed .tabs_war_campaign {\nmargin-top: 11px;\n}\n.rtl .tabs_2014 .tabs_war_campaign {\nfloat: left;\nmargin: 5px 6px 0 -6px;\n}\n.tabs_2014 .tabs_buttons {\nfloat: right;\n}\n.rtl .tabs_2014 .tabs_buttons {\nposition: relative;\n}\n.ltr .tabs_2014 .tabs_container .fixed .tabs_buttons .tabs_pers_war {\nmargin-right: 0;\n}\n.ltr .tabs_2014 .tabs_container .fixed .tabs_buttons {\nmargin-right: 1%;\n}\n.rtl .tabs_2014 .tabs_container .fixed .tabs_buttons {\nmargin-left: 1%;\n}\n.tabs_2014 .tabs_book_now {\nfloat: right;\ndisplay: inline;\nmin-width: 80px;\nborder-radius: 4px;\nmargin: 3px 7px 0;\npadding: 7px 14px;\nline-height: normal;\nfont-weight: bold;\n}\n.tabs_2014 .tabs_container .fixed .tabs_book_now {\nmargin-top: 9px;\n}\n#SAVES.header_saves {\nright: 0;\nleft: auto;\ntop: 4px !important;\nborder: 0;\nmin-width: 0;\nmax-width: none;\nheight: 32px;\nposition: absolute;\nbackground-color: transparent;\n}\n#SAVES.header_saves.persistent_saves {\nfloat: right;\nright: auto;\ntop: auto !important;\nmargin-top: 4px;\nposition: static;\n}\n.rtl #SAVES.header_saves {\nfloat: left;\n}\n.heading_2014 #SAVES.header_saves {\nmargin-top: 23px;\n}\n.tabs_2014.tabs_hr #SAVES.header_saves {\nmargin: 0;\n}\n#SAVES.header_saves .savesWrap .saveBtn:hover {\nbackground-color: inherit;\n}\n#SAVES.header_saves .savesHover {\nmargin: 0;\n}\n.header_saves .full_width,\n.tabs_2014 .full_width {\nposition: relative;\n}\n#SAVES.header_saves .savesWrap {\nposition: relative;\npadding: 0;\nborder: none;\nbackground: none;\n}\n#SAVES.header_saves .saveBtn {\nline-height: 32px;\n}\n#SAVES.header_saves .savesWrap .saveBtn {\npadding: 0;\nborder: none;\nbackground: none;\nmargin-top: 0;\n}\n.header_saves .saves-hover-txt,\n.header_saves .saves-hover-txt-saved {\nposition: relative;\nborder: 1px solid #CECECE;\npadding: 7px 14px 7px 36px;\nborder-radius: 5px;\ncolor: #069;\nbackground-color: #FFF;\nbackground-position: 11px 8px;\nbackground-repeat: no-repeat;\n}\n.rtl .header_saves .saves-hover-txt,\n.rtl .header_saves .saves-hover-txt-saved {\npadding: 7px 36px 7px 14px;\n}\n/* The RTL converter doesn't like when these two identical classes are combined. */\n.rtl .header_saves .saves-hover-txt {\nbackground-position: 90% 8px;\n}\n.rtl .header_saves .saves-hover-txt-saved {\nbackground-position: 90% 8px;\n}\n.header_saves .saves-hover-txt-saved {\nbackground-color: #589442;\ncolor: #FFF;\nbackground-image: url("https://static.tacdn.com/img2/meta_sprites/big_photo/saved.png");\n}\n.header_saves .saves-hover-txt {\nbackground-image: url("https://static.tacdn.com/img2/meta_sprites/big_photo/save.png");\n}\n.header_saves .saves-hover-txt:hover {\nbackground-image: url("https://static.tacdn.com/img2/meta_sprites/big_photo/save-hover.png");\n}\n.full_meta_photos_v3 .saves-hover-txt:before,\n.full_meta_photos_v3 .saves-hover-txt-saved:before,\n.full_meta_photos_v3 .saves-hover-txt:hover:before {\nbackground: none;\n}\n.tabs_2014 .fixed #SAVES.header_saves .popupLeft .savePopup {\nmargin-top: -27px;\n}\n#SAVES.header_saves .popupLeft .savePopup {\ntop: 50%;\nmargin-top: -33px;\ntext-align: left;\nleft: auto;\nright: 100%;\nmargin-right: 20px;\n}\n#SAVES.header_saves .popupLeft .savePopup:before {\nleft: auto;\nright: -15px;\nborder-width: 13px 0 13px 15px;\n}\n#SAVES.header_saves .popupLeft .savePopup:after {\nleft: auto;\nright: -12px;\nborder-width: 12px 0 12px 14px;\n}\n.rtl #SAVES.header_saves .popupLeft .savePopup {\ntext-align: right;\nright: auto;\nleft: 100%;\nmargin-left: 20px;\n}\n.rtl #SAVES.header_saves .popupLeft .savePopup:before {\nright: auto;\nleft: -15px;\nborder-width: 13px 15px 13px 0;\n}\n.rtl #SAVES.header_saves .popupLeft .savePopup:after {\nright: auto;\nleft: -12px;\nborder-width: 12px 14px 12px 0;\n}\n.hr_tabs_placement_test .tabs_seperator {\nbackground-color: #e3e3e3;\nheight: 1px;\nline-height: 1px;\n}\n.persistent_tabs_header.fixed #SAVES {\ndisplay: none;\n}\n.persistent_tabs_header.fixed #SAVES.persistent_saves {\ndisplay: block;\nmargin-top: 10px;\n}\n.headerShadow {\nmargin-top: -41px;\n}\n.headerShadow .roundShadowWrapper{\nposition: relative;\nheight: 41px;\n}\n.headerShadow .roundShadow:after {\nz-index: 1;\n}\n.roundShadow:after {\ncontent: "";\nposition: absolute;\nz-index: -1;\n-webkit-box-shadow: 0 0 20px rgba(30,30,30,0.3);\n-moz-box-shadow: 0 0 20px rgba(30,30,30,0.3);\nbox-shadow: 0 0 20px rgba(30,30,30,0.3);\ntop: 30%;\nbottom: 0;\nwidth: 98%;\nleft: 1%;\nborder-radius: 100%;\nheight: 70%;\n}\n/**********\n* Bubble Ratings\n***********/\n.rating_rr .rr00 { width:0;}\n.rating_rr .rr05 { width:9px;}\n.rating_rr .rr10 { width:18px;}\n.rating_rr .rr15 { width:27px;}\n.rating_rr .rr20 { width:36px;}\n.rating_rr .rr25 { width:45px;}\n.rating_rr .rr30 { width:54px;}\n.rating_rr .rr35 { width:63px;}\n.rating_rr .rr40 { width:72px;}\n.rating_rr .rr45 { width:81px;}\n.rating_rr .rr50 { width:90px;}\n.content_blocks .content_block.has_heading {\npadding: 20px 20px 1px;\n}\n.content_blocks .hr_top_geocheckrates.has_heading {\npadding: 0;\nmargin: 0;\nborder: none;\n}\n#HEADING_GROUP .star.starHover {\ncursor: pointer;\ndisplay: block;\nmargin: 2px 0 0 0;\n}\n.heading_2014 .viewMore {\ncursor: pointer;\n}\n.pcb_consistent_header { height:52px; background-color:#fff; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}\n.pcb_header { position:relative; width:1024px; max-width:1024px; margin:0 auto; padding:4px 0; font-size:18px; line-height:44px; color:#4a4a4a; text-align:center; white-space:nowrap;}\n.pcb_header:before { position:absolute; z-index:1; right:-50%; bottom:-18px; left:-50%; width:72%; height:6px; margin:0 auto; border-radius:100%; box-shadow:0 0 36px rgba(0,0,0,0.8); content:"";}\n.pcb_header .pcb_ollie, .pcb_header .sprite-ollie { display:inline-block; position:relative; top:3px; width:35px; height:20px; margin-left:9px; }\n.pcb_header .pcb_ollie { background:url("https://static.tacdn.com/img2/branding/ollieHead.png") 0 0 no-repeat; }\n.pcb_header .pcb_cta { margin-left:1px;}\n.pcb_header .pcb_new { background-color: #e66700; color: #fff; border-radius: 6px; padding: 6px; font-size: 12px; font-weight: bold; margin-right: 9px; top: -2px; position: relative;}\n.lang_de .pcb_header, .lang_el .pcb_header { font-size: 13px; }\n.lang_vi .pcb_header { font-size: 15px; }\n.price_wins_header .pcb_header{ font-size: 18px;}\n.lang_de .price_wins_header .pcb_header, .lang_el .price_wins_header .pcb_header { font-size: 16px; }\n@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n/* IE10+ CSS styles go here */\n.pcb_header:before { bottom:-12px; }\n}\n</style>\n<!-- web541a.a.tripadvisor.com -->\n<!-- PRODUCTION -->\n<!-- releases/PRODUCTION_1040072_20170221_1514 -->\n<!-- Rev 1040073 -->\n<script src="https://static.tacdn.com/js3/src/trsupp-v23584999669a.js" type="text/javascript"></script>\n<link href="/Attractions-g155019-Activities-oa30-Toronto_Ontario.html" rel="next"/>\n</meta></meta></meta></meta></meta></meta></meta></head>\n<body class=" full_width_page content_blocks ltr domn_en_CA lang_en globalNav2011_reset css_commerce_buttons flat_buttons sitewide xo_pin_user_review_to_top attractions_lists_redesign attractions_lists_redesign_maps_above_filters track_back" data-navarea-metatype="QC_Meta_Mini" data-navarea-placement="Unknown" data-scroll="OVERVIEW">\n<div id="fb-root"></div>\n<img class="hidden" src="https://www.tamgrt.com/RT?id=987654321&event=PAGEVIEW&pixel_version=1"/>\n<script type="text/javascript">\nta.retargeting = { url: null, header_load: true };\nta.retargeting.url = 'www.tamgrt.com/RT';\n</script>\n<script crossorigin="anonymous" data-rup="cookie_sync" src="https://static.tacdn.com/js3/cookie_sync-c-v23051932392a.js" type="text/javascript"></script>\n<div id="iframediv"></div>\n<div class=" non_hotels_like desktop scopedSearch" id="PAGE">\n<!--trkP:brand_consistent_header-->\n<!-- PLACEMENT brand_consistent_header -->\n<div class="ppr_rup ppr_priv_brand_consistent_header" id="taplc_brand_consistent_header_0">\n<div class="pcb_consistent_header" id="PCB_CONSISTENT_HEADER">\n<div class="highlight_small_text_long_ollie_small ">\n<div class="consistent_header_container">\nWant the <span>lowest hotel prices</span>? You're in the right place. We check 200+ sites for you.\n<span class=" pcb_ollie"></span> </div>\n</div>\n</div>\n</div>\n<!--etk-->\n<div class="" id="HEAD">\n<div class="masthead masthead_war_dropdown_enabled masthead_notification_enabled ">\n<div class="container">\n<div class="brandArea">\n<span class="topLogo">\n<a class="logoWrap" href="/" onclick="setPID(5045);ta.setEvtCookie('TopNav', 'click', 'TAlogo', 0, this.href);"><img alt="Reviews of Hotels, Flights and Vacation Rentals" class="svg-taLogo" height="35" src="https://static.tacdn.com/img2/langs/en_CA/branding/trip_logo.svg" width="197"/></a>\n</span>\n<h1 class="header ">Top Things to Do in Toronto, ON - Toronto Attractions</h1>\n</div>\n<div class="prfs" id="USER_PREFS">\n<ul class="options">\n<li class="masthead_shopping_cart">\n<a class="masthead_shopping_cart_btn" href="/ShoppingCart">\n<div class="ui_icon empty-cart fl icnLink emptyCartIcon">\n</div>\n</a>\n<script>\nif(ta) {\nvar cartWhitelistFlag = ta.retrieve('attractions_shopping_cart_whitelisted_servlet_flag');\nif (typeof cartWhitelistFlag === 'undefined') {\nta.store('attractions_shopping_cart_whitelisted_servlet_flag', 'true');\n}\n}\n</script>\n</li>\n<li class="masthead_notification">\n</li>\n<li class="masthead_war_dropdown">\n<a class="tabLink arwLink" href="/UserReview" onclick="; requireCallLast('masthead/warToDoList', 'open'); return false; ; ta.setEvtCookie('WarGlobalNav', 'ClickLink', '', '0', '/UserReviewRedesign');">\n<div class="ui_icon pencil-paper fl icnLink reviewIcon"></div>\n</a>\n<a class="tabLink arwLink" href="/UserReview-ehttp%3A__2F____2F__www__2E__tripadvisor__2E__ca__2F__Attractions__2D__g155019__2D__Activities__2D__Toronto__5F__Ontario__2E__html" onclick="; requireCallLast('masthead/warToDoList', 'open'); return false; ; ta.setEvtCookie('WarGlobalNav', 'ClickLink', '', '0', '/UserReviewRedesign');">\n<span class="arrow_text" data-title="Review">\nReview\n<div class="hidden" id="NO_WAR_NOTIFICATION_FLAG"></div>\n</span>\n<img alt="" class="arrow_dropdown_wht " height="" src="https://static.tacdn.com/img2/x.gif" width="">\n</img></a>\n<div class="subNav">\n<div id="WAR_TO_DO_LIST">\n<div class="warAnotherPOI" id="WAR_ANOTHER_POI">\n<div class="warLoc subItem" onclick="ta.setEvtCookie('WAR', 'WAR_PROJECT_GLOBAL_NAV_DROP_DOWN', 'PICK_ANOTHER_POI', '39782', '/UserReviewRedesign');ta.util.cookie.setPIDCookie(39782);location.href='/UserReview-ehttp%3A__2F____2F__www__2E__tripadvisor__2E__ca__2F__Attractions__2D__g155019__2D__Activities__2D__Toronto__5F__Ontario__2E__html'">\n<div class="warLocImg">\n<div class="nophoto thumbNail">\n<span class="ui_icon pencil-paper"></span>\n</div>\n</div>\n<div class="warLocDetail">\n<span>\nReview a place you\u2019ve visited </span>\n</div>\n</div>\n</div>\n<div id="WAR_TODO_LOADING">\n<img src="https://static.tacdn.com/img2/spinner.gif"/>\n</div>\n</div>\n</div>\n<a class="tabLink arwLink" href="/UserReview" onclick="; requireCallLast('masthead/warToDoList', 'open'); return false; ; ta.setEvtCookie('WarGlobalNav', 'ClickLink', '', '0', '/UserReviewRedesign');">\n<span class="masthead_war_dropdown_arrow ui_icon single-chevron-down"></span>\n</a>\n</li>\n<li id="register" onclick="ta.call('ta.registration.RegOverlay.show', { type: 'dummy' }, this, {\n flow: 'CORE_COMBINED',\n pid: 427,\n locationId: '155019',\n userRequestedForce: true,\n onSuccess: function(resultObj) {\n if ('function' === typeof processControllerResult) {\n processControllerResult(resultObj);\n }\n }\n });"><span class="link no_cpu">JOIN</span></li>\n<li class="login" onclick="ta.call('ta.registration.RegOverlay.show', { type: 'dummy' }, this, {\n flow: 'CORE_COMBINED',\n pid: 427,\n locationId: '155019',\n userRequestedForce: true,\n onSuccess: function(resultObj) {\n if ('function' === typeof processControllerResult) {\n processControllerResult(resultObj);\n }\n }\n });"><span class="link no_cpu">LOG IN</span></li>\n<script type="text/javascript">\nta.store('currency_format_using_icu4j_cldr.featureEnabled', 'true');\n</script>\n<li class="optitem link" id="CURRENCYPOP" onclick="requireCallLast('masthead/header', 'openCurrencyPicker', this)">\n<span class="link">\nUS$\n<span class="currency_dropdown_arrow ui_icon single-chevron-down"></span>\n</span>\n</li>\n<script type="text/javascript">\nta.store('flag_links.useHrefLangs', false );\n</script>\n<li class=" no_cpu " id="INTLPOP" onclick="requireCallLast('masthead/header', 'openPosSelector', this)">\n<span class="link">\n<img alt="International Sites" class="flag" height="11" src="https://static.tacdn.com/img2/langs/en_CA/flags/flag.gif" title="International Sites" width="16">\n<img alt="" class="ui_icon single-chevron-down" height="7" src="https://static.tacdn.com/img2/x.gif" width="9">\n</img></img></span>\n</li>\n</ul>\n</div>\n</div>\n<div class=" tabsBar">\n<ul class="tabs" onclick="">\n<li class="tabItem dropDown jsNavMenu">\n<a class="tabLink arwLink geoLink" href="/Tourism-g155019-Toronto_Ontario-Vacations.html" onclick="ta.util.cookie.setPIDCookie(4964); ta.setEvtCookie('TopNav', 'click', 'Tourism', 0, this.href)">\n<span class="geoName" data-title="Toronto">Toronto</span><span class="ui_icon single-chevron-down"></span>\n</a>\n<ul class="subNav">\n<li class="subItem">\n<a class="subLink " href="/Tourism-g155019-Toronto_Ontario-Vacations.html" onclick="ta.util.cookie.setPIDCookie(4971);">\nToronto Tourism\n</a>\n</li>\n<li class="subItem">\n<a class="subLink " href="/Hotels-g155019-Toronto_Ontario-Hotels.html" onclick="ta.util.cookie.setPIDCookie(4972);" onmousedown="requireCallLast('masthead/header', 'addClearParam', this);">\nToronto Hotels\n</a>\n</li>\n<li class="subItem">\n<a class="subLink " href="/Hotels-g155019-c2-Toronto_Ontario-Hotels.html">\nToronto Bed and Breakfast\n</a>\n</li>\n<li class="subItem">\n<a class="subLink " href="/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html" onclick="ta.util.cookie.setPIDCookie(4975);">\nToronto Vacation Rentals\n</a>\n</li>\n<li class="subItem">\n<a class="subLink " href="/Vacation_Packages-g155019-Toronto_Ontario-Vacations.html">\nToronto Vacations\n</a>\n</li>\n<li class="subItem">\n<a class="subLink " href="/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html" onclick="ta.util.cookie.setPIDCookie(4973);">\nFlights to Toronto\n</a>\n</li>\n<li class="subItem">\n<a class="subLink " href="/Restaurants-g155019-Toronto_Ontario.html" onclick="ta.util.cookie.setPIDCookie(4974);">\nToronto Restaurants\n</a>\n</li>\n<li class="subItem">\n<a class="subLink " href="/Attractions-g155019-Activities-Toronto_Ontario.html" onclick="ta.util.cookie.setPIDCookie(4977);">\nToronto Attractions\n</a>\n</li>\n<li class="subItem">\n<a class="subLink selForums" href="/ShowForum-g155019-i55-Toronto_Ontario.html" onclick="ta.util.cookie.setPIDCookie(4980);">\nToronto Travel Forum\n</a>\n</li>\n<li class="subItem">\n<a class="subLink " href="/LocationPhotos-g155019-Toronto_Ontario.html" onclick="ta.util.cookie.setPIDCookie(4979);">\nToronto Photos\n</a>\n</li>\n<li class="subItem">\n<a class="subLink " href="/LocalMaps-g155019-Toronto-Area.html" onclick="ta.util.cookie.setPIDCookie(4978);">\nToronto Map\n</a>\n</li>\n<li class="subItem">\n<a class="subLink " href="/Travel_Guide-g155019-Toronto_Ontario.html">\nToronto Guide\n</a>\n</li>\n</ul>\n</li>\n<li class="tabItem dropDown jsNavMenu hvrIE6">\n<a class="tabLink arwLink" href="/Hotels-g155019-Toronto_Ontario-Hotels.html" onclick="ta.util.cookie.setPIDCookie(4965); ta.setEvtCookie('TopNav', 'click', 'Hotels', 0, this.href);" onmousedown="requireCallLast('masthead/header', 'addClearParam', this);">\n<span class="arrow_text" data-title="Hotels">Hotels</span><span class="ui_icon single-chevron-down"></span></a>\n<ul class="subNav">\n<li class="subItem">\n<a "="" class="subLink" href="/Hotels-g155019-Toronto_Ontario-Hotels.html">All Toronto Hotels</a> </li>\n<li class="subItem">\n<a class="subLink" href="/SmartDeals-g155019-Toronto_Ontario-Hotel-Deals.html">Toronto Hotel Deals</a> </li>\n<li class="subItem">\n<a class="subLink" href="/LastMinute-g155019-Toronto_Ontario-Hotels.html">Last Minute Hotels in Toronto</a>\n</li>\n<li class="expandSubItem">\n<span class="expandSubLink" onclick=" ">\nBy Hotel Type\n</span>\n<ul class="secondSubNav" style="top:-0.125em; ">\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zff7-Toronto_Ontario-Hotels.html">Business Hotels Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zff4-Toronto_Ontario-Hotels.html">Toronto Family Hotels</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zff12-Toronto_Ontario-Hotels.html">Toronto Luxury Hotels</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zff13-Toronto_Ontario-Hotels.html">Spa Resorts Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zff3-Toronto_Ontario-Hotels.html">Romantic Hotels Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zff6-Toronto_Ontario-Hotels.html">Best Value Hotels in Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zff24-Toronto_Ontario-Hotels.html">Toronto Green Hotels</a>\n</li>\n</ul>\n</li>\n<li class="expandSubItem">\n<span class="expandSubLink" onclick=" ">\nBy Hotel Class\n</span>\n<ul class="secondSubNav" style="top:-0.125em; ">\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zfc5-Toronto_Ontario-Hotels.html">5-star Hotels in Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zfc4-Toronto_Ontario-Hotels.html">4-star Hotels in Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zfc3-Toronto_Ontario-Hotels.html">3-star Hotels in Toronto</a>\n</li>\n</ul>\n</li>\n<li class="expandSubItem">\n<span class="expandSubLink" onclick=" ">\nPopular Amenities\n</span>\n<ul class="secondSubNav" style="top:-0.125em; ">\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zfa3-Toronto_Ontario-Hotels.html">Toronto Hotels with a Pool</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zfa9-Toronto_Ontario-Hotels.html">Pet Friendly Hotels in Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zfa7-Toronto_Ontario-Hotels.html">Toronto Hotels with Parking</a>\n</li>\n</ul>\n</li>\n<li class="expandSubItem">\n<span class="expandSubLink" onclick=" ">\nPopular Neighbourhoods\n</span>\n<ul class="secondSubNav" style="top:-0.125em; ">\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zfn8150902-Toronto_Ontario-Hotels.html">Downtown Toronto Hotels</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zfn9760-Toronto_Ontario-Hotels.html">Harbourfront Hotels</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/Hotels-g155019-zfn9885-Toronto_Ontario-Hotels.html">Yorkville Hotels</a>\n</li>\n</ul>\n</li>\n<li class="expandSubItem">\n<span class="expandSubLink" onclick=" ">\nPopular Toronto Categories\n</span>\n<ul class="secondSubNav" style="top:-0.125em; ">\n<li class="subItem">\n<a class="subLink" href="/HotelsList-Toronto-Cheap-Hotels-zfp5127.html">Cheap Hotels in Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsList-Toronto-Boutique-Hotels-zfp4894.html">Boutique Hotels Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsList-Toronto-Hotels-With-Shuttle-zfp371930.html">Hotels with Shuttle in Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsList-Toronto-Historic-Hotels-zfp24400.html">Historic Hotels in Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsList-Toronto-Hotels-With-Hot-Tubs-zfp5471.html">Hotels with Hot Tubs in Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsList-Toronto-Luxury-Boutique-Hotels-zfp2712843.html">Luxury Boutique Hotels Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsList-Toronto-Hotels-With-Smoking-Rooms-zfp43622.html">Hotels with Smoking Rooms in Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsList-Toronto-Condo-Hotels-zfp5243.html">Condo Hotels Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsList-Toronto-Hotels-On-The-Lake-zfp618971.html">Hotels on the Lake in Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsList-Toronto-Downtown-Bed-And-Breakfast-zfp22352.html">Downtown Toronto Bed and Breakfast</a>\n</li>\n</ul>\n</li>\n<li class="expandSubItem">\n<span class="expandSubLink" onclick=" ">\nNear Landmarks\n</span>\n<ul class="secondSubNav" style="top:-0.125em; ">\n<li class="subItem">\n<a class="subLink" href="/HotelsNear-g155019-d155483-CN_Tower-Toronto_Ontario.html">Hotels near CN Tower</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsNear-g155019-d5031404-Ripley_s_Aquarium_Of_Canada-Toronto_Ontario.html">Hotels near Ripley's Aquarium Of Canada</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsNear-g155019-d185112-St_Lawrence_Market-Toronto_Ontario.html">Hotels near St. Lawrence Market</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsNear-g155019-d155481-Royal_Ontario_Museum-Toronto_Ontario.html">Hotels near Royal Ontario Museum</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsNear-g155019-d533212-Distillery_Historic_District-Toronto_Ontario.html">Hotels near Distillery Historic District</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsNear-g155019-d185115-Toronto_Islands-Toronto_Ontario.html">Hotels near Toronto Islands</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsNear-g155019-d186168-Casa_Loma-Toronto_Ontario.html">Hotels near Casa Loma</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsNear-g155019-d186704-Toronto_Zoo-Toronto_Ontario.html">Hotels near Toronto Zoo</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsNear-g155019-d187000-The_AGO_Art_Gallery_of_Ontario-Toronto_Ontario.html">Hotels near The AGO, Art Gallery of Ontario</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/HotelsNear-g155019-d155501-Hockey_Hall_of_Fame-Toronto_Ontario.html">Hotels near Hockey Hall of Fame</a>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class="tabItem hvrIE6"><a class="tabLink pid4966" data-title="Flights" href="/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html" onclick="ta.setEvtCookie('TopNav', 'click', 'Flights', 0, this.href);">\nFlights\n</a>\n</li>\n<li class="tabItem hvrIE6"><a class="tabLink pid2795" data-title="Vacation Rentals" href="/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html" onclick="ta.setEvtCookie('TopNav', 'click', 'VacationRentals', 0, this.href)">\nVacation Rentals\n</a>\n</li>\n<li class="tabItem hvrIE6"><a class="tabLink pid4967" data-title="Restaurants" href="/Restaurants-g155019-Toronto_Ontario.html">\nRestaurants\n</a>\n</li>\n<li class="tabItem dropDown jsNavMenu hvrIE6">\n<a class="tabLink arwLink " href="/Attractions-g155019-Activities-Toronto_Ontario.html" onclick="ta.util.cookie.setPIDCookie(4967); ta.setEvtCookie('TopNav', 'click', 'ThingsToDo', 0, this.href)">\n<span class="arrow_text" data-title="Things to Do">Things to Do</span>\n<img alt="" class="arrow_dropdown_wht " height="" src="https://static.tacdn.com/img2/x.gif" width="">\n</img></a>\n<ul class="subNav">\n<li class="subItem">\n<a "="" class="subLink" href="/Attractions-g155019-Activities-Toronto_Ontario.html">All things to do in Toronto</a> </li>\n<li class="expandSubItem">\n<span class="expandSubLink" onclick=" ">\nNear Hotels\n</span>\n<ul class="secondSubNav" style="top:-0.125em; ">\n<li class="subItem">\n<a class="subLink" href="/AttractionsNear-g155019-d656431-The_Hazelton_Hotel-Toronto_Ontario.html">Things to do near The Hazelton Hotel</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/AttractionsNear-g155019-d1940841-Hotel_Le_Germain_Maple_Leaf_Square-Toronto_Ontario.html">Things to do near Hotel Le Germain Maple Leaf Square</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/AttractionsNear-g155019-d155564-Four_Seasons_Hotel_Toronto-Toronto_Ontario.html">Things to do near Four Seasons Hotel Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/AttractionsNear-g155019-d1985963-Trump_International_Hotel_Tower_Toronto-Toronto_Ontario.html">Things to do near Trump International Hotel & Tower Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/AttractionsNear-g155019-d1959496-The_Ritz_Carlton_Toronto-Toronto_Ontario.html">Things to do near The Ritz-Carlton, Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/AttractionsNear-g155019-d496106-Drake_Hotel_Toronto-Toronto_Ontario.html">Things to do near Drake Hotel Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/AttractionsNear-g155019-d6678171-Delta_Hotels_by_Marriott_Toronto-Toronto_Ontario.html">Things to do near Delta Hotels by Marriott Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/AttractionsNear-g155019-d183071-The_Omni_King_Edward_Hotel-Toronto_Ontario.html">Things to do near The Omni King Edward Hotel</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/AttractionsNear-g155019-d3578916-Shangri_La_Hotel_Toronto-Toronto_Ontario.html">Things to do near Shangri-La Hotel Toronto</a>\n</li>\n<li class="subItem">\n<a class="subLink" href="/AttractionsNear-g155019-d268507-Hotel_Le_Germain_Toronto-Toronto_Ontario.html">Things to do near Hotel Le Germain Toronto</a>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li class="tabItem hvrIE6"><a class="tabLink pid35927" data-title="Forum" href="/ShowForum-g155019-i55-Toronto_Ontario.html" onclick="ta.setEvtCookie('TopNav', 'click', 'Forum', 0, this.href)">\nForum\n</a>\n</li>\n<li class="tabItem hvrIE6"><a class="tabLink pid5087" data-title="Best of 2017" href="/TravelersChoice" onclick="ta.setEvtCookie('TopNav', 'click', 'TravelersChoice', 0, this.href)">\nBest of 2017\n</a>\n</li>\n<li class="tabItem dropDown jsNavMenu hvrIE6 ">\n<span class="tabLink arwLink" onclick=" "><span class="arrow_text" data-title="More">More</span><span class="ui_icon single-chevron-down"></span></span>\n<ul class="subNav">\n<li class="subItem ">\n<a class="subLink pid16158" href="/Travel_Guide-g155019-Toronto_Ontario.html" onclick="ta.setEvtCookie('TopNav', 'click', 'TravelGuides', 0, this.href)">Travel Guides\n</a>\n</li>\n<li class="subItem ">\n<a class="subLink pid18876" href="/apps" onclick="ta.setEvtCookie('TopNav', 'click', 'Apps', 0, this.href)">Apps\n</a>\n</li>\n<li class="subItem ">\n<a class="subLink pid34563" href="/GreenLeaders" onclick="ta.setEvtCookie('TopNav', 'click', 'GreenLeaders', 0, this.href)">GreenLeaders\n</a>\n</li>\n<li class="subItem">\n<a class="subLink" data-modal="help_center" data-options="autoReposition closeOnDocClick closeOnEscape" data-url="/uvpages/helpCenterOverlay.html" data-windowshade="" href="#" onclick="uiOverlay(event, this)" rel="nofollow">Help\xa0Centre</a> </li>\n</ul>\n</li>\n</ul> </div>\n<script>requireCallLast('masthead/header', 'createNavMenu', document.querySelectorAll('.jsNavMenu'));</script>\n</div> </div>\n<div class="secondaryNavBar" id="SECONDARY_NAV_BAR">\n<div class="masthead_search_wrapper">\n<!--trkP:dual_search_dust-->\n<!-- PLACEMENT dual_search_dust -->\n<div class="ppr_rup ppr_priv_dual_search_dust" id="taplc_dual_search_dust_0">\n<div> <div class="navSrch no_cpu"><form action="/Search" id="global_nav_search_form" method="get" onsubmit="return placementEvCall('taplc_dual_search_dust_0', 'deferred/lateHandlers.submitForm', event, this);"><span class="mainSearchContainer small" id="MAIN_SEARCH_CONTAINER"><span class="findNearLabel">Find:</span><input autocomplete="off" class="text " id="mainSearch" onblur="placementEvCall('taplc_dual_search_dust_0', 'deferred/lateHandlers.whatFocused', event, this)" onfocus="this.select();placementEvCall('taplc_dual_search_dust_0', 'deferred/lateHandlers.whatFocused', event, this)" onkeydown="if (ta && (event.keyCode || event.which) === 13){ta.setEvtCookie('TopNav_Search', 'Action', 'Hit_Enter_toSRP', 0, '/Search');}" placeholder="Hotels, Restaurants, Things to Do" type="text" value="Things to Do"/></span><div class="geoScopeContainer large" id="GEO_SCOPE_CONTAINER"><span class="findNearLabel">Near:</span><input class="text geoScopeInput " id="GEO_SCOPED_SEARCH_INPUT" onblur="placementEvCall('taplc_dual_search_dust_0', 'deferred/lateHandlers.whereFocused', event, this)" onfocus="this.select();placementEvCall('taplc_dual_search_dust_0', 'deferred/lateHandlers.whereFocused', event, this)" placeholder="Enter a destination" type="text" value="Toronto, Ontario"/></div><div class="geoExample hidden">Enter a destination</div><button class="search_button" id="SEARCH_BUTTON" name="sub-search" onclick="if (ta && event.clientY) { document.getElementById('global_nav_search_form').elements['pid'].value=3825; }return placementEvCall('taplc_dual_search_dust_0', 'deferred/lateHandlers.submitClicked', event, this);" type="submit"><div id="SEARCH_BUTTON_CONTENT"><label class="staticSearchLabel ui_icon search"></label>\n<div class="inner">Search</div> </div><span class="loadingBubbles hidden" data-text="Search" id="LOADING_BUBBLE_CONTAINER"> <span></span><span></span><span></span><span></span><span></span></span></button><input id="TYPEAHEAD_GEO_ID" name="geo" type="hidden" value="155019"><input name="pid" type="hidden" value="3826"><input id="TOURISM_REDIRECT" name="redirect" type="hidden" value=""><input id="MASTAHEAD_TYPEAHEAD_START_TIME" name="startTime" type="hidden" value=""><input id="MASTAHEAD_TYPEAHEAD_UI_ORIGIN" name="uiOrigin" type="hidden" value=""><input id="MASTHEAD_MAIN_QUERY" name="q" type="hidden" value=""><input name="returnTo" type="hidden" value="http%3A__2F____2F__www__2E__tripadvisor__2E__ca__2F__Attractions__2D__g155019__2D__Activities__2D__Toronto__5F__Ontario__2E__html"><input name="searchSessionId" type="hidden" value="40F05E45FA2943DDA2D9271243A6BFF71487732595281ssid"/></input></input></input></input></input></input></input></form><span class="inputMask hidden"></span></div></div></div>\n<!--etk-->\n</div> <div class="easyClear"></div>\n</div>\n<div class=" hotels_lf_redesign " id="MAINWRAP">\n<div class="attractions_list restaurants_list">\n<!--trkP:hotels_redesign_header-->\n<!-- PLACEMENT hotels_redesign_header -->\n<div class="ppr_rup ppr_priv_hotels_redesign_header" id="taplc_hotels_redesign_header_0">\n<div class="attractions_list" id="hotels_lf_header">\n<style type="text/css">\n#LOCATION_OVERVIEW_FRIEND_SUMMARY_CONTENT {display: none;}\n</style>\n<div class="tag_header p13n_no_see_through hotels_lf_header_wrap" id="p13n_tag_header_wrap">\n<div class="attractions_list no_bottom_padding" id="p13n_tag_header">\n<!--trkP:breadcrumb_desktop-->\n<!-- PLACEMENT breadcrumb_desktop -->\n<div class="ppr_rup ppr_priv_breadcrumb_desktop" id="taplc_breadcrumb_desktop_0">\n<div class="crumbs_container"><div class="crumbs_desktop crumbs_desktop_limited_width_1132 crumbs_desktop_light_color"><ul><li itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/Tourism-g153339-Canada-Vacations.html" itemprop="url" onclick="ta.setEvtCookie('Breadcrumbs', 'click', 'Country', 1, this.href);"><span itemprop="title">Canada</span></a><span class="separator">\u203a</span></li><li itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/Tourism-g154979-Ontario-Vacations.html" itemprop="url" onclick="ta.setEvtCookie('Breadcrumbs', 'click', 'Province', 2, this.href);"><span itemprop="title">Ontario</span></a><span class="separator">\u203a</span></li><li itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/Tourism-g155019-Toronto_Ontario-Vacations.html" itemprop="url" onclick="ta.setEvtCookie('Breadcrumbs', 'click', 'City', 3, this.href);"><span itemprop="title">Toronto</span></a><span class="separator">\u203a</span></li><li>Things to do in Toronto</li></ul></div></div></div>\n<!--etk-->\n<div class="easyClear" id="p13n_welcome_message">\n<h1 class="p13n_geo_hotels autoResize" id="HEADING">\nThings to Do in Toronto\n</h1>\n</div>\n</div>\n<script type="text/javascript">(function() { ta.store('ta.p13n.dynamic_tag_ordering', true); })();</script>\n<script type="text/javascript">(function() { ta.store('ta.p13n.prodp13nIsTablet', false); })();</script>\n</div>\n<div class="map_launch_stub">\n</div>\n</div>\n</div>\n<!--etk-->\n</div>\n<div class="Attractions prodp13n_jfy_overflow_visible " id="MAIN">\n<div class="col easyClear bodLHN poolA new_meta_chevron_v2" id="BODYCON">\n<div class="overview_above_fold full_width" id="ATTR_SUBHEAD">\n<div class="overview_map map_narrow al_sidebar map_cta_wrapper" onclick="requireCallLast('ta/maps/opener', 'open', 2)" onmouseout="ta.call('ta.locationDetail.mapMouseOver', event, this)" onmouseover="ta.call('ta.locationDetail.mapMouseOver', event, this)">\n<div class="map_cta js_mapThumb" id="FMRD">View Map <div class="js_floatContent" title="Map">\n<script type="text/javascript">\nwindow.mapDivId = 'map0Div';\nwindow.map0Div = {\nlat: 43.64381,\nlng: -79.38554,\nzoom: null,\nlocId: 155019,\ngeoId: 155019,\nisAttraction: false,\nisEatery: false,\nisLodging: false,\nisNeighborhood: false,\ntitle: "Toronto ",\nhomeIcon: true,\nurl: "/Tourism-g155019-Toronto_Ontario-Vacations.html",\nminPins: [\n['hotel', 20],\n['restaurant', 20],\n['attraction', 20],\n['vacation_rental', 0] ],\nunits: 'km',\ngeoMap: false,\ntabletFullSite: false,\nreuseHoverDivs: false,\nfiltersType: 'Attractions',\nnoSponsors: true };\nta.store('infobox_js', 'https://static.tacdn.com/js3/infobox-c-v21051733989a.js');\nta.store("ta.maps.apiKey", "");\n(function() {\nvar onload = function() {\nif (window.location.hash == "#MAPVIEW") {\nta.run("ta.mapsv2.Factory.handleHashLocation", {}, true);\n}\n}\nif (window.addEventListener) {\nif (window.history && window.history.pushState) {\nwindow.addEventListener("popstate", function(e) {\nta.run("ta.mapsv2.Factory.handleHashLocation", {}, false);\n});\n}\nwindow.addEventListener('load', onload);\n}\nelse if (window.attachEvent) {\nwindow.attachEvent('onload', onload);\n}\n})();\nta.store("mapsv2.show_sidebar", true);\nta.store('mapsv2_restaurant_reservation_js', ["https://static.tacdn.com/js3/ta-mapsv2-restaurant-reservation-c-v2428523766a.js"]);\nta.store('mapsv2.typeahead_css', "https://static.tacdn.com/css2/maps_typeahead-v22429996919a.css");\nta.store('mapsv2.neighborhoods', true);\nta.store('mapsv2.neighborhoods_list', true);\nta.store('mapsv2.geoName', 'Toronto');\nta.store('mapsv2.map_addressnotfound', "Address not found"); ta.store('mapsv2.map_addressnotfound3', "We couldn\\'t find that location near {0}. Please try another search."); ta.store('mapsv2.directions', "Directions from {0} to {1}"); ta.store('mapsv2.enter_dates', "Enter dates for best prices"); ta.store('mapsv2.best_prices', "Best prices for your stay"); ta.store('mapsv2.list_accom', "List of accommodations"); ta.store('mapsv2.list_hotels', "List of hotels"); ta.store('mapsv2.list_vrs', "List of vacation rentals"); ta.store('mapsv2.more_accom', "More accommodations"); ta.store('mapsv2.more_hotels', "More hotels"); ta.store('mapsv2.more_vrs', "More Vacation Rentals"); ta.store('mapsv2.sold_out_on_1', "SOLD OUT on 1 site"); ta.store('mapsv2.sold_out_on_y', "SOLD OUT on 2 sites"); </script>\n<div class="whatsNearbyV2" data-navarea-placement="@trigger">\n<div class="js_map" id="map0Div"></div>\n<div data-navarea-placement="Map_Detail_Other" id="Map_Detail_Other_Div" style="display: none;"></div>\n</div>\n<div id="LAYERS_FILTER_EXPANDED_ID" style="display:none">\n<div class="title layersTitle">\n<div class="card-left-icon"></div>\n<div class="card-title-text">Also show</div> <div class="card-right-icon"></div>\n</div>\n<div class="layersFilter">\n<div class="nearbyFilterList">\n<div class="nearbyFilterItem hotel ">\n<div class="nearbyFilterTextAndMark">\n<div class="layersFilterText">\n<div class="nearbyFilterTextCell">\nHotels\n</div>\n</div>\n<div class="nearbyFilterMark hotelMark">\n</div> </div>\n<div class="nearbyFilterImage hotel ">\n</div>\n</div>\n<div class="nearbyFilterItem restaurant ">\n<div class="nearbyFilterTextAndMark">\n<div class="layersFilterText">\n<div class="nearbyFilterTextCell">\nRestaurants\n</div>\n</div>\n<div class="nearbyFilterMark restaurantMark">\n</div> </div>\n<div class="nearbyFilterImage restaurant ">\n</div>\n</div>\n<div class="nearbyFilterItem neighborhood ">\n<div class="nearbyFilterTextAndMark">\n<div class="layersFilterText">\n<div class="nearbyFilterTextCell">\nNeighbourhoods\n</div>\n</div>\n<div class="nearbyFilterMark rentalMark">\n</div> </div>\n<div class="nearbyFilterImage neighborhood ">\n</div>\n</div>\n</div>\n</div>\n</div>\n<div id="LAYERS_FILTER_COLLAPSED_ID" style="display:none">\n<div class="title layersTitle">\n<div class="card-left-icon"></div>\n<div class="card-title-text">Also show</div> <div class="card-right-icon"></div>\n</div>\n</div>\n<script type="text/javascript">ta.store('mapsv2.search', true);</script>\n<div class="poi_map_search_panel uicontrol">\n<div class="address_search ">\n<form action="" method="get" onsubmit="ta.call('ta.mapsv2.SearchBar.addAddress', event, this, 'MAP_ADD_LOCATION_INPUT', 'MAP_ADD_LOCATION_ERROR', true, false);return false;">\n<input autocomplete="off" class="text" defaultvalue="Search by address or point of interest" id="MAP_ADD_LOCATION_INPUT" name="address" onfocus="ta.trackEventOnPage('Search_Near_Map', 'Focus', '');ta.call('ta.mapsv2.SearchBar.bindTypeAheadFactory', event, this, 'MAP_ADD_LOCATION_ERROR', 155019, true, false);" onkeydown="ta.call('ta.mapsv2.SearchBar.onBeforeChange', event, this, 'MAP_ADD_LOCATION_ERROR');" onkeyup="ta.call('ta.mapsv2.SearchBar.onChange', event, this, 'MAP_ADD_LOCATION_ERROR');" type="text" value="Search by address or point of interest"/>\n<input class="search_mag_glass" src="https://static.tacdn.com/img2/x.gif" type="image">\n<input class="delete" onclick="ta.call('ta.mapsv2.SearchBar.onClear', event, this, 'MAP_ADD_LOCATION_INPUT', 'MAP_ADD_LOCATION_ERROR'); return false;" src="https://static.tacdn.com/img2/x.gif" type="image">\n</input></input></form>\n</div> <div class="error_label hidden" id="MAP_ADD_LOCATION_ERROR"></div>\n</div>\n<div class="uicontrol">\n<div class="mapControls">\n<div class="zoomControls styleguide">\n<div class="zoom zoomIn ui_icon plus"></div>\n<div class="zoom zoomOut ui_icon minus"></div>\n</div>\n<div class="mapTypeControls">\n<div class="mapType map enabled"><div>Map</div></div><div class="mapType hyb disabled"><div>Satellite</div></div> </div>\n<div class="zoomExcessBox">\n<div class="zoomExcessContainer"><div class="zoomExcessInfo">Map updates are paused. Zoom in to see updated info.</div></div> <div class="resetZoomContainer"><div class="resetZoomBox">Reset zoom</div></div> </div>\n</div>\n<div class="spinner-centering-wrap">\n<div class="updating_map">\n<div class="updating_wrapper">\n<img id="lazyload_119442712_1" src="https://static.tacdn.com/img2/x.gif"/>\n<span class="updating_text">Updating Map...</span> </div>\n</div>\n</div>\n</div>\n<div class="filters_enabled_flyout">\nYour filters are still active. </div>\n<div class="no_pins_flyout">\n<div class="flyout_text">There are no pins in your viewport. Try moving the map or changing your filters.</div> <img class="close_x" src="https://static.tacdn.com/img2/x.gif"/>\n</div>\n<div class="tile_disabled_flyout_text hidden">\nThank you for your interest.<br/>This feature is coming soon. </div>\n<div class="js_footerPocket hidden"></div>\n<div id="NEIGHBORHOOD_LIST_VIEW_EXPANDED">\n<div class="title">\n<div class="card-left-icon"></div>\n<div class="card-title-text">Neighbourhoods</div>\n<div class="card-right-icon"></div>\n</div>\n<ul class="mapsv2-listarea">\n<li><img class="mapsv2-loading" data-src="https://static.tacdn.com/img2/generic/site/loading_anim_gry_sml.gif"/></li>\n</ul>\n</div>\n<div class="mapsv2-cardcollapsed" id="NEIGHBORHOOD_LIST_VIEW_COLLAPSED">\n<div class="title">\n<div class="card-left-icon"></div>\n<div class="card-title-text">Neighbourhoods</div>\n<div class="card-right-icon"></div>\n</div>\n</div>\n<div class="close-street-view hidden">\nReturn to Map </div>\n</div> </div>\n</div>\n<div class="expert_guides">\n<div class="al_border">\n<link data-rup="triplist_cta_rhs_box" href="https://static.tacdn.com/css2/triplist_cta_rhs_box-v23305236800a.css" rel="stylesheet" type="text/css"/>\n<div class="triplist-cta" data-category="Attractions_TOP">\n<div class="guide_label">\nTravel Guides </div>\n<div class="highlight wrap">\n<div class="guide featured_guide">\n<a data-category="Attractions_TOP" data-event="click" data-label="big_photo" href="/Guide-g155019-k4844-Toronto_Ontario.html">\n<span class="shadow"></span>\n<img alt="" src="https://media-cdn.tripadvisor.com/media/photo-s/08/85/50/be/the-view.jpg">\n<span class="details">3 Days in Toronto</span>\n</img></a>\n</div>\n<div class="guide">\n<a data-category="Attractions_TOP" data-event="click" data-label="photo_1" href="/Guide-g155019-k4805-Toronto_Ontario.html">\n<span class="shadow"></span>\n<img src="https://media-cdn.tripadvisor.com/media/photo-s/06/d0/bd/68/treetop-trekking-brampton.jpg"/>\n<span class="details">Guide to Toronto for Families</span>\n</a>\n</div>\n<div class="guide">\n<a data-category="Attractions_TOP" data-event="click" data-label="photo_2" href="/Guide-g155019-k4806-Toronto_Ontario.html">\n<span class="shadow"></span>\n<img src="https://media-cdn.tripadvisor.com/media/photo-s/04/0d/59/f6/high-park.jpg"/>\n<span class="details">Guide to Toronto Outdoors</span>\n</a>\n</div>\n<div class="see_all_wrapper">\n<a class="see_all" data-category="Attractions_TOP" data-event="click" data-label="SeeAll" href="/Travel_Guide-g155019-Toronto_Ontario.html">\n<img alt="" class="sprite-chevron2_white" src="https://static.tacdn.com/img2/x.gif">\n</img></a>\n</div>\n</div>\n</div>\n</div>\n</div>\n</div>\n<div class="attraction_list_all full_width wrap rollup_overview" id="ATTRACTIONS_NARROW">\n<div class="overview_sidebar sidebar al_sidebar scrollAdSidebar" id="leftNav">\n<div class="overview_above_fold full_width" id="ATTR_SUBHEAD_ABOVE_FILTERS">\n</div>\n<div id="ATTRACTION_FILTER">\n<div class="filter_header al_border">\nATTRACTION TYPE: </div>\n<div class="filter_list al_border">\n<div class="filter filter_xor " id="ATTR_CATEGORY_47">\n<a data-params="MGlLXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQ3LVRvcm9udG9fT250YXJpby5odG1sX3BoNA==" href="/Attractions-g155019-Activities-c47-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '47', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-47" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Sights & Landmarks</span>\n<span class="filter_count">(157)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_57">\n<a data-params="Z2wwXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzU3LVRvcm9udG9fT250YXJpby5odG1sX3RVcw==" href="/Attractions-g155019-Activities-c57-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '57', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-57" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Nature & Parks</span>\n<span class="filter_count">(100)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_49">\n<a data-params="TnNmXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQ5LVRvcm9udG9fT250YXJpby5odG1sX3dhWQ==" href="/Attractions-g155019-Activities-c49-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '49', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-49" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Museums</span>\n<span class="filter_count">(84)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_48">\n<a data-params="VFdOXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQ4LVRvcm9udG9fT250YXJpby5odG1sXzh5Tw==" href="/Attractions-g155019-Activities-c48-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '48', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-48" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Zoos & Aquariums</span>\n<span class="filter_count">(4)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_26">\n<a data-params="NkRuXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzI2LVRvcm9udG9fT250YXJpby5odG1sX3g0WQ==" href="/Attractions-g155019-Activities-c26-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '26', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-26" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Shopping</span>\n<span class="filter_count">(157)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_42">\n<a data-params="ckkxXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLVRvcm9udG9fT250YXJpby5odG1sX05tbQ==" href="/Attractions-g155019-Activities-c42-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '42', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-42" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Tours</span>\n<span class="filter_count">(119)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_61">\n<a data-params="RXBKXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzYxLVRvcm9udG9fT250YXJpby5odG1sX3lNTw==" href="/Attractions-g155019-Activities-c61-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '61', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-61" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Outdoor Activities</span>\n<span class="filter_count">(103)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_58">\n<a data-params="bHpHXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzU4LVRvcm9udG9fT250YXJpby5odG1sX3FLNQ==" href="/Attractions-g155019-Activities-c58-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '58', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-58" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Concerts & Shows</span>\n<span class="filter_count">(84)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_56">\n<a data-params="REdMXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzU2LVRvcm9udG9fT250YXJpby5odG1sX0ZVaw==" href="/Attractions-g155019-Activities-c56-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '56', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-56" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Fun & Games</span>\n<span class="filter_count">(128)</span>\n</img></a>\n</div>\n<div class="collapse collapsed">\n<div class="filter filter_xor " id="ATTR_CATEGORY_36">\n<a data-params="QWhuXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzM2LVRvcm9udG9fT250YXJpby5odG1sX1A4MA==" href="/Attractions-g155019-Activities-c36-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '36', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-36" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Food & Drink</span>\n<span class="filter_count">(40)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_55">\n<a data-params="Yk1SXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzU1LVRvcm9udG9fT250YXJpby5odG1sX2ZETQ==" href="/Attractions-g155019-Activities-c55-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '55', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-55" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Boat Tours & Water Sports</span>\n<span class="filter_count">(33)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_20">\n<a data-params="c1BHXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzIwLVRvcm9udG9fT250YXJpby5odG1sXzRncA==" href="/Attractions-g155019-Activities-c20-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '20', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-20" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Nightlife</span>\n<span class="filter_count">(265)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_40">\n<a data-params="dDRSXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQwLVRvcm9udG9fT250YXJpby5odG1sX2tZYg==" href="/Attractions-g155019-Activities-c40-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '40', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-40" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Spas & Wellness</span>\n<span class="filter_count">(104)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_59">\n<a data-params="Z1RjXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzU5LVRvcm9udG9fT250YXJpby5odG1sX3BCZw==" href="/Attractions-g155019-Activities-c59-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '59', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-59" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Transportation</span>\n<span class="filter_count">(35)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_60">\n<a data-params="dmFCXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzYwLVRvcm9udG9fT250YXJpby5odG1sX2s3UQ==" href="/Attractions-g155019-Activities-c60-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '60', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-60" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Traveller Resources</span>\n<span class="filter_count">(14)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_41">\n<a data-params="UUlRXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQxLVRvcm9udG9fT250YXJpby5odG1sXzdyag==" href="/Attractions-g155019-Activities-c41-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '41', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-41" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Classes & Workshops</span>\n<span class="filter_count">(31)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_52">\n<a data-params="TThVXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzUyLVRvcm9udG9fT250YXJpby5odG1sXzRKYQ==" href="/Attractions-g155019-Activities-c52-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '52', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-52" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Water & Amusement Parks</span>\n<span class="filter_count">(4)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_53">\n<a data-params="MThOXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzUzLVRvcm9udG9fT250YXJpby5odG1sX0NMbw==" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '53', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-53" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Casinos & Gambling</span>\n<span class="filter_count">(2)</span>\n</img></a>\n</div>\n<div class="filter filter_xor " id="ATTR_CATEGORY_62">\n<a data-params="SkFhXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzYyLVRvcm9udG9fT250YXJpby5odG1sX2FCMw==" href="/Attractions-g155019-Activities-c62-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'L2', '62', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<img alt="" class="filter_icon sprite-attraction-cgy-62" src="https://static.tacdn.com/img2/x.gif">\n<span class="filter_name">Events</span>\n<span class="filter_count">(4)</span>\n</img></a>\n</div>\n</div>\n<div class="filter filter_xor">\n<a class="show" href="#" onclick="ta.call('ta.servlet.Attractions.narrow.slideOut',event,this, ta.id('ATTRACTION_FILTER')); ta.trackEventOnPage('Attraction_Filter', 'Click', 'More', 1);">More</a> <a class="show hidden" href="#" onclick="ta.call('ta.servlet.Attractions.narrow.slideIn',event,this, ta.id('ATTRACTION_FILTER'))">Less</a> </div>\n</div>\n</div>\n<div id="NEIGHBORHOOD_FILTER">\n<div class="filter_header al_border">\nLOCATION: </div>\n<div class="filter_list al_border">\n<div class="filter_sub_header">\nNeighbourhoods: </div>\n<div class="filter ">\n<a data-params="TDBnXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkwMi1Ub3JvbnRvX09udGFyaW8uaHRtbF9QMEU=" href="/Attractions-g155019-Activities-zfn8150902-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'Downtown', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">Downtown</span>\n<span class="filter_count">(254)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="djJkXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkwNC1Ub3JvbnRvX09udGFyaW8uaHRtbF9tT3E=" href="/Attractions-g155019-Activities-zfn8150904-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'Downtown West', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">Downtown West</span>\n<span class="filter_count">(174)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="VXJ5Xy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkxMy1Ub3JvbnRvX09udGFyaW8uaHRtbF9BdUk=" href="/Attractions-g155019-Activities-zfn8150913-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'Midtown', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">Midtown</span>\n<span class="filter_count">(114)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="d1lxXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkyMy1Ub3JvbnRvX09udGFyaW8uaHRtbF9JZ1Y=" href="/Attractions-g155019-Activities-zfn8150923-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'North York', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">North York</span>\n<span class="filter_count">(106)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="a3FpXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkwNy1Ub3JvbnRvX09udGFyaW8uaHRtbF9ST0o=" href="/Attractions-g155019-Activities-zfn8150907-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'Queen Street and West Queen West', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">Queen Street and West Queen West</span>\n<span class="filter_count">(86)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="dWJWXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkxOS1Ub3JvbnRvX09udGFyaW8uaHRtbF8xaHg=" href="/Attractions-g155019-Activities-zfn8150919-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'West End', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">West End</span>\n<span class="filter_count">(81)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="b1JmXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkwMC1Ub3JvbnRvX09udGFyaW8uaHRtbF94Tmc=" href="/Attractions-g155019-Activities-zfn8150900-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'Scarborough', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">Scarborough</span>\n<span class="filter_count">(71)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="alpoXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkyNC1Ub3JvbnRvX09udGFyaW8uaHRtbF9ncWc=" href="/Attractions-g155019-Activities-zfn8150924-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'Etobicoke', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">Etobicoke</span>\n<span class="filter_count">(68)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="a0FnXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkxMC1Ub3JvbnRvX09udGFyaW8uaHRtbF9pQ0k=" href="/Attractions-g155019-Activities-zfn8150910-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'East End', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">East End</span>\n<span class="filter_count">(64)</span>\n</a>\n</div>\n<div class="collapse collapsed">\n<div class="filter ">\n<a data-params="d0dQXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkwOC1Ub3JvbnRvX09udGFyaW8uaHRtbF9XYVA=" href="/Attractions-g155019-Activities-zfn8150908-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'Chinatown', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">Chinatown</span>\n<span class="filter_count">(33)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="ZUQwXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkxNi1Ub3JvbnRvX09udGFyaW8uaHRtbF90Qkg=" href="/Attractions-g155019-Activities-zfn8150916-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'North End', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">North End</span>\n<span class="filter_count">(29)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="WXVtXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuOTg0Mi1Ub3JvbnRvX09udGFyaW8uaHRtbF96eXU=" href="/Attractions-g155019-Activities-zfn9842-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'The Annex', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">The Annex</span>\n<span class="filter_count">(26)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="MENMXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkyMS1Ub3JvbnRvX09udGFyaW8uaHRtbF9DMVI=" href="/Attractions-g155019-Activities-zfn8150921-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'East York', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">East York</span>\n<span class="filter_count">(24)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="YlpLXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkwOS1Ub3JvbnRvX09udGFyaW8uaHRtbF9SMks=" href="/Attractions-g155019-Activities-zfn8150909-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'Little Italy', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">Little Italy</span>\n<span class="filter_count">(21)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="UDNBXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuODE1MDkyMi1Ub3JvbnRvX09udGFyaW8uaHRtbF95TjY=" href="/Attractions-g155019-Activities-zfn8150922-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'York-Crosstown', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">York-Crosstown</span>\n<span class="filter_count">(15)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="RWlLXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuOTg4NS1Ub3JvbnRvX09udGFyaW8uaHRtbF9WQWE=" href="/Attractions-g155019-Activities-zfn9885-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'Yorkville', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">Yorkville</span>\n<span class="filter_count">(13)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="SnNqXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuOTc2MC1Ub3JvbnRvX09udGFyaW8uaHRtbF8ybUg=" href="/Attractions-g155019-Activities-zfn9760-Toronto_Ontario.html" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'Harbourfront', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">Harbourfront</span>\n<span class="filter_count">(11)</span>\n</a>\n</div>\n<div class="filter ">\n<a data-params="NVVNXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZuMjk0NjQtVG9yb250b19PbnRhcmlvLmh0bWxfTHFL" onclick="ta.trackEventOnPage('Attraction_Filter', 'Neighborhood', 'The Beaches', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this);"> <span class="filter_name">The Beaches</span>\n<span class="filter_count">(2)</span>\n</a>\n</div>\n</div>\n<div class="filter">\n<a class="show" href="#" onclick="ta.call('ta.servlet.Attractions.narrow.slideOut',event,this, ta.id('NEIGHBORHOOD_FILTER'))">More</a> <a class="show hidden" href="#" onclick="ta.call('ta.servlet.Attractions.narrow.slideIn',event,this, ta.id('NEIGHBORHOOD_FILTER'))">Less</a> </div>\n</div>\n<div class="filter_list al_border">\n<div class="filter_sub_header">\nAirports: </div>\n<div class="filter " id="airport_filter_7917678">\n<a data-params="UlJwXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtemZyNzkxNzY3OC1Ub3JvbnRvX09udGFyaW8uaHRtbF9zeXM=" onclick="ta.trackEventOnPage('Attraction_Filter', 'Waypoint', 'Toronto Pearson Intl Airport', 1);ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)"> <span class="filter_name">Toronto Pearson Intl Airport</span>\n<span class="filter_count">(1)</span>\n</a>\n</div>\n</div>\n</div>\n<div class="ad iab_medRec">\n<div class="adInner gptAd" id="gpt-ad-300x250-300x600"></div>\n</div>\n<div class="bx01 spotlight_attraction">\n<h3 class="title">Sponsored Attraction</h3> <div class="spotlightAttr">\n<div class="content wrap">\n<div class="wrap">\n<div class="photo">\n<img alt="provided by: Black Creek Pioneer Village" height="80" id="lazyload_119442712_0" src="https://static.tacdn.com/img2/x.gif" width="115"/>\n</div>\n<div class="desc">\n<b>Black Creek Pioneer Village:</b> In the buildings, gardens and farmyards you\u2019ll find historical interpreters in authentic period dress who will demonstrate and explain how people lived, worked and played in 19th century Ontario.\n</div>\n</div>\n<div class="spotlightFooter">\n<a class="spotlightTaLink" href="/Attraction_Review-g155019-d187010-Reviews-Black_Creek_Pioneer_Village-Toronto_Ontario.html">Read more about Black Creek Pioneer Village\xa0\xa0\xbb</a>\n<div class="spotlightAttrLink">\nDescription provided by:\xa0<a href="/ShowUrl?url=http%253A%252F%252Fwww.blackcreek.ca%252F&partnerKey=1&urlKey=54ee5a8a25b0cdcef" target="_blank">Black Creek Pioneer Village</a>\n</div>\n</div>\n</div> </div>\n</div>\n<div class="ad iab_medRec">\n<div class="adInner gptAd" id="gpt-ad-300x250-300x600-bottom"></div>\n</div>\n<!-- smoke:rbrDisplay -->\n</div>\n<div class="overview_balance al_center_rail scrollAdMain" id="AL_LIST_CONTAINER">\n<!--trkP:attraction_viator_categories-->\n<!-- PLACEMENT attraction_viator_categories -->\n<div class="ppr_rup ppr_priv_attraction_viator_categories" id="taplc_attraction_viator_categories_0">\n<script language="JavaScript">if (ta.plc_attraction_viator_categories_0_handlers && ta.plc_attraction_viator_categories_0_handlers.reset) {ta.plc_attraction_viator_categories_0_handlers.reset();}</script><div class="top_picks_container"><div class="top_picks_section group_insider_picks" data-group-id="insider_picks" data-group-row="1"><div class="section_header"><div class="section_title">Top Selling Tours & Activities <span class="see_more_wrapper">| <span class="see_more" onclick="ta.plc_attraction_viator_categories_0_handlers.openAttractionProducts('/Attraction_Products-g155019-Toronto_Ontario.html');">See more</span></span></div> </div><div class="tile_container"><div class="tile" data-product="30403"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=30403&d=6018122&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Day Trip from Toronto" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/3040/SITours/niagara-falls-day-trip-from-toronto-in-toronto-149572.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=30403&d=6018122&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Day Trip from Toronto</a></div><div class="price"><div class="from">from <span class="autoResize">US$128.05*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">434 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=30403&d=6018122&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="2640YYZ_TR"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=2640YYZ_TR&d=186168&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Toronto CityPass" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/2640/SITours/toronto-citypass-in-toronto-325619.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=2640YYZ_TR&d=186168&aidSuffix=xsell&partner=Viator', 'title');">Toronto CityPass</a></div><div class="price"><div class="from">from <span class="autoResize">US$64.00*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">137 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=2640YYZ_TR&d=186168&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="30403A"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=30403A&d=2038388&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Freedom Day Trip from Toronto" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/3040/SITours/niagara-falls-freedom-day-trip-from-toronto-in-toronto-150902.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=30403A&d=2038388&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Freedom Day Trip from Toronto</a></div><div class="price"><div class="from">from <span class="autoResize">US$102.28*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">160 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=30403A&d=2038388&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div><div class="more_top_picks hidden"><div class="tile_container"><div class="tile" data-product="30408"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=30408&d=155483&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Toronto City Hop-on Hop-off Tour" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/3040/SITours/toronto-city-hop-on-hop-off-tour-in-toronto-150900.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=30408&d=155483&aidSuffix=xsell&partner=Viator', 'title');">Toronto City Hop-on Hop-off Tour</a></div><div class="price"><div class="from">from <span class="autoResize">US$33.57*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no40 "><img alt="4 of 5 stars" class="sprite-ratings" content="4" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">284 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=30408&d=155483&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="16908P1"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=16908P1&d=5031404&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Ripley's Aquarium of Canada" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/16908/SITours/ripley-s-aquarium-of-canada-in-toronto-229728.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=16908P1&d=5031404&aidSuffix=xsell&partner=Viator', 'title');">Ripley's Aquarium of Canada</a></div><div class="price"><div class="from">from <span class="autoResize">US$27.34*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">19 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=16908P1&d=5031404&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="2528ROMAN"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=2528ROMAN&d=155483&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Private Tour: Romantic Toronto Helicopter Ride" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/2528/SITours/private-tour-romantic-toronto-helicopter-ride-in-toronto-21976.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=2528ROMAN&d=155483&aidSuffix=xsell&partner=Viator', 'title');">Private Tour: Romantic Toronto Helicopter Ride</a></div><div class="price"><div class="from">from <span class="autoResize">US$120.88*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">12 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=2528ROMAN&d=155483&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div><div class="tile_container"><div class="tile" data-product="2528TOUR1"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=2528TOUR1&d=155498&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="7-Minute Helicopter Tour Over Toronto" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/2528/SITours/7-minute-helicopter-tour-over-toronto-in-toronto-148269.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=2528TOUR1&d=155498&aidSuffix=xsell&partner=Viator', 'title');">7-Minute Helicopter Tour Over Toronto</a></div><div class="price"><div class="from">from <span class="autoResize">US$87.35*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no40 "><img alt="4 of 5 stars" class="sprite-ratings" content="4" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">25 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=2528TOUR1&d=155498&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="5605ETHNIC"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5605ETHNIC&d=185113&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Culinary Walking Tour of Greektown or Leslieville" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/5605/SITours/culinary-walking-tour-of-greektown-or-leslieville-in-toronto-112963.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5605ETHNIC&d=185113&aidSuffix=xsell&partner=Viator', 'title');">Culinary Walking Tour of Greektown or Leslieville</a></div><div class="price"><div class="from">from <span class="autoResize">US$69.70*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">22 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5605ETHNIC&d=185113&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="5605ITALY"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5605ITALY&d=155492&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Small-Group Gourmet Dinner Tour of Toronto's Little Italy" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/5605/SITours/small-group-gourmet-dinner-tour-of-toronto-s-little-italy-in-toronto-192374.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5605ITALY&d=155492&aidSuffix=xsell&partner=Viator', 'title');">Small-Group Gourmet Dinner Tour of Toronto's Little Italy</a></div><div class="price"><div class="from">from <span class="autoResize">US$131.46*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">7 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5605ITALY&d=155492&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div><div class="tile_container"><div class="tile" data-product="3594EC"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3594EC&d=184960&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Toronto Inner Harbour Evening Cruise" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/3594/SITours/toronto-inner-harbour-evening-cruise-in-toronto-113654.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3594EC&d=184960&aidSuffix=xsell&partner=Viator', 'title');">Toronto Inner Harbour Evening Cruise</a></div><div class="price"><div class="from">from <span class="autoResize">US$19.48*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no40 "><img alt="4 of 5 stars" class="sprite-ratings" content="4" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">25 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3594EC&d=184960&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div></div></div><div class="see_more_groups"><span onclick="ta.plc_attraction_viator_categories_0_handlers.openAttractionProducts('/Attraction_Products-g155019-Toronto_Ontario.html');">See More Top Selling Tours & Activities</span> </div><div class="more_groups hidden"><div class="top_picks_section group_5" data-group-id="5" data-group-row="2"><div class="section_header"><div class="section_title">Day Trips & Excursions<span class="see_more_wrapper"> | <span class="see_more" data-hide-label="See less" data-show-label="See more" onclick="ta.plc_attraction_viator_categories_0_handlers.toggleGroup(this, 5)">See more</span></span></div> </div><div class="tile_container primary"><div class="tile" data-product="3594P6"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3594P6&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Tour from Toronto with Optional Boat Ride and Lunch" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/3594/SITours/niagara-falls-tour-from-toronto-with-optional-boat-ride-and-lunch-in-toronto-194278.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3594P6&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Tour from Toronto with Optional Boat Ride and Lunch</a></div><div class="price"><div class="from">from <span class="autoResize">US$58.56*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">40 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3594P6&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="304012"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=304012&d=6018122&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Evening Lights Day Trip from Toronto" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/3040/SITours/niagara-falls-evening-lights-day-trip-from-toronto-in-toronto-47663.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=304012&d=6018122&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Evening Lights Day Trip from Toronto</a></div><div class="price"><div class="from">from <span class="autoResize">US$136.64*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">204 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=304012&d=6018122&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="8711P1"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=8711P1&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Small-Group Tour from Toronto" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/8711/SITours/niagara-falls-small-group-tour-from-toronto-in-toronto-187092.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=8711P1&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Small-Group Tour from Toronto</a></div><div class="price"><div class="from">from <span class="autoResize">US$163.23*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no50 "><img alt="5 of 5 stars" class="sprite-ratings" content="5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">57 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=8711P1&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div><div class="more_top_picks hidden"><div class="tile_container"><div class="tile" data-product="7620P1"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7620P1&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Day Tour from Toronto" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/7620/SITours/niagara-falls-day-tour-from-toronto-in-niagara-falls-205947.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7620P1&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Day Tour from Toronto</a></div><div class="price"><div class="from">from <span class="autoResize">US$69.70*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">77 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7620P1&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="3040P10"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3040P10&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Day Tour with Hop on Hop off Toronto City Tour" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/3040/SITours/niagara-falls-day-tour-with-hop-on-hop-off-toronto-city-tour-in-toronto-317252.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3040P10&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Day Tour with Hop on Hop off Toronto City Tour</a></div><div class="price"><div class="from">from <span class="autoResize">US$146.01*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">6 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3040P10&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="29900P8"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=29900P8&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Illumination Tour with Evening Fireworks Show and..." src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/29900/SITours/niagara-falls-illumination-tour-with-evening-fireworks-show-and-in-toronto-329368.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=29900P8&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Illumination Tour with Evening Fireworks Show and...</a></div><div class="price"><div class="from">from <span class="autoResize">US$175.68*</span> </div></div><div class="clear"></div></div><div class="rating_container"><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=29900P8&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div><div class="tile_container"><div class="tile" data-product="13859P1"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=13859P1&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Sightseeing Tour from Toronto with Hornblower Boat" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/13859/SITours/niagara-falls-sightseeing-tour-from-toronto-with-hornblower-boat-in-toronto-412793.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=13859P1&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Sightseeing Tour from Toronto with Hornblower Boat</a></div><div class="price"><div class="from">from <span class="autoResize">US$116.34*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">13 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=13859P1&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="29900P7"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=29900P7&d=155498&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Small-Group Niagara Falls Tour" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/29900/SITours/small-group-niagara-falls-tour-in-toronto-307095.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=29900P7&d=155498&aidSuffix=xsell&partner=Viator', 'title');">Small-Group Niagara Falls Tour</a></div><div class="price"><div class="from">from <span class="autoResize">US$147.57*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no50 "><img alt="5 of 5 stars" class="sprite-ratings" content="5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">1 review </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=29900P7&d=155498&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="39437P1"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=39437P1&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Small-Group Day Tour" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/39437/SITours/niagara-falls-small-group-day-tour-in-toronto-353372.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=39437P1&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Small-Group Day Tour</a></div><div class="price"><div class="from">from <span class="autoResize">US$69.70*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">3 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=39437P1&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div><div class="tile_container"><div class="tile" data-product="28741P1"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=28741P1&d=3140353&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="All-Day Tour to 1000 Islands and Kingston" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/28741/SITours/all-day-tour-to-1000-islands-and-kingston-in-toronto-282466.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=28741P1&d=3140353&aidSuffix=xsell&partner=Viator', 'title');">All-Day Tour to 1000 Islands and Kingston</a></div><div class="price"><div class="from">from <span class="autoResize">US$113.82*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no40 "><img alt="4 of 5 stars" class="sprite-ratings" content="4" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">4 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=28741P1&d=3140353&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="15081P23"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=15081P23&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Toronto to Niagara Falls Day Trip by Train" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/15081/SITours/toronto-to-niagara-falls-day-trip-by-train-in-toronto-233022.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=15081P23&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Toronto to Niagara Falls Day Trip by Train</a></div><div class="price"><div class="from">from <span class="autoResize">US$359.00*</span> </div></div><div class="clear"></div></div><div class="rating_container"><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=15081P23&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="29900P10"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=29900P10&d=10771607&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls and Niagara-on-the-Lake Day Tour from Toronto" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/29900/SITours/niagara-falls-and-niagara-on-the-lake-day-tour-from-toronto-in-toronto-422651.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=29900P10&d=10771607&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls and Niagara-on-the-Lake Day Tour from Toronto</a></div><div class="price"><div class="from">from <span class="autoResize">US$117.12*</span> </div></div><div class="clear"></div></div><div class="rating_container"><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=29900P10&d=10771607&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div></div></div><div class="top_picks_section group_12" data-group-id="12" data-group-row="3"><div class="section_header"><div class="section_title">Tours & Sightseeing<span class="see_more_wrapper"> | <span class="see_more" data-hide-label="See less" data-show-label="See more" onclick="ta.plc_attraction_viator_categories_0_handlers.toggleGroup(this, 12)">See more</span></span></div> </div><div class="tile_container primary"><div class="tile" data-product="37672P5"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=37672P5&d=10771607&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Day and Evening Tour With Boat Cruise and Optional..." src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/37672/SITours/niagara-falls-day-and-evening-tour-with-boat-cruise-and-optional-in-toronto-372290.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=37672P5&d=10771607&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Day and Evening Tour With Boat Cruise and Optional...</a></div><div class="price"><div class="from">from <span class="autoResize">US$112.24*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">5 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=37672P5&d=10771607&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="10614P6"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=10614P6&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Winter Special: Niagara Falls Tour from Toronto" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/10614/SITours/winter-special-niagara-falls-tour-from-toronto-in-toronto-250612.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=10614P6&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Winter Special: Niagara Falls Tour from Toronto</a></div><div class="price"><div class="from">from <span class="autoResize">US$61.68*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no20 "><img alt="2 of 5 stars" class="sprite-ratings" content="2" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">1 review </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=10614P6&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="6483P7"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=6483P7&d=186168&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Ultimate Toronto Tour" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/6483/SITours/ultimate-toronto-tour-in-toronto-300888.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=6483P7&d=186168&aidSuffix=xsell&partner=Viator', 'title');">Ultimate Toronto Tour</a></div><div class="price"><div class="from">from <span class="autoResize">US$108.53*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">34 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=6483P7&d=186168&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div><div class="more_top_picks hidden"><div class="tile_container"><div class="tile" data-product="10614P1"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=10614P1&d=556427&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Full-Day Niagara Falls Tour from Toronto" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/10614/SITours/full-day-niagara-falls-tour-from-toronto-in-toronto-220349.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=10614P1&d=556427&aidSuffix=xsell&partner=Viator', 'title');">Full-Day Niagara Falls Tour from Toronto</a></div><div class="price"><div class="from">from <span class="autoResize">US$81.98*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">8 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=10614P1&d=556427&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="3594P5"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3594P5&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Tour from Toronto Including Wine Tasting" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/3594/SITours/niagara-falls-tour-from-toronto-including-wine-tasting-in-toronto-203510.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3594P5&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Tour from Toronto Including Wine Tasting</a></div><div class="price"><div class="from">from <span class="autoResize">US$69.49*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">17 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3594P5&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="13859P5"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=13859P5&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Falls Tour from Toronto with Lunch and Hornblower Cruise" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/13859/SITours/niagara-falls-tour-from-toronto-with-lunch-and-hornblower-cruise-in-toronto-349868.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=13859P5&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Niagara Falls Tour from Toronto with Lunch and Hornblower Cruise</a></div><div class="price"><div class="from">from <span class="autoResize">US$167.87*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no40 "><img alt="4 of 5 stars" class="sprite-ratings" content="4" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">17 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=13859P5&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div><div class="tile_container"><div class="tile" data-product="5846DOWNTOWN"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5846DOWNTOWN&d=184942&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Downtown Toronto Bike Tour" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/5846/SITours/downtown-toronto-bike-tour-in-toronto-179258.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5846DOWNTOWN&d=184942&aidSuffix=xsell&partner=Viator', 'title');">Downtown Toronto Bike Tour</a></div><div class="price"><div class="from">from <span class="autoResize">US$61.76*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no50 "><img alt="5 of 5 stars" class="sprite-ratings" content="5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">27 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5846DOWNTOWN&d=184942&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="13859P2"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=13859P2&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Small-Group Evening Tour of Niagara Falls with Hornblower Boat and..." src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/13859/SITours/small-group-evening-tour-of-niagara-falls-with-hornblower-boat-and-in-toronto-209086.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=13859P2&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Small-Group Evening Tour of Niagara Falls with Hornblower Boat and...</a></div><div class="price"><div class="from">from <span class="autoResize">US$140.54*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no40 "><img alt="4 of 5 stars" class="sprite-ratings" content="4" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">3 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=13859P2&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="5597P3"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5597P3&d=4004082&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="1-Hour Distillery District Segway Glide" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/5597/SITours/1-hour-distillery-district-segway-glide-in-toronto-387972.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5597P3&d=4004082&aidSuffix=xsell&partner=Viator', 'title');">1-Hour Distillery District Segway Glide</a></div><div class="price"><div class="from">from <span class="autoResize">US$60.41*</span> </div></div><div class="clear"></div></div><div class="rating_container"><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5597P3&d=4004082&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div><div class="tile_container"><div class="tile" data-product="37672P1"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=37672P1&d=1627398&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Small-Group Niagara Falls Day Tour from Toronto with Boat Cruise and..." src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/37672/SITours/small-group-niagara-falls-day-tour-from-toronto-with-boat-cruise-and-in-toronto-350022.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=37672P1&d=1627398&aidSuffix=xsell&partner=Viator', 'title');">Small-Group Niagara Falls Day Tour from Toronto with Boat Cruise and...</a></div><div class="price"><div class="from">from <span class="autoResize">US$100.72*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no30 "><img alt="3 of 5 stars" class="sprite-ratings" content="3" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">2 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=37672P1&d=1627398&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="10614P8"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=10614P8&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Half-Day Niagara Falls Tour from Toronto" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/10614/SITours/half-day-niagara-falls-tour-from-toronto-in-toronto-250852.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=10614P8&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Half-Day Niagara Falls Tour from Toronto</a></div><div class="price"><div class="from">from <span class="autoResize">US$117.12*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no10 "><img alt="1 of 5 stars" class="sprite-ratings" content="1" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">1 review </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=10614P8&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="39822P1"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=39822P1&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Niagara Wine Tour with Lunch and Boat Ride Upgrade" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/39822/SITours/full-day-niagara-wine-tour-with-lunch-in-niagara-on-the-lake-and-in-toronto-357973.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=39822P1&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Niagara Wine Tour with Lunch and Boat Ride Upgrade</a></div><div class="price"><div class="from">from <span class="autoResize">US$308.41*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no50 "><img alt="5 of 5 stars" class="sprite-ratings" content="5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">2 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=39822P1&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div></div></div><div class="top_picks_section group_3" data-group-id="3" data-group-row="4"><div class="section_header"><div class="section_title">Cruises, Sailing & Water Tours<span class="see_more_wrapper"> | <span class="see_more" data-hide-label="See less" data-show-label="See more" onclick="ta.plc_attraction_viator_categories_0_handlers.toggleGroup(this, 3)">See more</span></span></div> </div><div class="tile_container primary"><div class="tile" data-product="3594IHC"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3594IHC&d=184960&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Toronto Inner Harbour and Island Cruise" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/3594/SITours/toronto-inner-harbour-and-island-cruise-in-toronto-31237.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3594IHC&d=184960&aidSuffix=xsell&partner=Viator', 'title');">Toronto Inner Harbour and Island Cruise</a></div><div class="price"><div class="from">from <span class="autoResize">US$22.01*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no40 "><img alt="4 of 5 stars" class="sprite-ratings" content="4" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">53 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=3594IHC&d=184960&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="5868DINNER"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5868DINNER&d=184955&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Toronto Dinner and Dance Cruise" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/5868/SITours/toronto-dinner-and-dance-cruise-in-toronto-126778.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5868DINNER&d=184955&aidSuffix=xsell&partner=Viator', 'title');">Toronto Dinner and Dance Cruise</a></div><div class="price"><div class="from">from <span class="autoResize">US$69.12*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no35 "><img alt="3.5 of 5 stars" class="sprite-ratings" content="3.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">20 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5868DINNER&d=184955&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="5868CRUISE"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5868CRUISE&d=184960&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Toronto Harbour Sightseeing Cruise" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/5868/SITours/toronto-harbour-sightseeing-cruise-in-toronto-345147.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5868CRUISE&d=184960&aidSuffix=xsell&partner=Viator', 'title');">Toronto Harbour Sightseeing Cruise</a></div><div class="price"><div class="from">from <span class="autoResize">US$19.41*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no45 "><img alt="4.5 of 5 stars" class="sprite-ratings" content="4.5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">9 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5868CRUISE&d=184960&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div><div class="more_top_picks hidden"><div class="tile_container"><div class="tile" data-product="7285P3"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7285P3&d=155498&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Toronto Obsession III Dinner Boat Cruise" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/7285/SITours/toronto-obsession-iii-dinner-boat-cruise-in-toronto-291475.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7285P3&d=155498&aidSuffix=xsell&partner=Viator', 'title');">Toronto Obsession III Dinner Boat Cruise</a></div><div class="price"><div class="from">from <span class="autoResize">US$74.51*</span> </div></div><div class="clear"></div></div><div class="rating_container"><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7285P3&d=155498&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="7621P2"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7621P2&d=4356469&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Special Event Summer Sail in Toronto" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/7621/SITours/special-event-summer-sail-in-toronto-in-toronto-188865.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7621P2&d=4356469&aidSuffix=xsell&partner=Viator', 'title');">Special Event Summer Sail in Toronto</a></div><div class="price"><div class="from">from <span class="autoResize">US$140.50*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no40 "><img alt="4 of 5 stars" class="sprite-ratings" content="4" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">1 review </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7621P2&d=4356469&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="7285P2"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7285P2&d=8283628&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Toronto Obsession III Brunch Cruise" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/7285/SITours/toronto-obsession-iii-brunch-cruise-in-toronto-237144.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7285P2&d=8283628&aidSuffix=xsell&partner=Viator', 'title');">Toronto Obsession III Brunch Cruise</a></div><div class="price"><div class="from">from <span class="autoResize">US$55.45*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no50 "><img alt="5 of 5 stars" class="sprite-ratings" content="5" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">1 review </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7285P2&d=8283628&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div><div class="tile_container"><div class="tile" data-product="7621P3"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7621P3&d=155498&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Friday Night Wine and Cheese Sail in Toronto" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/7621/SITours/friday-night-wine-and-cheese-sail-in-toronto-in-toronto-188863.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7621P3&d=155498&aidSuffix=xsell&partner=Viator', 'title');">Friday Night Wine and Cheese Sail in Toronto</a></div><div class="price"><div class="from">from <span class="autoResize">US$140.50*</span> </div></div><div class="clear"></div></div><div class="rating_container"><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7621P3&d=155498&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="7285P1"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7285P1&d=155498&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Toronto Tall Ship Boat Cruise" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/7285/SITours/toronto-tall-ship-boat-cruise-in-toronto-187393.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7285P1&d=155498&aidSuffix=xsell&partner=Viator', 'title');">Toronto Tall Ship Boat Cruise</a></div><div class="price"><div class="from">from <span class="autoResize">US$23.81*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no40 "><img alt="4 of 5 stars" class="sprite-ratings" content="4" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">9 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=7285P1&d=155498&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div><div class="tile" data-product="5868LB"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5868LB&d=556721&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Toronto Dining Cruise with Buffet Lunch or Brunch" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/5868/SITours/toronto-dining-cruise-with-buffet-lunch-or-brunch-in-toronto-126782.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5868LB&d=556721&aidSuffix=xsell&partner=Viator', 'title');">Toronto Dining Cruise with Buffet Lunch or Brunch</a></div><div class="price"><div class="from">from <span class="autoResize">US$50.11*</span> </div></div><div class="clear"></div></div><div class="rating_container"><div class="rating_and_reviews"><div class="rating"><div class="rate rate_no no40 "><img alt="4 of 5 stars" class="sprite-ratings" content="4" property="v:rating" src="https://static.tacdn.com/img2/sprites/ratings-v6.png"/></div></div><div class="reviews">10 reviews </div></div><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=5868LB&d=556721&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div><div class="tile_container"><div class="tile" data-product="8711P4"><a class="thumb" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=8711P4&d=186167&aidSuffix=xsell&partner=Viator', 'image');"><span class="thumbCrop"><img alt="Gems of Niagara Falls Small-Group Tour" src="https://cache-graphicslib.viator.com/graphicslib/thumbs360x240/8711/SITours/gems-of-niagara-falls-small-group-tour-in-niagara-falls-187092.jpg"/></span></a><div class="product_details"><div class="name_and_price"><div class="product_name"><a onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=8711P4&d=186167&aidSuffix=xsell&partner=Viator', 'title');">Gems of Niagara Falls Small-Group Tour</a></div><div class="price"><div class="from">from <span class="autoResize">US$149.11*</span> </div></div><div class="clear"></div></div><div class="rating_container"><span class="ui_button original small more_info" onclick="ta.plc_attraction_viator_categories_0_handlers.moreInfo(this, '/AttractionProductDetail?product=8711P4&d=186167&aidSuffix=xsell&partner=Viator', 'button');"><span class="button_inner">More Info</span></span><div class="clear"></div></div></div></div></div></div></div></div></div><h2 class="top_attractions">Top Attractions in Toronto</h2></div>\n<!--etk-->\n<div class="al_border filter_header sort_options">\n<div id="ATTRACTION_SORT_WRAPPER">\n<span class="label">Sort by:</span> <ul> <li class="option active"><span class="taLnk">Ranking</span><span class="marker"></span></li><li class="option " id="bookonline_sort_option" onclick="ta.trackEventOnPage('Attraction_Sort', 'Book_Online', 'Book_Online', 1);ta.servlet.Attractions.narrow.changeSort(event, this, {'zfn' : '', 'zfr' : '', 'zfq' : ''}, 'bookable')"><span class="taLnk">Book Online</span><span class="marker"></span></li> </ul>\n</div>\n</div>\n<div class="attraction_list attraction_list_short " id="FILTERED_LIST">\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_185115"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d185115-Reviews-Toronto_Islands-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 1, '/Attraction_Review')" target="_blank">\n<img alt="Toronto Islands" class="photo_image" height="160" id="lazyload_119442712_2" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_185115">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d185115-Reviews-Toronto_Islands-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 1, '/Attraction_Review')" target="_blank">Toronto Islands</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4805-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">Guide to Toronto for Families</a> and <a href="/Guide-g155019-k4806-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Other_Guides', 0, '/Travel_Guide');">1 other guide</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#1 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d185115-Reviews-Toronto_Islands-Toronto_Ontario.html#REVIEWS" target="_blank">\n4,950 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461576334">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d185115-r461576334-Toronto_Islands-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Valentine's Day'17</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461298794">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d185115-r461298794-Toronto_Islands-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Great place to go kayaking</a>\u201d</span>\n<span class="date">19/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c57-t20-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Islands</span></a>\n<a href="/Attractions-g155019-Activities-c57-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 2, '/Attractions')"><span class="matchedTag noTagImg">Parks</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">2 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$58.56*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '185115', 1); window.open( '/Attraction_Products-g155019-d185115-Toronto_Islands-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_5031404"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d5031404-Reviews-Ripley_s_Aquarium_Of_Canada-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 2, '/Attraction_Review')" target="_blank">\n<img alt="Ripley's Aquarium Of Canada" class="photo_image" height="160" id="lazyload_119442712_3" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_5031404">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d5031404-Reviews-Ripley_s_Aquarium_Of_Canada-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 2, '/Attraction_Review')" target="_blank">Ripley's Aquarium Of Canada</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4844-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">3 Days in Toronto</a> and <a href="/Travel_Guide-g155019-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Other_Guides', 0, '/Travel_Guide');">2 other guides</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#2 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d5031404-Reviews-Ripley_s_Aquarium_Of_Canada-Toronto_Ontario.html#REVIEWS" target="_blank">\n11,535 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461575774">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d5031404-r461575774-Ripley_s_Aquarium_Of_Canada-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Got a free Jazz concert too ;)</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461455234">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d5031404-r461455234-Ripley_s_Aquarium_Of_Canada-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Captivating experience!</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c48-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Aquariums</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">4 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$27.34*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '5031404', 1); window.open( '/Attraction_Products-g155019-d5031404-Ripley_s_Aquarium_Of_Canada-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_155483"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d155483-Reviews-CN_Tower-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 3, '/Attraction_Review')" target="_blank">\n<img alt="CN Tower" class="photo_image" height="160" id="lazyload_119442712_4" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_tc">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="Travellers' Choice award winner" class="sprite-tchAwardIcon" src="https://static.tacdn.com/img2/x.gif"/>\n</div>\n<b class="lbl"> Travellers' Choice\x99 2016 Winner </b><span class="awardlist">\nLandmarks\n</span>\n</div> </div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_155483">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d155483-Reviews-CN_Tower-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 3, '/Attraction_Review')" target="_blank">CN Tower</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4805-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">Guide to Toronto for Families</a> and <a href="/Guide-g155019-k4803-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Other_Guides', 0, '/Travel_Guide');">1 other guide</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#3 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d155483-Reviews-CN_Tower-Toronto_Ontario.html#REVIEWS" target="_blank">\n15,745 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461575949">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d155483-r461575949-CN_Tower-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">CN Tower at night</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461564272">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d155483-r461564272-CN_Tower-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">A must do</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c47-t3-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Architectural Buildings</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">15 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$19.41*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '155483', 1); window.open( '/Attraction_Products-g155019-d155483-CN_Tower-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div class="ad iab_leaBoa inlineBannerAd">\n<div class="adInner gptAd" id="gpt-ad-728x90-a"></div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_185112"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d185112-Reviews-St_Lawrence_Market-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 4, '/Attraction_Review')" target="_blank">\n<img alt="St. Lawrence Market" class="photo_image" height="160" id="lazyload_119442712_5" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_185112">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d185112-Reviews-St_Lawrence_Market-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 4, '/Attraction_Review')" target="_blank">St. Lawrence Market</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4844-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">3 Days in Toronto</a> and <a href="/Travel_Guide-g155019-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Other_Guides', 0, '/Travel_Guide');">3 other guides</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#4 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d185112-Reviews-St_Lawrence_Market-Toronto_Ontario.html#REVIEWS" target="_blank">\n8,868 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461549874">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d185112-r461549874-St_Lawrence_Market-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Great market</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461375719">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d185112-r461375719-St_Lawrence_Market-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Huge food market</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c47-t3-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Architectural Buildings</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">13 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$15.42*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '185112', 1); window.open( '/Attraction_Products-g155019-d185112-St_Lawrence_Market-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_155481"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d155481-Reviews-Royal_Ontario_Museum-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 5, '/Attraction_Review')" target="_blank">\n<img alt="Royal Ontario Museum" class="photo_image" height="160" id="lazyload_119442712_6" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_tc">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="Travellers' Choice award winner" class="sprite-tchAwardIcon" src="https://static.tacdn.com/img2/x.gif"/>\n</div>\n<b class="lbl"> Travellers' Choice\x99 2016 Winner </b><span class="awardlist">\nAttractions\n</span>\n</div> </div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_155481">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d155481-Reviews-Royal_Ontario_Museum-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 5, '/Attraction_Review')" target="_blank">Royal Ontario Museum</a>\n</div>\n<div class="popRanking wrap">\n#5 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d155481-Reviews-Royal_Ontario_Museum-Toronto_Ontario.html#REVIEWS" target="_blank">\n5,454 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461484958">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d155481-r461484958-Royal_Ontario_Museum-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Very Diverse Collection of Artifac...</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461429554">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d155481-r461429554-Royal_Ontario_Museum-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Dinosaurs!!!</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c49-t161-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Speciality Museums</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">6 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$15.62*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '155481', 1); window.open( '/Attraction_Products-g155019-d155481-Royal_Ontario_Museum-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_1456519"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d1456519-Reviews-Steam_Whistle_Brewery-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 6, '/Attraction_Review')" target="_blank">\n<img alt="Steam Whistle Brewery" class="photo_image" height="160" id="lazyload_119442712_7" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry " id="ATTR_ENTRY_1456519">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d1456519-Reviews-Steam_Whistle_Brewery-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 6, '/Attraction_Review')" target="_blank">Steam Whistle Brewery</a>\n</div>\n<div class="popRanking wrap">\n#6 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d1456519-Reviews-Steam_Whistle_Brewery-Toronto_Ontario.html#REVIEWS" target="_blank">\n2,289 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461568381">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d1456519-r461568381-Steam_Whistle_Brewery-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Enjoyable tour for a good value</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_460968280">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d1456519-r460968280-Steam_Whistle_Brewery-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Fun and busy</a>\u201d</span>\n<span class="date">18/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c36-t133-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Breweries</span></a>\n</div>\n</div> </div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_155496"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d155496-Reviews-High_Park-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 7, '/Attraction_Review')" target="_blank">\n<img alt="High Park" class="photo_image" height="160" id="lazyload_119442712_8" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_155496">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d155496-Reviews-High_Park-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 7, '/Attraction_Review')" target="_blank">High Park</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4806-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">Guide to Toronto Outdoors</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#7 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d155496-Reviews-High_Park-Toronto_Ontario.html#REVIEWS" target="_blank">\n1,635 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461487651">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d155496-r461487651-High_Park-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">An oasis in the middle of a city</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_460513209">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d155496-r460513209-High_Park-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Park in the centre of the city!</a>\u201d</span>\n<span class="date">16/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c57-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Parks</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">1 Tour Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$171.17*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'not_ap_eligible', '155496', 1); window.open( '/AttractionProductDetail?product=2528TOUR14&d=155496&partner=Viator' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_type_group">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" data-params="MDNBXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLXQxODMtVG9yb250b19PbnRhcmlvLmh0bWxfdndF" href="/Attractions-g155019-Activities-c42-t183-Toronto_Ontario.html" onclick="ta.servlet.Attractions.narrow.setEvtCookieWrapper('Attraction_List_Click', 'Rollup_click', 'photo', 8, 'WndBXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLXQxODMtVG9yb250b19PbnRhcmlvLmh0bWxfQXJ2'); ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<div class="thumbSetWrapper">\n<div class="thumbWrapper odd">\n<div class="sizedThumb " style="height: 78px; width: 78px; ">\n<img alt="Walking Tours" class="photo_image" height="78" src="https://media-cdn.tripadvisor.com/media/photo-l/03/ef/a2/c1/the-culinary-adventure.jpg" style="height: 78px; width: 78px;" width="78"/>\n</div>\n</div>\n<div class="thumbWrapper even">\n<div class="sizedThumb " style="height: 78px; width: 78px; ">\n<img alt="Walking Tours" class="photo_image" height="78" src="https://media-cdn.tripadvisor.com/media/photo-l/01/97/b7/6b/tour-guys-toronto-cn.jpg" style="height: 78px; width: 78px;" width="78"/>\n</div>\n</div>\n<div class="thumbWrapper odd">\n<div class="sizedThumb " style="height: 78px; width: 78px; ">\n<img alt="Walking Tours" class="photo_image" height="78" src="https://media-cdn.tripadvisor.com/media/photo-l/05/b3/74/62/savour-toronto.jpg" style="height: 78px; width: 78px;" width="78"/>\n</div>\n</div>\n<div class="thumbWrapper even">\n<div class="sizedThumb " style="height: 78px; width: 78px; ">\n<img alt="Walking Tours" class="photo_image" height="78" src="https://media-cdn.tripadvisor.com/media/photo-l/05/47/7f/77/segway-of-ontario.jpg" style="height: 78px; width: 78px;" width="78"/>\n</div>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group">\n<div class="content">\n<div class="property_title">\n<a data-params="aTN4Xy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLXQxODMtVG9yb250b19PbnRhcmlvLmh0bWxfaUxD" href="/Attractions-g155019-Activities-c42-t183-Toronto_Ontario.html" onclick="ta.servlet.Attractions.narrow.setEvtCookieWrapper('Attraction_List_Click', 'Rollup_click', 'name', 8, 'SlBpXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLXQxODMtVG9yb250b19PbnRhcmlvLmh0bWxfMVBD'); ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">Walking Tours (19)</a>\n</div>\n<div class="popRanking wrap">\n#8 of 496 things to do in Toronto </div>\n<div class="description">\n<a class="see_all" data-params="V0RQXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLXQxODMtVG9yb250b19PbnRhcmlvLmh0bWxfUjRa" href="/Attractions-g155019-Activities-c42-t183-Toronto_Ontario.html" onclick="ta.servlet.Attractions.narrow.setEvtCookieWrapper('Attraction_List_Click', 'Rollup_click', 'see_all', 8, 'SDNoXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLXQxODMtVG9yb250b19PbnRhcmlvLmh0bWxfa0g0'); ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">See all 19 Walking Tours, including</a> <div class="child_attraction">\n<a href="/Attraction_Review-g155019-d2062889-Reviews-Culinary_Adventure_Co-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'Rollup_detail_click', '8', 1, '/Attraction_Review')" target="_blank">Culinary Adventure Co.</a>\n</div>\n<div class="child_attraction">\n<a href="/Attraction_Review-g155019-d1819702-Reviews-Tour_Guys-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'Rollup_detail_click', '8', 1, '/Attraction_Review')" target="_blank">Tour Guys</a>\n</div>\n<div class="child_attraction">\n<a href="/Attraction_Review-g155019-d4273952-Reviews-Savour_Toronto-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'Rollup_detail_click', '8', 1, '/Attraction_Review')" target="_blank">Savour Toronto</a>\n</div>\n</div>\n</div>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">8 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$14.84*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '155019', 1); window.open( '/Attraction_Products-g155019-t183-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_187000"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d187000-Reviews-The_AGO_Art_Gallery_of_Ontario-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 9, '/Attraction_Review')" target="_blank">\n<img alt="The AGO, Art Gallery of Ontario" class="photo_image" height="160" id="lazyload_119442712_9" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_tc">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="Travellers' Choice award winner" class="sprite-tchAwardIcon" src="https://static.tacdn.com/img2/x.gif"/>\n</div>\n<b class="lbl"> Travellers' Choice\x99 2016 Winner </b><span class="awardlist">\nAttractions\n</span>\n</div> </div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_187000">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d187000-Reviews-The_AGO_Art_Gallery_of_Ontario-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 9, '/Attraction_Review')" target="_blank">The AGO, Art Gallery of Ontario</a>\n</div>\n<div class="popRanking wrap">\n#9 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d187000-Reviews-The_AGO_Art_Gallery_of_Ontario-Toronto_Ontario.html#REVIEWS" target="_blank">\n3,024 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461531372">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d187000-r461531372-The_AGO_Art_Gallery_of_Ontario-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Worth a visit</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461470146">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d187000-r461470146-The_AGO_Art_Gallery_of_Ontario-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">First bad experience</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c49-t28-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Art Museums</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">4 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$28.89*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '187000', 1); window.open( '/Attraction_Products-g155019-d187000-The_AGO_Art_Gallery_of_Ontario-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div class="ad iab_leaBoa inlineBannerAd">\n<div class="adInner gptAd" id="gpt-ad-728x90-b"></div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_155501"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d155501-Reviews-Hockey_Hall_of_Fame-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 10, '/Attraction_Review')" target="_blank">\n<img alt="Hockey Hall of Fame" class="photo_image" height="160" id="lazyload_119442712_10" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_tc">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="Travellers' Choice award winner" class="sprite-tchAwardIcon" src="https://static.tacdn.com/img2/x.gif"/>\n</div>\n<b class="lbl"> Travellers' Choice\x99 2016 Winner </b><span class="awardlist">\nAttractions\n</span>\n</div> </div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_155501">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d155501-Reviews-Hockey_Hall_of_Fame-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 10, '/Attraction_Review')" target="_blank">Hockey Hall of Fame</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4805-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">Guide to Toronto for Families</a> and <a href="/Guide-g155019-k4803-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Other_Guides', 0, '/Travel_Guide');">1 other guide</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#10 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d155501-Reviews-Hockey_Hall_of_Fame-Toronto_Ontario.html#REVIEWS" target="_blank">\n2,745 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461533444">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d155501-r461533444-Hockey_Hall_of_Fame-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">A great tribute to the sport</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461231066">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d155501-r461231066-Hockey_Hall_of_Fame-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Prob won't go again</a>\u201d</span>\n<span class="date">19/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c49-t161-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Speciality Museums</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">5 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$14.05*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '155501', 1); window.open( '/Attraction_Products-g155019-d155501-Hockey_Hall_of_Fame-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_533212"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d533212-Reviews-Distillery_Historic_District-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 11, '/Attraction_Review')" target="_blank">\n<img alt="Distillery Historic District" class="photo_image" height="160" id="lazyload_119442712_11" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_533212">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d533212-Reviews-Distillery_Historic_District-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 11, '/Attraction_Review')" target="_blank">Distillery Historic District</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4844-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">3 Days in Toronto</a> and <a href="/Travel_Guide-g155019-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Other_Guides', 0, '/Travel_Guide');">2 other guides</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#11 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d533212-Reviews-Distillery_Historic_District-Toronto_Ontario.html#REVIEWS" target="_blank">\n5,281 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461564698">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d533212-r461564698-Distillery_Historic_District-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Fab place to visit</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461490972">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d533212-r461490972-Distillery_Historic_District-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Christmas Market</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c47-t19-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Historic Walking Areas</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">8 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$16.76*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '533212', 1); window.open( '/Attraction_Products-g155019-d533212-Distillery_Historic_District-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_186831"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d186831-Reviews-Toronto_Public_Library-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 12, '/Attraction_Review')" target="_blank">\n<img alt="Toronto Public Library" class="photo_image" height="160" id="lazyload_119442712_12" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry " id="ATTR_ENTRY_186831">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d186831-Reviews-Toronto_Public_Library-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 12, '/Attraction_Review')" target="_blank">Toronto Public Library</a>\n</div>\n<div class="popRanking wrap">\n#12 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d186831-Reviews-Toronto_Public_Library-Toronto_Ontario.html#REVIEWS" target="_blank">\n598 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_458337912">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d186831-r458337912-Toronto_Public_Library-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">The TPL is a major resource right...</a>\u201d</span>\n<span class="date">09/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_456464878">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d186831-r456464878-Toronto_Public_Library-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">A Toronto Institution</a>\u201d</span>\n<span class="date">01/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c47-t3-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Architectural Buildings</span></a>\n<a href="/Attractions-g155019-Activities-c60-t21-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 2, '/Attractions')"><span class="matchedTag noTagImg">Libraries</span></a>\n</div>\n</div> </div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_155506"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d155506-Reviews-Centre_Island-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 13, '/Attraction_Review')" target="_blank">\n<img alt="Centre Island" class="photo_image" height="160" id="lazyload_119442712_13" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_155506">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d155506-Reviews-Centre_Island-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 13, '/Attraction_Review')" target="_blank">Centre Island</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4844-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">3 Days in Toronto</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#13 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d155506-Reviews-Centre_Island-Toronto_Ontario.html#REVIEWS" target="_blank">\n1,142 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_459285621">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d155506-r459285621-Centre_Island-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Great for young kids</a>\u201d</span>\n<span class="date">13/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_456805062">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d155506-r456805062-Centre_Island-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Love it!</a>\u201d</span>\n<span class="date">02/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c57-t20-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Islands</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">1 Tour Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$22.01*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'not_ap_eligible', '155506', 1); window.open( '/AttractionProductDetail?product=3594IHC&d=155506&partner=Viator' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_591344"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d591344-Reviews-University_of_Toronto-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 14, '/Attraction_Review')" target="_blank">\n<img alt="University of Toronto" class="photo_image" height="160" id="lazyload_119442712_14" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_591344">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d591344-Reviews-University_of_Toronto-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 14, '/Attraction_Review')" target="_blank">University of Toronto</a>\n</div>\n<div class="popRanking wrap">\n#14 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d591344-Reviews-University_of_Toronto-Toronto_Ontario.html#REVIEWS" target="_blank">\n1,053 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461288429">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d591344-r461288429-University_of_Toronto-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Nothing to do really</a>\u201d</span>\n<span class="date">19/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461154927">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d591344-r461154927-University_of_Toronto-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">walked the grounds</a>\u201d</span>\n<span class="date">19/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c47-t12-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Educational sites</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">2 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$15.42*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '591344', 1); window.open( '/Attraction_Products-g155019-d591344-University_of_Toronto-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div class="ad iab_leaBoa inlineBannerAd">\n<div class="adInner gptAd" id="gpt-ad-728x90-c"></div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_186168"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d186168-Reviews-Casa_Loma-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 15, '/Attraction_Review')" target="_blank">\n<img alt="Casa Loma" class="photo_image" height="160" id="lazyload_119442712_15" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_tc">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="Travellers' Choice award winner" class="sprite-tchAwardIcon" src="https://static.tacdn.com/img2/x.gif"/>\n</div>\n<b class="lbl"> Travellers' Choice\x99 2016 Winner </b><span class="awardlist">\nLandmarks\n</span>\n</div> </div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_186168">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d186168-Reviews-Casa_Loma-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 15, '/Attraction_Review')" target="_blank">Casa Loma</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4805-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">Guide to Toronto for Families</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#15 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d186168-Reviews-Casa_Loma-Toronto_Ontario.html#REVIEWS" target="_blank">\n4,747 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461677165">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d186168-r461677165-Casa_Loma-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Beauty and the Beast exhibit at Ca...</a>\u201d</span>\n<span class="date">21/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461602722">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d186168-r461602722-Casa_Loma-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Beauty and the beast...over rated</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c47-t6-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Castles</span></a>\n<a href="/Attractions-g155019-Activities-c49-t161-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 2, '/Attractions')"><span class="matchedTag noTagImg">Speciality Museums</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">6 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$33.57*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '186168', 1); window.open( '/Attraction_Products-g155019-d186168-Casa_Loma-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_186704"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d186704-Reviews-Toronto_Zoo-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 16, '/Attraction_Review')" target="_blank">\n<img alt="Toronto Zoo" class="photo_image" height="160" id="lazyload_119442712_16" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_186704">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d186704-Reviews-Toronto_Zoo-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 16, '/Attraction_Review')" target="_blank">Toronto Zoo</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4805-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">Guide to Toronto for Families</a> and <a href="/Guide-g155019-k4806-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Other_Guides', 0, '/Travel_Guide');">1 other guide</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#16 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no40">\n<img alt="4 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d186704-Reviews-Toronto_Zoo-Toronto_Ontario.html#REVIEWS" target="_blank">\n3,517 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461573038">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d186704-r461573038-Toronto_Zoo-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Maybe this was a bad month to visi...</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461291172">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d186704-r461291172-Toronto_Zoo-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">First Visit Without Kids</a>\u201d</span>\n<span class="date">19/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c48-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Zoos</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">1 Tour Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$64.00*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'not_ap_eligible', '186704', 1); window.open( '/AttractionProductDetail?product=2640YYZ_TR&d=186704&partner=Viator' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_156878"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d156878-Reviews-Rogers_Centre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 17, '/Attraction_Review')" target="_blank">\n<img alt="Rogers Centre" class="photo_image" height="160" id="lazyload_119442712_17" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_156878">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d156878-Reviews-Rogers_Centre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 17, '/Attraction_Review')" target="_blank">Rogers Centre</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4844-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">3 Days in Toronto</a> and <a href="/Travel_Guide-g155019-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Other_Guides', 0, '/Travel_Guide');">2 other guides</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#17 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d156878-Reviews-Rogers_Centre-Toronto_Ontario.html#REVIEWS" target="_blank">\n2,347 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461448992">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d156878-r461448992-Rogers_Centre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Expensive/outdated</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461382141">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d156878-r461382141-Rogers_Centre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Blue Jays were electrifying in ALD...</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c47-t120-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Arenas & Stadiums</span></a>\n<a href="/Attractions-g155019-Activities-c56-t131-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 2, '/Attractions')"><span class="matchedTag noTagImg">Sports Complexes</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">9 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$33.57*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '156878', 1); window.open( '/Attraction_Products-g155019-d156878-Rogers_Centre-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_184955"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d184955-Reviews-The_Air_Canada_Centre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 18, '/Attraction_Review')" target="_blank">\n<img alt="The Air Canada Centre" class="photo_image" height="160" id="lazyload_119442712_18" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_184955">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d184955-Reviews-The_Air_Canada_Centre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 18, '/Attraction_Review')" target="_blank">The Air Canada Centre</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4805-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">Guide to Toronto for Families</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#18 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d184955-Reviews-The_Air_Canada_Centre-Toronto_Ontario.html#REVIEWS" target="_blank">\n1,114 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461475542">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d184955-r461475542-The_Air_Canada_Centre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Best venue in Toronto</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461351918">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d184955-r461351918-The_Air_Canada_Centre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Basketball was so much fun</a>\u201d</span>\n<span class="date">19/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c47-t8-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Civic Centres</span></a>\n<a href="/Attractions-g155019-Activities-c47-t120-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 2, '/Attractions')"><span class="matchedTag noTagImg">Arenas & Stadiums</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">6 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$33.57*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '184955', 1); window.open( '/Attraction_Products-g155019-d184955-The_Air_Canada_Centre-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_185075"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d185075-Reviews-Edwards_Gardens-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 19, '/Attraction_Review')" target="_blank">\n<img alt="Edwards Gardens" class="photo_image" height="160" id="lazyload_119442712_19" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry " id="ATTR_ENTRY_185075">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d185075-Reviews-Edwards_Gardens-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 19, '/Attraction_Review')" target="_blank">Edwards Gardens</a>\n</div>\n<div class="popRanking wrap">\n#19 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d185075-Reviews-Edwards_Gardens-Toronto_Ontario.html#REVIEWS" target="_blank">\n487 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_460515394">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d185075-r460515394-Edwards_Gardens-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Nice Park and site to catch newlyw...</a>\u201d</span>\n<span class="date">16/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_458117628">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d185075-r458117628-Edwards_Gardens-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Beautiful Gardens</a>\u201d</span>\n<span class="date">08/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c57-t58-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Gardens</span></a>\n</div>\n</div> </div>\n</div>\n<div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_type_group">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" data-params="ZEZnXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLXQxMzktVG9yb250b19PbnRhcmlvLmh0bWxfVGJT" href="/Attractions-g155019-Activities-c42-t139-Toronto_Ontario.html" onclick="ta.servlet.Attractions.narrow.setEvtCookieWrapper('Attraction_List_Click', 'Rollup_click', 'photo', 20, 'TGpEXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLXQxMzktVG9yb250b19PbnRhcmlvLmh0bWxfcHI2'); ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">\n<div class="thumbSetWrapper">\n<div class="thumbWrapper odd">\n<div class="sizedThumb " style="height: 78px; width: 78px; ">\n<img alt="Sightseeing Tours" class="photo_image" height="78" src="https://media-cdn.tripadvisor.com/media/photo-l/0d/a9/a7/f2/island-am-tour.jpg" style="height: 78px; width: 78px;" width="78"/>\n</div>\n</div>\n<div class="thumbWrapper even">\n<div class="sizedThumb " style="height: 78px; width: 78px; ">\n<img alt="Sightseeing Tours" class="photo_image" height="78" src="https://media-cdn.tripadvisor.com/media/photo-l/02/75/f5/3e/getlstd-property-photo.jpg" style="height: 78px; width: 78px;" width="78"/>\n</div>\n</div>\n<div class="thumbWrapper odd">\n<div class="sizedThumb " style="height: 78px; width: 78px; ">\n<img alt="Sightseeing Tours" class="photo_image" height="78" src="https://media-cdn.tripadvisor.com/media/photo-l/01/56/e4/6e/niagara-falls-as-seen.jpg" style="height: 78px; width: 78px;" width="78"/>\n</div>\n</div>\n<div class="thumbWrapper even">\n<div class="sizedThumb " style="height: 78px; width: 78px; ">\n<img alt="Sightseeing Tours" class="photo_image" height="78" src="https://media-cdn.tripadvisor.com/media/photo-f/04/08/5a/d9/mariposa-cruises.jpg" style="height: 78px; width: 157px; margin-left: -39px;" width="78"/>\n</div>\n</div>\n</div>\n</a>\n</div>\n<div class="entry ">\n<div class="content">\n<div class="property_title">\n<a data-params="MDFhXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLXQxMzktVG9yb250b19PbnRhcmlvLmh0bWxfcEV6" href="/Attractions-g155019-Activities-c42-t139-Toronto_Ontario.html" onclick="ta.servlet.Attractions.narrow.setEvtCookieWrapper('Attraction_List_Click', 'Rollup_click', 'name', 20, 'RGxTXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLXQxMzktVG9yb250b19PbnRhcmlvLmh0bWxfTFd0'); ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">Sightseeing Tours (34)</a>\n</div>\n<div class="popRanking wrap">\n#20 of 496 things to do in Toronto </div>\n<div class="description">\n<a class="see_all" data-params="V1R5Xy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLXQxMzktVG9yb250b19PbnRhcmlvLmh0bWxfYjNk" href="/Attractions-g155019-Activities-c42-t139-Toronto_Ontario.html" onclick="ta.servlet.Attractions.narrow.setEvtCookieWrapper('Attraction_List_Click', 'Rollup_click', 'see_all', 20, 'WVNQXy9BdHRyYWN0aW9ucy1nMTU1MDE5LUFjdGl2aXRpZXMtYzQyLXQxMzktVG9yb250b19PbnRhcmlvLmh0bWxfUDBM'); ta.call('ta.servlet.Attractions.narrow.ajaxifyLink', event, this)">See all 34 Sightseeing Tours, including</a> <div class="child_attraction">\n<a href="/Attraction_Review-g155019-d2301516-Reviews-Toronto_Bicycle_Tours-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'Rollup_detail_click', '20', 1, '/Attraction_Review')" target="_blank">Toronto Bicycle Tours</a>\n</div>\n<div class="child_attraction">\n<a href="/Attraction_Review-g155019-d2723287-Reviews-Niagara_Day_Tour-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'Rollup_detail_click', '20', 1, '/Attraction_Review')" target="_blank">Niagara Day Tour</a>\n</div>\n<div class="child_attraction">\n<a href="/Attraction_Review-g155019-d1465440-Reviews-Chariots_of_Fire_Ltd-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'Rollup_detail_click', '20', 1, '/Attraction_Review')" target="_blank">Chariots of Fire Ltd.</a>\n</div>\n</div>\n</div>\n</div>\n</div> </div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_185111"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d185111-Reviews-Scarborough_Bluffs-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 21, '/Attraction_Review')" target="_blank">\n<img alt="Scarborough Bluffs" class="photo_image" height="160" id="lazyload_119442712_20" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry " id="ATTR_ENTRY_185111">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d185111-Reviews-Scarborough_Bluffs-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 21, '/Attraction_Review')" target="_blank">Scarborough Bluffs</a>\n</div>\n<div class="popRanking wrap">\n#21 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d185111-Reviews-Scarborough_Bluffs-Toronto_Ontario.html#REVIEWS" target="_blank">\n442 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461572308">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d185111-r461572308-Scarborough_Bluffs-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">The best</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461562331">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d185111-r461562331-Scarborough_Bluffs-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">beautiful but muddy</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c47-t166-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Lookouts</span></a>\n</div>\n</div> </div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_155498"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d155498-Reviews-Lake_Ontario-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 22, '/Attraction_Review')" target="_blank">\n<img alt="Lake Ontario" class="photo_image" height="160" id="lazyload_119442712_21" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_155498">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d155498-Reviews-Lake_Ontario-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 22, '/Attraction_Review')" target="_blank">Lake Ontario</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4805-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">Guide to Toronto for Families</a> and <a href="/Travel_Guide-g155019-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Other_Guides', 0, '/Travel_Guide');">2 other guides</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#22 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d155498-Reviews-Lake_Ontario-Toronto_Ontario.html#REVIEWS" target="_blank">\n597 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_460784431">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d155498-r460784431-Lake_Ontario-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Walked along the Harbour Front</a>\u201d</span>\n<span class="date">17/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_460516883">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d155498-r460516883-Lake_Ontario-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Vast Great Lake!</a>\u201d</span>\n<span class="date">16/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c57-t162-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Bodies of Water</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">13 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$7.81*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '155498', 1); window.open( '/Attraction_Products-g155019-d155498-Lake_Ontario-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_184952"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d184952-Reviews-Royal_Alexandra_Theatre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 23, '/Attraction_Review')" target="_blank">\n<img alt="Royal Alexandra Theatre" class="photo_image" height="160" id="lazyload_119442712_22" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry " id="ATTR_ENTRY_184952">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d184952-Reviews-Royal_Alexandra_Theatre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 23, '/Attraction_Review')" target="_blank">Royal Alexandra Theatre</a>\n</div>\n<div class="popRanking wrap">\n#23 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d184952-Reviews-Royal_Alexandra_Theatre-Toronto_Ontario.html#REVIEWS" target="_blank">\n429 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_460543712">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d184952-r460543712-Royal_Alexandra_Theatre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">"The Audience" presentation Februa...</a>\u201d</span>\n<span class="date">16/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_459650955">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d184952-r459650955-Royal_Alexandra_Theatre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Magnificent!!</a>\u201d</span>\n<span class="date">14/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c58-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Theatres</span></a>\n</div>\n</div> </div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_591332"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d591332-Reviews-Toronto_Islands_Ferries-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 24, '/Attraction_Review')" target="_blank">\n<img alt="Toronto Islands Ferries" class="photo_image" height="160" id="lazyload_119442712_23" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry " id="ATTR_ENTRY_591332">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d591332-Reviews-Toronto_Islands_Ferries-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 24, '/Attraction_Review')" target="_blank">Toronto Islands Ferries</a>\n</div>\n<div class="popRanking wrap">\n#24 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d591332-Reviews-Toronto_Islands_Ferries-Toronto_Ontario.html#REVIEWS" target="_blank">\n669 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461376913">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d591332-r461376913-Toronto_Islands_Ferries-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Quick, cheap and easy</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_460769322">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d591332-r460769322-Toronto_Islands_Ferries-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">When I took the ferry back in 2010...</a>\u201d</span>\n<span class="date">17/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c59-t56-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Ferries</span></a>\n</div>\n</div> </div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_1863032"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d1863032-Reviews-CF_Toronto_Eaton_Centre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 25, '/Attraction_Review')" target="_blank">\n<img alt="CF Toronto Eaton Centre" class="photo_image" height="160" id="lazyload_119442712_24" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_1863032">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d1863032-Reviews-CF_Toronto_Eaton_Centre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 25, '/Attraction_Review')" target="_blank">CF Toronto Eaton Centre</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4805-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">Guide to Toronto for Families</a> and <a href="/Guide-g155019-k4803-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Other_Guides', 0, '/Travel_Guide');">1 other guide</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#25 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no40">\n<img alt="4 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d1863032-Reviews-CF_Toronto_Eaton_Centre-Toronto_Ontario.html#REVIEWS" target="_blank">\n1,930 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461565080">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d1863032-r461565080-CF_Toronto_Eaton_Centre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Shop, shop, shop till you drop!</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461542883">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d1863032-r461542883-CF_Toronto_Eaton_Centre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Too much of a good thing</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c26-t143-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Shopping Malls</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">7 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$33.57*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '1863032', 1); window.open( '/Attraction_Products-g155019-d1863032-CF_Toronto_Eaton_Centre-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_186805"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d186805-Reviews-Allan_Gardens_Conservatory-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 26, '/Attraction_Review')" target="_blank">\n<img alt="Allan Gardens Conservatory" class="photo_image" height="160" id="lazyload_119442712_25" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry " id="ATTR_ENTRY_186805">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d186805-Reviews-Allan_Gardens_Conservatory-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 26, '/Attraction_Review')" target="_blank">Allan Gardens Conservatory</a>\n</div>\n<div class="popRanking wrap">\n#26 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d186805-Reviews-Allan_Gardens_Conservatory-Toronto_Ontario.html#REVIEWS" target="_blank">\n410 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461562694">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d186805-r461562694-Allan_Gardens_Conservatory-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Always beautiful</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461120268">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d186805-r461120268-Allan_Gardens_Conservatory-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Beautiful</a>\u201d</span>\n<span class="date">19/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c57-t58-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Gardens</span></a>\n</div>\n</div> </div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_4833030"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d4833030-Reviews-Wards_Island-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 27, '/Attraction_Review')" target="_blank">\n<img alt="Wards Island" class="photo_image" height="160" id="lazyload_119442712_26" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry " id="ATTR_ENTRY_4833030">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d4833030-Reviews-Wards_Island-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 27, '/Attraction_Review')" target="_blank">Wards Island</a>\n</div>\n<div class="popRanking wrap">\n#27 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d4833030-Reviews-Wards_Island-Toronto_Ontario.html#REVIEWS" target="_blank">\n218 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_460154052">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d4833030-r460154052-Wards_Island-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Great Escape</a>\u201d</span>\n<span class="date">15/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_458927191">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d4833030-r458927191-Wards_Island-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">lots of fun</a>\u201d</span>\n<span class="date">12/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c57-t20-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Islands</span></a>\n</div>\n</div> </div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_556727"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d556727-Reviews-Ed_Mirvish_Theatre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 28, '/Attraction_Review')" target="_blank">\n<img alt="Ed Mirvish Theatre" class="photo_image" height="160" id="lazyload_119442712_27" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry " id="ATTR_ENTRY_556727">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d556727-Reviews-Ed_Mirvish_Theatre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 28, '/Attraction_Review')" target="_blank">Ed Mirvish Theatre</a>\n</div>\n<div class="popRanking wrap">\n#28 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no45">\n<img alt="4.5 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d556727-Reviews-Ed_Mirvish_Theatre-Toronto_Ontario.html#REVIEWS" target="_blank">\n412 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461602596">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d556727-r461602596-Ed_Mirvish_Theatre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Like the movie</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461598338">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d556727-r461598338-Ed_Mirvish_Theatre-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">The Bodyguard</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c58-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Theatres</span></a>\n</div>\n</div> </div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_187017"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d187017-Reviews-Bata_Shoe_Museum-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 29, '/Attraction_Review')" target="_blank">\n<img alt="Bata Shoe Museum" class="photo_image" height="160" id="lazyload_119442712_28" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_187017">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d187017-Reviews-Bata_Shoe_Museum-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 29, '/Attraction_Review')" target="_blank">Bata Shoe Museum</a>\n</div>\n<div class="popRanking wrap">\n#29 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no40">\n<img alt="4 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d187017-Reviews-Bata_Shoe_Museum-Toronto_Ontario.html#REVIEWS" target="_blank">\n845 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461564117">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d187017-r461564117-Bata_Shoe_Museum-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Great collection and we'll display...</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461487437">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d187017-r461487437-Bata_Shoe_Museum-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Out of the Box Museum with Tons to...</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c49-t161-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Speciality Museums</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">1 Tour Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$33.57*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'not_ap_eligible', '187017', 1); window.open( '/AttractionProductDetail?product=30408&d=187017&partner=Viator' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<div>\n<div class="tmHide" id="HOTEL_FB_BUBBLE_PLACEHOLDER_185093"></div>\n<div class="element_wrap">\n<div class="wrap al_border attraction_element">\n<div class="photo_booking non_generic">\n<a class="photo_link " data-navarea-linktype="Thumbnail" href="/Attraction_Review-g155019-d185093-Reviews-Kensington_Market_and_Spadina_Avenue-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'photo', 30, '/Attraction_Review')" target="_blank">\n<img alt="Kensington Market and Spadina Avenue" class="photo_image" height="160" id="lazyload_119442712_29" src="https://static.tacdn.com/img2/x.gif" style="height: 160px; width: 160px;" width="160"/>\n<div class="photo_badge_coe">\n<div class="bestLink collapsible wrap">\n<div class="fl">\n<img alt="" class="sprite-coe_badge_white" src="https://static.tacdn.com/img2/x.gif">\n</img></div>\n<b class="lbl">Certificate of Excellence</b>\n</div>\n</div>\n</a>\n</div>\n<div class="entry al_offer_group" id="ATTR_ENTRY_185093">\n<div class="property_title">\n<a href="/Attraction_Review-g155019-d185093-Reviews-Kensington_Market_and_Spadina_Avenue-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'name', 30, '/Attraction_Review')" target="_blank">Kensington Market and Spadina Avenue</a>\n<div class="icon_container">\n<span class="tg_icon sprite-travel_guide_icon" onmouseover="ta.servlet.Attractions.narrow.travelGuideOverlay(event, this);">\n<span class="overlayContents travelguide_target_blank">\nAs featured in <a href="/Guide-g155019-k4844-Toronto_Ontario.html" onclick="ta.setEvtCookie('As_Featured_In_Guide', 'Click', 'Guide_Title', 0, '/Guide');">3 Days in Toronto</a>\n<script type="text/javascript">\n</script>\n</span>\n</span>\n</div>\n</div>\n<div class="popRanking wrap">\n#30 of 496 things to do in Toronto </div>\n<div class="popRanking wrap ">\n</div>\n<div class="wrap">\n<div class="rs rating">\n<span class="rate rate_no no40">\n<img alt="4 of 5 bubbles" class="sprite-ratings" src="https://static.tacdn.com/img2/x.gif">\n</img></span>\n<span class="more" onclick=" ; ta.setEvtCookie('Attraction_List_Click', 'ReviewCount', '', 0, '/Attraction_Review');">\n<a href="/Attraction_Review-g155019-d185093-Reviews-Kensington_Market_and_Spadina_Avenue-Toronto_Ontario.html#REVIEWS" target="_blank">\n1,744 reviews\n</a>\n</span>\n</div>\n</div>\n<ul class="review_stubs">\n<li class="review_stubs_item" id="review_461544607">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d185093-r461544607-Kensington_Market_and_Spadina_Avenue-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 1, '/ShowUserReviews')" target="_blank">Eclectic Fun</a>\u201d</span>\n<span class="date">20/02/2017</span>\n</li>\n<li class="review_stubs_item" id="review_461209866">\n<span dir="ltr">\u201c<a href="/ShowUserReviews-g155019-d185093-r461209866-Kensington_Market_and_Spadina_Avenue-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'Snippet', 2, '/ShowUserReviews')" target="_blank">Vibrant neighbourhood!</a>\u201d</span>\n<span class="date">19/02/2017</span>\n</li>\n</ul>\n</div>\n<div class="p13n_reasoning_v2">\n<a href="/Attractions-g155019-Activities-c47-t34-Toronto_Ontario.html" onclick="ta.setEvtCookie('Attraction_List_Click', 'POI_click', 'tags', 1, '/Attractions')"><span class="matchedTag noTagImg">Neighbourhoods</span></a>\n</div>\n</div>\n<div class="commerce_box">\n<div class=" label_flag ">8 Tours Available</div>\n<div class="price_wrapper">\n<div class="price middle ">\n<div>from USD </div> </div>\n<div class="price middle ">\n<div class="display_price">US$19.51*</div> </div>\n</div>\n<div onclick="ta.trackEventOnPage('attraction_more_info_click', 'ap_eligible', '185093', 1); window.open( '/Attraction_Products-g155019-d185093-Kensington_Market_and_Spadina_Avenue-Toronto_Ontario.html' ,'_blank');\n (new Event(event)).stopPropagation();\n;">\n<div class="display_text ui_button original w100p ">More Info</div>\n</div>\n</div>\n</div>\n</div>\n<script type="text/javascript"> injektReviewsContent(); </script>\n<div class="al_border deckTools btm">\n<div class="pagination">\n<div class="unified pagination ">\n<span class="nav previous disabled">Previous</span>\n<a class="nav next rndBtn ui_button primary taLnk" data-offset="30" data-page-number="2" href="/Attractions-g155019-Activities-oa30-Toronto_Ontario.html#ATTRACTION_LIST" onclick=" ta.setEvtCookie('STANDARD_PAGINATION', 'next', '2', 0, this.href);\n ">Next</a>\n<div class="pageNumbers">\n<span class="pageNum current" data-offset="0" data-page-number="1" onclick="ta.trackEventOnPage('STANDARD_PAGINATION', 'curpage', '1', 0)">1</span>\n<a class="pageNum taLnk" data-offset="30" data-page-number="2" href="/Attractions-g155019-Activities-oa30-Toronto_Ontario.html#ATTRACTION_LIST" onclick=" ta.setEvtCookie('STANDARD_PAGINATION', 'page', '2', 0, this.href);\n ">2</a>\n<a class="pageNum taLnk" data-offset="60" data-page-number="3" href="/Attractions-g155019-Activities-oa60-Toronto_Ontario.html#ATTRACTION_LIST" onclick=" ta.setEvtCookie('STANDARD_PAGINATION', 'page', '3', 0, this.href);\n ">3</a>\n<a class="pageNum taLnk" data-offset="90" data-page-number="4" href="/Attractions-g155019-Activities-oa90-Toronto_Ontario.html#ATTRACTION_LIST" onclick=" ta.setEvtCookie('STANDARD_PAGINATION', 'page', '4', 0, this.href);\n ">4</a>\n<a class="pageNum taLnk" data-offset="120" data-page-number="5" href="/Attractions-g155019-Activities-oa120-Toronto_Ontario.html#ATTRACTION_LIST" onclick=" ta.setEvtCookie('STANDARD_PAGINATION', 'page', '5', 0, this.href);\n ">5</a>\n<a class="pageNum taLnk" data-offset="150" data-page-number="6" href="/Attractions-g155019-Activities-oa150-Toronto_Ontario.html#ATTRACTION_LIST" onclick=" ta.setEvtCookie('STANDARD_PAGINATION', 'page', '6', 0, this.href);\n ">6</a>\n<span class="separator">\u2026</span>\n<a class="pageNum taLnk" data-offset="480" data-page-number="17" href="/Attractions-g155019-Activities-oa480-Toronto_Ontario.html#ATTRACTION_LIST" onclick=" ta.setEvtCookie('STANDARD_PAGINATION', 'last', '17', 0, this.href);\n ">17</a>\n</div>\n</div>\n<script>\nta.util.element.trackWhenScrolledIntoView('.unified.pagination', ['STANDARD_PAGINATION_VISIBLE', 'numPages', '17', 0]);\n</script>\n</div><!--/ pagination-->\n</div> </div>\n<script type="text/javascript">\nta.store('attractions.isRollupVersion', true);\nta.servlet.Attractions.narrow.initCgy(0);\nta.servlet.Attractions.narrow.initTypes('');\n</script>\n</div>\n<script type="text/javascript">\n// old page style tabs\nta.store("mapsv2.attractions_map_tab_name", '');\nta.store("mapsv2.attractions_map_filter_category", 0);\nta.servlet.Attractions.narrow.loadAnimatedCTA();\nta.servlet.Attractions.narrow.loadTGTargetBlank();\nwindow.addEvent('onAttractionFilterChange', ta.servlet.Attractions.narrow.loadTGTargetBlank);\n</script>\n</div>\n<form name="ttd_jsb_form">\n<input id="ttd_rl_field" type="hidden" value=""/>\n</form>\n<script type="text/javascript">\n( function() {\nta.queueForLoad( function() {\nta.servlet.Attractions.narrow.updateFiltersOnBack();\n});\n})();\n</script>\n<script type="text/javascript">\n( function() {\nif (history.replaceState) {\nhistory.replaceState({ stateTag: false }, '', null);\n}\nta.queueForLoad( function() {\nta.store('attractions.useStaticUrl', true);\nta.servlet.Attractions.narrow.setPopStateListner();\n});\n})();\n</script>\n<script type="text/javascript">\n( function() {\nta.queueForLoad( function() {\nta.servlet.Attractions.narrow.initShelfListeners(155019);\n});\n})();\n</script>\n<script>\nvar _comscore = _comscore || [];\n_comscore.push({ c1: '2', c2: '6036461', c3: '', c4: '' });\nvar _csload = function() {\nvar s = document.createElement('script'), el = document.getElementsByTagName('script')[0]; s.async = true;\ns.src = (document.location.protocol == 'https:' ? 'https://sb' : 'http://b') + '.scorecardresearch.com/beacon.js';\nel.parentNode.insertBefore(s, el);\n};\nta.queueForLoad(_csload, 5, 'comscore');\n</script>\n<noscript>\n<img class="tracking" height="1" src="https://sb.scorecardresearch.com/p?c1=2&c2=6036461&c3=&c4=&c5=&c6=&c15=&cv=2.0&cj=1" width="1"/>\n</noscript>\n</div>\n</div> </div>\n<div class="ad iab_leaBoa">\n<div class="adInner gptAd" id="gpt-ad-728x90-d"></div>\n</div>\n<div id="FOOT_CONTAINER">\n<div id="FOOT">\n<div class="corporate wrap">\n<div class="col balance">\n<div class="block">\n<dl class="sep brand">\n<dt>\n<img alt="TripAdvisor" height="30" id="LOGOTAGLINE" src="https://static.tacdn.com/img2/x.gif"/>\n</dt>\n</dl>\n<div class="sep internal">\n<span><a class="taLnk" href="/PressCenter-c6-About_Us.html">About Us</a></span>\n| <span><a class="taLnk" href="/SiteIndex-g153339-Canada.html">Site Map</a></span>\n| <span class="taLnk" data-modal="help_center" data-options="autoReposition closeOnDocClick closeOnEscape" data-url="/uvpages/helpCenterOverlay.html" data-windowshade="" onclick="uiOverlay(event, this)">Help\xa0Centre <img alt="" height="10" id="lazyload_119442712_30" src="https://static.tacdn.com/img2/x.gif" width="14"/></span>\n</div>\n<div class="sep legal">\n<div class="copyright">\n\xa9 2017 TripAdvisor LLC All rights reserved. TripAdvisor <a href="/pages/terms.html">Terms of Use</a> and <a href="/pages/privacy.html">Privacy Policy</a>.\n</div>\n<div class="vfm_disclaimer">\n</div>\n<div class="disclaimer" id="PDISCLAIMER">\n* TripAdvisor LLC is not a booking agent and does not charge any service fees to users of our site... (<span class="taLnk hvrIE6" id="TERMS" onclick="getFullDisclaimerText()">more</span>) </div>\n<div class="disclaimer">TripAdvisor LLC is not responsible for content on external web sites. Taxes, fees not included for deals content.</div>\n</div>\n</div> </div> </div>\n<img class="tracking hidden" height="0" id="p13n_tp_stm" src="https://static.tacdn.com/img2/x.gif" width="0"/>\n</div> </div>\n<div class="hidden" id="gpt-peelback"></div>\n</div>\n<script type="text/javascript">\nta.queueForReady( function() {\nta.localStorage && ta.localStorage.updateSessionId('40F05E45FA2943DDA2D9271243A6BFF7');\n}, 1, "reset localStorage session id");\n</script>\n<script crossorigin="anonymous" src="https://static.tacdn.com/js-webpack/dist/USD/vendor-prod-v23006438230a.js" type="text/javascript"></script>\n<script crossorigin="anonymous" src="https://static.tacdn.com/js-webpack/dist/USD/i18n/formatters-prod-en-CA-v22584001874a.js" type="text/javascript"></script>\n<script crossorigin="anonymous" src="https://static.tacdn.com/js-webpack/dist/USD/app-prod-v22345525768a.js" type="text/javascript"></script>\n<script type="text/javascript">\nta.store("hotels_left_filters_redesign", true);\nta.store("hotels_left_filters_redesign_searching_text", 'Searching <span style="colour:#FFCC00">up to 200 sites</span> for best prices: %%%'); ta.store("hotels_left_filters_redesign_so_text_short", "Special Offers");\nta.store("hac.suppress_updating_overlay", true);\n</script>\n<script type="text/javascript">\nta.store('ta.commerce.suppress_commerce_impressions.enabled', true);\n</script>\n<script type="text/javascript">\nta.store('typeahead.typeahead2_mixed_ui', true);\nta.store('typeahead.typeahead2_geo_segmented_ui', true);\nta.store('typeahead.integrate_recently_viewed', true);\nta.store('typeahead.destination_icons', "https://static.tacdn.com/img2/icons/typeahead/destination_icons.png");\nta.store('typeahead.geoArea', 'Toronto area'); ta.store('typeahead.worldwide', 'Worldwide'); ta.store('typeahead.noResultsFound', 'No results found.'); ta.store('typeahead.searchForPrompt', "Search for");\nta.store('typeahead.location', "Location"); ta.store('typeahead.restaurant', "Restaurant"); ta.store('typeahead.attraction', "Attraction"); ta.store('typeahead.hotel', "Hotel");\nta.store('typeahead.restaurant_list', "Restaurants"); ta.store('typeahead.attraction_list', "Attractions"); ta.store('typeahead.things_to_do', "Things to Do"); ta.store('typeahead.hotel_list', "Hotels"); ta.store('typeahead.flight_list', "Flights"); ta.store('typeahead.vacation_rental_list', "Vacation Rentals");\nta.store('typeahead.scoped.static_local_label', '% area'); ta.store('typeahead.scoped.result_title_text', 'Start typing, or try one of these suggestions...'); ta.store('typeahead.scoped.poi_overview_geo', '<span class="poi_overview_item">Overview</span> of %'); ta.store('typeahead.scoped.poi_hotels_geo', '<span class="poi_overview_item">Hotels</span> in %'); ta.store('typeahead.scoped.poi_hotels_geo_near', '<span class="poi_overview_item">Hotels</span> near %'); ta.store('typeahead.scoped.poi_vr_geo', '<span class="poi_overview_item">Vacation Rentals</span> in %'); ta.store('typeahead.scoped.poi_vr_geo_near', '<span class="poi_overview_item">Vacation Rentals</span> near %'); ta.store('typeahead.scoped.poi_attractions_geo', '<span class="poi_overview_item">Things to Do</span> in %'); ta.store('typeahead.scoped.poi_eat_geo', '<span class="poi_overview_item">Restaurants</span> in %'); ta.store('typeahead.scoped.poi_flights_geo', '<span class="poi_overview_item">Flights</span> to %'); ta.store('typeahead.scoped.poi_nbrhd_geo', '<span class="poi_overview_item">Neighbourhoods</span> in %'); ta.store('typeahead.scoped.poi_travel_guides_geo', '<span class="poi_overview_item">Travel Guides</span> in %');\nta.store('typeahead.scoped.overview', 'Overview '); ta.store('typeahead.scoped.neighborhoods', 'Neighbourhoods'); ta.store('typeahead.scoped.travel_guides', 'Travel Guides');\nta.store('typeahead.flight_enabled', true);\nta.store('typeahead.scoped.geo_area_template', '% area');\nta.store('typeahead.searchMore', 'Find more results for "%"');\nta.store('typeahead.history', "Recently viewed"); ta.store('typeahead.history.all_caps', "RECENTLY VIEWED"); ta.store('typeahead.popular_destinations', "POPULAR DESTINATIONS");\nta.store('typeahead.localAirports', [{"lookbackServlet":null,"autobroadened":"false","normalized_name":"o'hare intl airport","title":"Destinations","type":"AIRPORT","is_vr":false,"url":"\\/Tourism-g7917517-Chicago_Illinois-Vacations.html","urls":[{"url_type":"geo","name":"O'Hare Intl Airport Tourism","fallback_url":"\\/Tourism-g7917517-Chicago_Illinois-Vacations.html","type":"GEO","url":"\\/Tourism-g7917517-Chicago_Illinois-Vacations.html"},{"url_type":"vr","name":"O'Hare Intl Airport Vacation Rentals","fallback_url":"\\/VacationRentalsNear-g35805-d7917517-O_Hare_Intl_Airport-Chicago_Illinois.html","type":"VACATION_RENTAL","url":"\\/VacationRentalsNear-g35805-d7917517-O_Hare_Intl_Airport-Chicago_Illinois.html"},{"url_type":"eat","name":"O'Hare Intl Airport Restaurants","fallback_url":"\\/Restaurants-g7917517-Chicago_Illinois.html","type":"EATERY","url":null},{"url_type":"attr","name":"O'Hare Intl Airport Attractions","fallback_url":"\\/Attractions-g7917517-Activities-Chicago_Illinois.html","type":"ATTRACTION","url":null},{"url_type":"hotel","name":"O'Hare Intl Airport Hotels","fallback_url":"\\/HotelsNear-g35805-qORD-Chicago_Illinois.html","type":"HOTEL","url":"\\/HotelsNear-g35805-qORD-Chicago_Illinois.html"},{"url_type":"flights_to","name":"Flights to O'Hare Intl Airport","fallback_url":"\\/FlightsTo-g35805-qORD-Chicago_Illinois-Cheap_Discount_Airfares.html","type":"FLIGHTS_TO","url":"\\/FlightsTo-g35805-qORD-Chicago_Illinois-Cheap_Discount_Airfares.html"},{"url_type":"nbrhd","name":"O'Hare Intl Airport Neighbourhoods","fallback_url":"\\/NeighborhoodList-g7917517-Chicago_Illinois.html","type":"NEIGHBORHOOD","url":null},{"url_type":"tg","name":"O'Hare Intl Airport Travel Guides","fallback_url":"\\/Travel_Guide-g7917517-Chicago_Illinois.html","type":"TRAVEL_GUIDE","url":null}],"is_broad":false,"scope":"global","name":"O'Hare Intl Airport, Chicago, Illinois","data_type":"LOCATION","details":{"parent_name":"Chicago","grandparent_name":"Illinois","highlighted_name":"Chicago, IL - O'Hare International Airport (ORD)","name":"Chicago, IL - O'Hare International Airport (ORD)","parent_ids":[35805,28934,191,19,1],"geo_name":"Chicago, Illinois"},"airportCode":"ORD","value":7917517,"coords":"41.97773,-87.88363"}]);\nta.store('typeahead.recentHistoryList', [{"lookbackServlet":null,"autobroadened":"false","normalized_name":"toronto","title":"Destinations","type":"GEO","is_vr":true,"url":"\\/Tourism-g155019-Toronto_Ontario-Vacations.html","urls":[{"url_type":"geo","name":"Toronto Tourism","fallback_url":"\\/Tourism-g155019-Toronto_Ontario-Vacations.html","type":"GEO","url":"\\/Tourism-g155019-Toronto_Ontario-Vacations.html"},{"url_type":"vr","name":"Toronto Vacation Rentals","fallback_url":"\\/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html","type":"VACATION_RENTAL","url":"\\/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html"},{"url_type":"eat","name":"Toronto Restaurants","fallback_url":"\\/Restaurants-g155019-Toronto_Ontario.html","type":"EATERY","url":"\\/Restaurants-g155019-Toronto_Ontario.html"},{"url_type":"attr","name":"Toronto Attractions","fallback_url":"\\/Attractions-g155019-Activities-Toronto_Ontario.html","type":"ATTRACTION","url":"\\/Attractions-g155019-Activities-Toronto_Ontario.html"},{"url_type":"hotel","name":"Toronto Hotels","fallback_url":"\\/Hotels-g155019-Toronto_Ontario-Hotels.html","type":"HOTEL","url":"\\/Hotels-g155019-Toronto_Ontario-Hotels.html"},{"url_type":"flights_to","name":"Flights to Toronto","fallback_url":"\\/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html","type":"FLIGHTS_TO","url":"\\/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html"},{"url_type":"nbrhd","name":"Toronto Neighbourhoods","fallback_url":"\\/NeighborhoodList-g155019-Toronto_Ontario.html","type":"NEIGHBORHOOD","url":"\\/NeighborhoodList-g155019-Toronto_Ontario.html"},{"url_type":"tg","name":"Toronto Travel Guides","fallback_url":"\\/Travel_Guide-g155019-Toronto_Ontario.html","type":"TRAVEL_GUIDE","url":"\\/Travel_Guide-g155019-Toronto_Ontario.html"}],"is_broad":false,"scope":"global","name":"Toronto, Ontario, Canada","data_type":"LOCATION","details":{"parent_name":"Ontario","grandparent_name":"Canada","rac_enabled":false,"highlighted_name":"Toronto","name":"Toronto","parent_ids":[154979,153339,19,1],"geo_name":"Ontario, Canada"},"value":155019,"coords":"43.64381,-79.38554"}]);\n</script>\n<script type="text/javascript">\nta.store('metaCheckRatesUpdateDivInline', 'PROVIDER_BLOCK_INLINE');\nta.store('metaInlineGeoId', '');\n</script>\n<script>\n</script>\n<script type="text/javascript">\nta.store('metaCheckRatesUpdateDiv', 'PROVIDER_BLOCK');\nta.store('checkrates.meta_ui_sk_box_v3', true)\nta.store('checkrates.one_second_xsell', true);\n</script>\n<script>\nta.store("lightbox_improvements", true);\nta.store("checkrates.hr_bc_see_all_click.lb", true);\n</script>\n<script type="text/javascript">\nta.store("hotels_meta_focus", 4);\n</script>\n<script type="text/javascript">\nvar metaCheckRatesCSS = 'https://static.tacdn.com/css2/meta_ui_sk_box_chevron-v22382233729a.css';\nta.store('metaCheckRatesFeatureEnabled', true);\n</script>\n<script type="text/javascript">\nta.store('mapProviderFeature.maps_api','ta-maps-gmaps3');\n</script>\n<script type="text/javascript">\nvar dropdownMetaCSS = "https://static.tacdn.com/css2/meta_drop_down_overlay-en_CA-v23287961243a.css";\n</script>\n<script type="text/javascript">\nta.store('metaDatePickerEnabled', true);\nvar common_skip_dates = "Search without specific dates";\nta.store('multiDP.skipDates', "Search without specific dates"); ta.store('multiDP.inDate', "");\nta.store('multiDP.outDate', "");\nta.store('multiDP.multiNightsText', "2 nights"); ta.store('multiDP.singleNightText', "1 night"); ta.store('calendar.preDateText', "dd/mm/yyyy");\nta.store('multiDP.adultsCount', "2");\nta.store('multiDP.singleAdultsText', "1 guest"); ta.store('multiDP.multiAdultsText', "2 guests"); ta.store('multiDP.enterDatesText', "Enter dates"); ta.store('multiDP.isMondayFirstDayOfWeek', false);\nta.store('multiDP.dateSeparator', " - ");\nta.store('multiDP.dateRangeEllipsis', "Searching %%%...");\nta.store('multiDP.abbrevMonthList', ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]);\nta.store('multiDP.checkIn', "dd/mm/yyyy"); ta.store('multiDP.checkOut', "dd/mm/yyyy"); </script>\n<script type="text/javascript">\n(function(window,ta,undefined){\ntry {\nta = window.ta = window.ta || {};\nta.uid = 'WKz-cgokKHEAAeKqrrgAAAB6';\nvar xhrProto = XMLHttpRequest.prototype;\nvar origSend = xhrProto.send;\nxhrProto.send = function(data) {\ntry {\nvar localRE = new RegExp('^(/[^/]|(http(s)?:)?//'+window.location.hostname+')');\nif(this._url && localRE.test(this._url)) {\nthis.setRequestHeader('X-Puid', 'WKz-cgokKHEAAeKqrrgAAAB6');\n}\n}\ncatch (e2) {}\norigSend.call(this, data);\n}\nvar origOpen = xhrProto.open;\nxhrProto.open = function (method, url) {\nthis._url = url;\nreturn origOpen.apply(this, arguments);\n};\nta.userLoggedIn = false;\nta.userSecurelyLoggedIn = false;\n}\ncatch (e) {\nif(ta && ta.util && ta.util.error && ta.util.error.record) {\nta.util.error.record(e,'global_ga.vm');\n}\n}\n}(window,ta));\n</script>\n<script type="text/javascript">\n(function(window,ta,undefined){\ntry {\nta = window.ta = window.ta || {};\nta.uid = 'WKz-cgokKHEAAeKqrrgAAAB6';\nta.userLoggedIn = false;\nta.userSecurelyLoggedIn = false;\nif (require.defined('ta/Core/TA.Prerender')){\nrequire('ta/Core/TA.Prerender')._init(true);\n}\nvar _gaq = window._gaq = window._gaq || []\n, pageDataStack = ta.analytics.pageData = ta.analytics.pageData || []\n, pageData\n;\nwindow._gaq.push = function(){};\npageData=JSON.parse('{\\"cv\\":[[\\"_deleteCustomVar\\",1],[\\"_deleteCustomVar\\",47],[\\"_setCustomVar\\",12,\\"Country\\",\\"Canada-153339\\",3],[\\"_setCustomVar\\",25,\\"Continent\\",\\"North America-19\\",3],[\\"_setCustomVar\\",13,\\"Geo\\",\\"Toronto-155019\\",3],[\\"_setCustomVar\\",20,\\"PP\\",\\"-274-279-\\",3],[\\"_deleteCustomVar\\",11],[\\"_deleteCustomVar\\",19],[\\"_deleteCustomVar\\",14],[\\"_deleteCustomVar\\",8],[\\"_deleteCustomVar\\",10]],\\"url\\":\\"/Attractions\\"}');\npageDataStack.push(pageData);\nif(ta.keep){\nta.keep("partials.pageProperties","274-279");\n}\nif(ta.store){\nta.store("gaMemberState","-");\n}\n}\ncatch (e) {\nif(ta && ta.util && ta.util.error && ta.util.error.record) {\nta.util.error.record(e,'global_ga.vm');\n}\n}\n}(window,ta));\n</script>\n<script type="text/javascript">\nvar lazyImgs = [\n{"data":"https://media-cdn.tripadvisor.com/media/photo-s/01/fc/96/58/filename-black-creek.jpg","scroll":true,"tagType":"img","id":"lazyload_119442712_0","priority":100,"logerror":false}\n, {"data":"https://static.tacdn.com/img2/maps/icons/spinner24.gif","scroll":false,"tagType":"img","id":"lazyload_119442712_1","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/0a/c0/50/nice-beach.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_2","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/05/19/f9/41/ripley-s-aquarium-of.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_3","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/0a/81/97/f2/cn-tower.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_4","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/03/ff/bd/4b/st-lawrence-market.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_5","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/03/f8/2f/3b/royal-ontario-museum.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_6","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/f0/54/4f/steam-whistle-brewery.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_7","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/03/c3/26/2b/grenadier-pond.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_8","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/5c/a3/0e/the-italia-galleria-inside.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_9","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/f5/1a/79/outside-of-hockey-hall.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_10","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/41/35/cf/distillery-art.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_11","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/03/bb/6e/59/toronto-public-library.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_12","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/4a/0e/3a/garden.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_13","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/5c/27/45/university-of-toronto.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_14","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/07/05/0a/9d/casa-loma.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_15","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/04/0f/51/0e/toronto-zoo.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_16","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/b5/f4/eb/cfl-argos-500-level.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_17","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/3a/e0/3b/on-ice-toronto.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_18","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/02/c2/29/16/edwards-gardens.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_19","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/30/72/8f/shoreline-near-bluffs.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_20","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/61/c9/6c/lake-ontario.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_21","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/02/8b/4b/a8/filename-dscf1501-jpg.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_22","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/02/49/d9/8b/toronto-island-ferry.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_23","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/0b/d9/05/2b/cf-toronto-eaton-centre.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_24","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/00/18/6b/1d/a-spiny-specimen-in-the.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_25","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/06/03/23/be/ward-s-island-ferry.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_26","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/04/4c/d9/53/ed-mirvish-theatre.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_27","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/05/bc/35/68/bata-shoe-museum.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_28","priority":100,"logerror":false}\n, {"data":"https://media-cdn.tripadvisor.com/media/photo-l/01/55/32/0f/caption.jpg","scroll":false,"tagType":"img","id":"lazyload_119442712_29","priority":100,"logerror":false}\n, {"data":"https://static.tacdn.com/img2/branding/logo_with_tagline.png","scroll":true,"tagType":"img","id":"LOGOTAGLINE","priority":100,"logerror":false}\n, {"data":"https://static.tacdn.com/img2/icons/bell.png","scroll":true,"tagType":"img","id":"lazyload_119442712_30","priority":100,"logerror":false}\n, {"data":"https://p.smartertravel.com/ext/pixel/ta/seed.gif?id=NY1QkB0y0N7yAMEL_r-2IsKBKBY5tUdY8VhInEHW6tUFQ7A317c0F3CMcsuB3D5k","scroll":false,"tagType":"img","id":"p13n_tp_stm","priority":1000,"logerror":false}\n];\nvar lazyHtml = [\n];\nta.queueForLoad( function() {\nrequire('lib/LazyLoad').init({}, lazyImgs, lazyHtml);\n}, 'lazy load images');\n</script>\n<script type="text/javascript">\nta.keep('startOffset', '1');\n<!-- currentGeoId = 155019 -->\nfunction build_ad() {\nvar currentDate = new Date();\nvar year = currentDate.getFullYear();\nvar month = currentDate.getMonth() + 1;\nmonth = month > 10 ? month : '0' + month;\nvar day = currentDate.getDay() + 1;\nday = day > 10 ? day : '0' + day;\nwindow.montreal = {\ndate: [year, month, day].join("-"),\nfrom_geo: 35805,\nfrom_geo_name: "Chicago",\ngeo: 155019,\ngeo_name: "Toronto",\nlang_variant: "CA-CA",\nis_location: false,\npage_type: "ATTRACTION",\nattraction_categories: "",\nerror: false\n}\n}\nbuild_ad();\nta.store('page.geo', "155019");\nta.store('page.location', "155019");\nta.store('page.urlSafe', "http%3A__2F____2F__www__2E__tripadvisor__2E__ca__2F__Attractions__2D__g155019__2D__Activities__2D__Toronto__5F__Ontario__2E__html");\nta.store('facebook.disableLogin', false);\nta.store('facebook.apiKey', "f1e687a58f0cdac60b7af2317a5febb3");\nta.store('facebook.appId', "162729813767876");\nta.store('facebook.appName', "tripadvisor");\nta.store('facebook.taServerTime', "1487732594");\nta.store('facebook.skip.session.check',"false");\nta.store('facebook.apiVersion', "v2.2");\nta.store("facebook.invalidFBCreds", true);\nwindow.fbAsyncInit = ta.support.Facebook.init;\nta.queueForLoad(function(){\nnew Asset.javascript("//connect.facebook.net/en_US/sdk.js");\n}, 0, 'LoadFBJS');\nfunction ip_adjustHeader() {\n// check for overlap\nvar prefs = ta.id('USER_PREFS');\nvar head = ta.id('HEAD');\nif (!prefs || !head) {\nreturn;\n}\nvar logo = head.getElement('.topLogo');\nif (logo) {\nvar c = prefs.getCoordinates();\nif (c.left - logo.getCoordinates().right < 10) {\nhead.setStyle('padding-top', 5);\n}\n}\n}\nta.queueForLoad(ip_adjustHeader, 'ip_adjustHeader');\nta.store('fb.name', "");\nta.store('fb.icon', "");\nta.keep('facebook.data.request', [\n'IP_HEADER' ]);\nta.keep('facebook.onSessionAvail', function () {\nvar node = ta.id('MOBHDRLNK');\nif (node)\n{\nnode.parentNode.removeChild(node);\n}\n});\nta.queueForLoad( function() { Cookie.writeSession('FBH', sniffFacebook() ? 1 : 2); }, 'SniffFB' );\nta.store('scrollAd.enableScroll', true );\nta.store('scrollAd.sbElem', document.getElement('.gridA>.sidebar') || document.getElement('.gridR>.sidebar'));\nta.store('ads.reverseScroll', true);\nta.store('ads.disableEventRefresh', true);\nta.store('ads.deferEnabled', true);\nta.store('ads.gptEnabled', true);\nta.store('ads.peelbackEnabled', true);\nvar googletag=googletag||{};\ngoogletag.cmd=googletag.cmd||[];\nta.queueForLoad(\nfunction() {\nta.store('ads.pageTargeting', {\n"geo": "155019",\n"country": "153339",\n"rd": "ca",\n"drs": [\n"MOB_48",\n"BRAND_17",\n"CMN_99",\n"FL_29",\n"REV_39",\n"REVB_30",\n"REVH_25",\n"RNA_1",\n"SALES_96",\n"SEARCH_4",\n"SITEX_70",\n"VR_57",\n"TTD_86",\n"HSX_39",\n"HSXB_92",\n"ENGAGE_92"\n],\n"slice": "single_26",\n"sess": "40F05E45FA2943DDA2D9271243A6BFF7",\n"pool": "A",\n"detail": "0",\n"PageType": "Attractions",\n"hname": "Toronto",\n"loctype": "attractions",\n"platform": "desktop"\n});\nvar adStubsJSON = {\n"adTypes": [\n{\n"tgt": "gpt-ad-728x90-970x66",\n"size": [\n[\n728,\n90\n],\n[\n970,\n66\n]\n],\n"type": "leaderboard_top",\n"base": "/5349/ta.ta.com.s/na.can.ont.toronto",\n"custom_targeting": {\n"pos": "top"\n}\n},\n{\n"tgt": "gpt-ad-160x600",\n"size": [\n[\n160,\n600\n]\n],\n"type": "skyscraper_top",\n"base": "/5349/ta.ta.com.s/na.can.ont.toronto",\n"custom_targeting": {\n"pos": "top"\n}\n},\n{\n"tgt": "gpt-ad-300x250-300x600",\n"size": [\n[\n300,\n250\n],\n[\n300,\n600\n]\n],\n"type": "medium_rectangle_top",\n"base": "/5349/ta.ta.com.s/na.can.ont.toronto",\n"custom_targeting": {\n"pos": "top"\n}\n},\n{\n"tgt": "gpt-ad-300x100-housepromo",\n"size": [\n[\n300,\n100\n]\n],\n"type": "other",\n"base": "/5349/ta.ta.com.s/na.can.ont.toronto",\n"custom_targeting": {\n"pos": "housepromo"\n}\n},\n{\n"tgt": "gpt-ad-300x250-300x600-bottom",\n"size": [\n[\n300,\n250\n],\n[\n300,\n600\n]\n],\n"type": "medium_rectangle_bottom",\n"base": "/5349/ta.ta.com.s/na.can.ont.toronto",\n"custom_targeting": {\n"pos": "bottom"\n}\n},\n{\n"tgt": "gpt-ad-728x90-a",\n"size": [\n[\n728,\n90\n]\n],\n"type": "leaderboard_a",\n"base": "/5349/ta.ta.com.s/na.can.ont.toronto",\n"custom_targeting": {\n"pos": "a"\n}\n},\n{\n"tgt": "gpt-ad-728x90-b",\n"size": [\n[\n728,\n90\n]\n],\n"type": "leaderboard_b",\n"base": "/5349/ta.ta.com.s/na.can.ont.toronto",\n"custom_targeting": {\n"pos": "b"\n}\n},\n{\n"tgt": "gpt-ad-728x90-c",\n"size": [\n[\n728,\n90\n]\n],\n"type": "leaderboard_c",\n"base": "/5349/ta.ta.com.s/na.can.ont.toronto",\n"custom_targeting": {\n"pos": "c"\n}\n},\n{\n"tgt": "gpt-ad-728x90-d",\n"size": [\n[\n728,\n90\n]\n],\n"type": "leaderboard_d",\n"base": "/5349/ta.ta.com.s/na.can.ont.toronto",\n"custom_targeting": {\n"pos": "d"\n}\n}\n]\n};\nif( adStubsJSON && adStubsJSON.adTypes ) {\nta.store('ads.adStubs', adStubsJSON.adTypes);\n}\nta.store('ads.gptBase', '/5349/ta.ta.com.s/na.can.ont.toronto' );\nta.common.ads.initDoubleClick();\n}, 'Load GPT Ad JS'\n);\n(function() {\nif(require.defined('ta/sales/metaClickComScoreTag')) {\nvar tracker = require('ta/sales/metaClickComScoreTag');\ntracker.addTrackingProvider({"brandName":"","trackingPixel":"https://pubads.g.doubleclick.net/activity;xsp=588371;ord=[timestamp]?","locationIds":"","parentGeoId":"","vendorName":"Agoda.com","providerName":""});\ntracker.addTrackingProvider({"brandName":"","trackingPixel":"https://pubads.g.doubleclick.net/activity;xsp=584411;ord=[timestamp]?","locationIds":"","parentGeoId":"","vendorName":"TripAdvisor","providerName":"AgodaIB"});\ntracker.addTrackingProvider({"brandName":"Ramada","trackingPixel":"https://pubads.g.doubleclick.net/activity;xsp=592931;ord=[timestamp]?","locationIds":"","parentGeoId":"191","vendorName":"TripAdvisor","providerName":"WyndhamIB"});\ntracker.addTrackingProvider({"brandName":"Days Inn","trackingPixel":"https://pubads.g.doubleclick.net/activity;xsp=593411;ord=[timestamp]?","locationIds":"","parentGeoId":"191","vendorName":"TripAdvisor","providerName":"WyndhamIB"});\ntracker.addTrackingProvider({"brandName":"Baymont Inn and Suites","trackingPixel":"https://pubads.g.doubleclick.net/activity;xsp=593891;ord=[timestamp]?","locationIds":"","parentGeoId":"191","vendorName":"TripAdvisor","providerName":"WyndhamIB"});\ntracker.registerEvents();\n}\n})();\nvar avlb_hero_photos = "https://static.tacdn.com/css2/modules/avlb_hero_photos-v23950307902a.css";\nvar checkRatesCSS = "https://static.tacdn.com/css2/modules/checkrates-v21462672672a.css";\nvar regflowCss = "https://static.tacdn.com/css2/registration-v24282768348a.css";\nvar overlayCss = "https://static.tacdn.com/css2/overlays_defer-v2659065774a.css";\nvar amenityOverlayCss = "https://static.tacdn.com/css2/amenities_flyout-v21660573287a.css";\nvar amenityLightboxCss = "https://static.tacdn.com/css2/amenities_lightbox-v2806140742a.css";\nvar conceptsCss = "https://static.tacdn.com/css2/accommodations/top_concepts-v23534996259a.css";\nvar avlbCss = "https://static.tacdn.com/css2/overlays/alsoViewed-v22190906332a.css";\nvar avlbTestCss = "https://static.tacdn.com/css2/overlays/alsoViewed_test-v2430392620a.css";\nvar VRCrossSellCss = "https://static.tacdn.com/css2/modules/vr_cross_sell-v24168044193a.css";\nvar chkMoreCss = "https://static.tacdn.com/css2/modules/checkmore-v23062822448a.css";\nvar chkMoreSpritesCss = "https://static.tacdn.com/css2/checkmore_pack-en_CA.css";\nvar privateMsgCSS = "https://static.tacdn.com/css2/modules/private_messaging-v2580065107a.css";\nvar recentViewedCSS = "https://static.tacdn.com/css2/common/recently_viewed-v2628695694a.css";\nvar checkRatesLBCss = "https://static.tacdn.com/css2/check_rates_lb-v22588145076a.css";\nvar jfyOverlayCss = "https://static.tacdn.com/css2/p13n/jfy_onboarding.css";\nvar floatingMapCSS = "https://static.tacdn.com/css2/modules/floating_map-v21560755032a.css";\nvar g_mapV2Css = "https://static.tacdn.com/css2/ta-mapsv2-v2540145079a.css";\nvar t4bSlideshowCSS = "https://static.tacdn.com/css2/modules/t4b_slideshow-v21730547471a.css";\nvar dhtml_cr_redesign_png24 = "https://static.tacdn.com/css2/overlays/cr_flyout-v22544950678a.css";\nta.store('checkrates.check_more_re',true);\nta.store('checkrates.check_more_re_center_large_hero_photos',true);\nta.store('checkrates.check_more_hero_photos',true);\nta.store('checkrates.center_overlay',true);\nta.store('popunder.similar_hotels', true);\nta.store('popunder.similar_hotels_new_rules', true);\nta.store('popunder.suppress_half_day', true);\nta.store('checkrates.chrome_dates_entry_holding',true);\nta.store('checkrates.cr_popunder_by_shift_ctrl',true);\nta.store('p13n_client_tracking_tree',true);\nta.store('commerce_on_srp',true);\nta.store('useHotelsFilterState', true);\nta.store('similar_hotels_exit_window_chevron', true);\nta.store('fall_2013_masthead_refresh', true);\nta.store('ta.media.uploader.cssAsset', 'https://static.tacdn.com/css2/overlays/media_uploader-v23141074533a.css')\nta.meta && ta.meta.linkTracking && ta.queueForLoad(function() { ta.meta.linkTracking.setup(); }, 'setup meta link tracking event');\nta.store('sem_provider_availability_sort', true);\nta.store('sem_provider_availability_sort_respects_autobroadening', true);\nta.store('assisted_booking_clicks_new_tab', true);\nta.queueForLoad(function() {\nif(typeof js_error_array != "undefined") {\nArray.each(js_error_array, function onErrorFuncPost(js_error) {\nif(js_error && js_error.msg) {\nvar jsMsg = js_error.msg;\ndelete js_error['msg'];\nvar jsErr = null;\nif(js_error.error) {\njsErr = js_error.error;\ndelete js_error['error'];\n}\nvar isTaNotDefinedError =\njsMsg &&\ntypeof jsMsg === 'string' &&\njsMsg.indexOf('ta is not defined') >= 0;\nif(!isTaNotDefinedError) {\nta.util.error.record(jsErr, "window.onerror:: " + jsMsg, null, js_error);\n}\n}\n});\nta.store('ta.onload.errors', true);\n}\nta.store('ta.js_error_array.processed', true);\n}, 'record onload errors');\ntry {\nif(true || false) {\nif (window.ta && ta.common && ta.common.dmp && ta.common.dmp.store) {\nta.common.dmp.store.storeValue("dmpEnabled", true);\nta.common.dmp.store.storeValue("dmpBlueKaiEnabled", true);\nta.common.dmp.store.storeValue("dmpPerfLoggingEnabled", false);\nta.common.dmp.store.storeValue("dmpConsoleDebugEnabled", false);\nta.common.dmp.store.storeValue("dmpMetaExposedEnabled", false);\nta.common.dmp.store.storeValue("dmpBlueKaiEnableMultipleIframes", true);\nif (ta.common && ta.common.dmp && ta.common.dmp.bluekai) {\nta.common.dmp.store.setActiveDMP( ta.common.dmp.bluekai);\n}\nelse if (ta && ta.util && ta.util.error && ta.util.error.record) {\nta.util.error.record.apply(this, [null, "DMP JavaScript not found"]);\n}\nta.common.dmp.store.storeValue("taUUID", "b1YLTAzlr4VmKcNH8rqK2IYruLOkuNNUZtcvThhFtSonuvWISCXjiA==");\nta.common.dmp.store.setBehaviors({\n"ServletName" : [\n"Attractions"\n]\n, "POS" : [\n"com"\n]\n, "p2p_geos_viewed" : [\n"0"\n]\n, "p2p_geos_countries_viewed" : [\n"0"\n]\n, "p2p_geos_us_states_viewed" : [\n"0"\n]\n, "ls_p" : [\n"pwt_UNCERTAIN"\n]\n, "ls_t" : [\n"y_UNCERTAIN"\n]\n, "ls_ng" : [\n"y_UNCERTAIN"\n]\n, "ls_fg" : [\n"y_ALMOST_CERTAIN"\n]\n, "Zone" : [\n"na.can.ont.toronto"\n]\n, "GeoID" : [\n"155019"\n]\n});\n}\nif (ta.common && ta.common.dmp && ta.common.dmp.store) {\nta.common.dmp.store.storeValue('dmpMeasureTest', false);\nta.common.dmp.store.storeValue('dmpReviewReadTest', false);\n}\nif (ta.queueForLoad) {\nta.queueForLoad(function() {\nif (ta.common && ta.common.dmp) {\nta.common.dmp.init();\n}\n},"initialize DMP framework");\n}\n}\n}\ncatch(e) {\nif (window.ta && ta.util && ta.util.error && ta.util.error.record) {\nta.util.error.record.apply(this, [e, "generic exception in ads_dmp_js.vm"]);\n}\n}\n;\nta.store('access_control_headers', true);\nta.store('secure_registration.enabled',true);\nta.store( 'meta.disclaimerLinkText', 'Disclaimer' );\nta.store('restaurant_reserve_ui',true);\nta.store('hotels_placements_short_cells.overlaysCss', "https://static.tacdn.com/css2/hotels_list_short_cells_overlays-v22724604168a.css" );\n</script>\n<script class="allowabsoluteurls" type="text/javascript">\n(function(G,o,O,g,L,e){G[g]=G[g]||function(){(G[g]['q']=G[g]['q']||[]).push(\narguments)},G[g]['t']=1*new Date;L=o.createElement(O),e=o.getElementsByTagName(\nO)[0];L.async=1;L.src='//www.google.com/adsense/search/async-ads.js';\ne.parentNode.insertBefore(L,e)})(window,document,'script','_googCsa');\n(function(){\nfunction addCallback(boxName, obj){\nobj.adLoadedCallback = function(containerName, adsLoaded){\nvar el = document.getElementById(boxName);\nif(el && !adsLoaded){\ntry {\n// remove container if we do not have ads to show\nel.parentNode.removeChild(el);\n} catch(e){\nta.util.error.record(e, 'Google CSA');\n}\n}\n};\nreturn obj;\n}\n_googCsa(\n'ads',\n{\n"pubId": "tripadvisor",\n"channel": "Attractions-en_CA",\n"query": "Things to do in Toronto",\n"queryLink": "Attractions",\n"queryContext": " Toronto, Ontario",\n"adPage": 1,\n"hl": "en",\n"linkTarget": "_blank",\n"plusOnes": false,\n"sellerRatings": false,\n"siteLinks": false,\n"domainLinkAboveDescription": true\n}\n);\n}());\n</script>\n<script class="allowAbsoluteUrls" type="text/javascript">\nta.store('ta.registration.currentUrlDefaults', {'url' : 'http%3A__2F____2F__www__2E__tripadvisor__2E__ca__2F__Attractions__2D__g155019__2D__Activities__2D__Toronto__5F__Ontario__2E__html','partnerKey' : '1','urlKey' : '28615a16f2225184a'} );\n</script>\n<script type="text/javascript">\nvar ta = window.ta || {};\nta.common = ta.common || {};\nta.common.ads = ta.common.ads || {};\nta.common.ads.remarketingOptions = ta.common.ads.remarketingOptions || {};\nvar storage;\nif (ta.util && ta.util.localstorage && ta.util.localstorage.canUseLocalStore()) {\nstorage = localStorage;\n} else if (ta.util && ta.util.sessionStorage && ta.util.sessionStorage.canUseSessionStore()) {\nstorage = sessionStorage;\n}\nvar storedDate = storage && storage.getItem('tac.selectedDate') || '';\n(function() {\nvar store = function(key, val) { ta.common.ads.remarketingOptions[key] = val; };\nstore('pixelServlet', 'PageMoniker');\nstore('pixelList', "criteo_attraction_pixel,crosswise_pixel,facebook_vi_attraction_pixel");\nstore('pixelsEnabled', true);\nstore('clickoutPixelsEnabled', true);\nstore('ibPixelsEnabled', true);\nstore('cacheMobileClickoutResponse', false);\nstore('pixelContext', {\ngeoId: "155019",\ncurLocId: "155019",\nvrRemarketingLocation: "",\nlocIds: "",\nblTabIdx: "",\nservlet: "Attractions",\nuserUnique: "72c29cf4ec2721b43ee781c4fcc321efdf7a5be4",\n});\nvar delayedLoadFunc = function() {\nsetTimeout(function() {\nif (ta.common.ads.loadMonikers) {\nta.common.ads.loadMonikers();\n}\n}, 2000);\n};\nif (ta.queueForLoad)\n{\nta.queueForLoad(delayedLoadFunc, 'Remarketing');\n} else if (window.attachEvent && !window.addEventListener) {\nwindow.attachEvent('load', delayedLoadFunc);\n} else {\nwindow.addEventListener('load', delayedLoadFunc);\n}\n})();\n</script>\n<script type="text/javascript">\nta.store('ta.isIE11orHigher', false);\n</script>\n<script type="text/javascript">\nta.store('hac_timezone_awareness', true);\nta.store('ta.hac.locationTimezoneOffset', -18000000);\n</script>\n<script type="text/javascript">\nta.store("calendar.serverTime", 1487732595246);\n</script>\n<script type="text/javascript">\nta.store("commerce_clicks_in_new_tab.isEnabled", true);\n</script>\n<script type="text/javascript">\nta.store('meta.meta_chevron_module_2014', true);\n</script>\n<script type="text/javascript">\nta.store('assisted_booking_desktop_entry', false);\nta.store('ibdm_impression_tracking', true);\nta.store('assisted_booking_desktop_entry.logTreePoll', true);\n</script>\n<script type="text/javascript">\nta.store("common_update_results","Update Results"); ta.store("airm_updateSearchLabel","Update Search"); </script>\n<script type="text/javascript">\nta.store('guests_rooms_picker.enabled', true);\nta.queueForLoad(function() {\nta.widgets.calendar.updateGuestsRoomsPickerDataFromCookie();\nta.widgets.calendar.updateGuestsRoomsPickerUI();\n});\n</script>\n<script type="text/javascript">\nta.store('singular_room_da', 'room');\nta.store('plural_rooms_da', 'rooms');\nta.store('rgPicker.nRooms', [\n'0 room',\n'1 room',\n'2 rooms',\n'3 rooms',\n'4 rooms',\n'5 rooms',\n'6 rooms',\n'7 rooms',\n'8 rooms' ]\n);\nta.store('singular_guest_da', 'guest');\nta.store('plural_guests_da', 'guests');\nta.store("rgPicker.nGuests", [\n'0 guest',\n'1 guest',\n'2 guests',\n'3 guests',\n'4 guests',\n'5 guests',\n'6 guests',\n'7 guests',\n'8 guests',\n'9 guests',\n'10 guests',\n'11 guests',\n'12 guests',\n'13 guests',\n'14 guests',\n'15 guests',\n'16 guests',\n'17 guests',\n'18 guests',\n'19 guests',\n'20 guests',\n'21 guests',\n'22 guests',\n'23 guests',\n'24 guests',\n'25 guests',\n'26 guests',\n'27 guests',\n'28 guests',\n'29 guests',\n'30 guests',\n'31 guests',\n'32 guests',\n'33 guests',\n'34 guests',\n'35 guests',\n'36 guests',\n'37 guests',\n'38 guests',\n'39 guests',\n'40 guests',\n'41 guests',\n'42 guests',\n'43 guests',\n'44 guests',\n'45 guests',\n'46 guests',\n'47 guests',\n'48 guests',\n'49 guests',\n'50 guests',\n'51 guests',\n'52 guests',\n'53 guests',\n'54 guests',\n'55 guests',\n'56 guests',\n'57 guests',\n'58 guests',\n'59 guests',\n'60 guests',\n'61 guests',\n'62 guests',\n'63 guests',\n'64 guests' ]\n); ta.store("rgPicker.nAdults", [\n'0 adult',\n'1 adult',\n'2 adults',\n'3 adults',\n'4 adults',\n'5 adults',\n'6 adults',\n'7 adults',\n'8 adults',\n'9 adults',\n'10 adults',\n'11 adults',\n'12 adults',\n'13 adults',\n'14 adults',\n'15 adults',\n'16 adults',\n'17 adults',\n'18 adults',\n'19 adults',\n'20 adults',\n'21 adults',\n'22 adults',\n'23 adults',\n'24 adults',\n'25 adults',\n'26 adults',\n'27 adults',\n'28 adults',\n'29 adults',\n'30 adults',\n'31 adults',\n'32 adults' ]\n); ta.store("rgPicker.nChildren", [\n'0 children',\n'1 child',\n'2 children',\n'3 children',\n'4 children',\n'5 children',\n'6 children',\n'7 children',\n'8 children',\n'9 children',\n'10 children',\n'11 children',\n'12 children',\n'13 children',\n'14 children',\n'15 children',\n'16 children',\n'17 children',\n'18 children',\n'19 children',\n'20 children',\n'21 children',\n'22 children',\n'23 children',\n'24 children',\n'25 children',\n'26 children',\n'27 children',\n'28 children',\n'29 children',\n'30 children',\n'31 children',\n'32 children' ]\n); ta.store("rgPicker.nGuestsForChildren", [\n'0 guest',\n'1 guest',\n'2 guests',\n'3 guests',\n'4 guests',\n'5 guests',\n'6 guests',\n'7 guests',\n'8 guests',\n'9 guests',\n'10 guests',\n'11 guests',\n'12 guests',\n'13 guests',\n'14 guests',\n'15 guests',\n'16 guests',\n'17 guests',\n'18 guests',\n'19 guests',\n'20 guests',\n'21 guests',\n'22 guests',\n'23 guests',\n'24 guests',\n'25 guests',\n'26 guests',\n'27 guests',\n'28 guests',\n'29 guests',\n'30 guests',\n'31 guests',\n'32 guests',\n'33 guests',\n'34 guests',\n'35 guests',\n'36 guests',\n'37 guests',\n'38 guests',\n'39 guests',\n'40 guests',\n'41 guests',\n'42 guests',\n'43 guests',\n'44 guests',\n'45 guests',\n'46 guests',\n'47 guests',\n'48 guests',\n'49 guests',\n'50 guests',\n'51 guests',\n'52 guests',\n'53 guests',\n'54 guests',\n'55 guests',\n'56 guests',\n'57 guests',\n'58 guests',\n'59 guests',\n'60 guests',\n'61 guests',\n'62 guests',\n'63 guests',\n'64 guests' ]\n); ta.store("rgPicker.nChildIndex", [\n'Child 0',\n'Child 1',\n'Child 2',\n'Child 3',\n'Child 4',\n'Child 5',\n'Child 6',\n'Child 7',\n'Child 8',\n'Child 9',\n'Child 10',\n'Child 11',\n'Child 12',\n'Child 13',\n'Child 14',\n'Child 15',\n'Child 16',\n'Child 17',\n'Child 18',\n'Child 19',\n'Child 20',\n'Child 21',\n'Child 22',\n'Child 23',\n'Child 24',\n'Child 25',\n'Child 26',\n'Child 27',\n'Child 28',\n'Child 29',\n'Child 30',\n'Child 31',\n'Child 32' ]\n);\nta.store('rooms_guests_picker_update_da', 'Update');\nta.store("best_prices_with_dates_21f3", 'Best prices for \\074span class=\\"dateHeader inDate\\"\\076checkIn\\074/span\\076 - \\074span class=\\"dateHeader outDate\\"\\076checkOut\\074/span\\076');\n</script>\n<script type="text/javascript">\n</script>\n<script type="text/javascript">\nta.store('commerce_history_injection.enabled', true);\nta.queueForLoad(function() {\nif( !window.history || !window.history.state || !window.history.state.fromBackClick ) {\nreturn;\n}\ndelete window.history.state.fromBackClick;\nta.trackEventOnPage("COMMERCE_HISTORY_INJECT", "back_button_clicked", "");\nta.fireEvent('backToHistoryInject', 'abcFocus');\n});\n</script>\n<script type="text/javascript">\nta.localStorage && ta.localStorage.set('latestPageServlet', 'Attractions');\n</script>\n<script type="text/javascript">\nta.queueForLoad(function() {\nif(!ta.overlays || !ta.overlays.Factory) {\nta.load('ta-overlays');\n}\n}, 'preload ta-overlays');\n</script>\n<script type="text/javascript">\nta.store('screenSizeRecord', true);\n</script>\n<script type="text/javascript">\nta.store('meta_focus_no_servlet_in_key', true);\nta.store('meta_focus_seen_timeout', 259200 * 1000); </script>\n<script type="text/javascript">\nta.store('feature.CHILDREN_SEARCH', true);\n</script>\n<script type="text/javascript">\nta.store('feature.flat_buttons_sitewide', true);\n</script>\n<script type="text/javascript">\nta.loadInOrder(["https://static.tacdn.com/js3/bounce_user_tracking-c-v23087222567a.js"])\n</script>\n<script type="text/javascript">\nta.store("dustGlobalContext", '{\\"IS_IELE8\\":false,\\"LOCALE\\":\\"en_CA\\",\\"IS_IE10\\":false,\\"CDN_HOST\\":\\"https:\\/\\/static.tacdn.com\\",\\"DEVICE\\":\\"desktop\\",\\"IS_RTL\\":false,\\"LANG\\":\\"en\\",\\"DEBUG\\":false,\\"READ_ONLY\\":false,\\"POS_COUNTRY\\":153339}');\n</script>\n<script async="" crossorigin="anonymous" data-rup="desktop-calendar-templates-dust-en_CA" src="https://static.tacdn.com/js3/desktop-calendar-templates-dust-en_CA-c-v2527950698a.js" type="text/javascript"></script>\n<script type="text/javascript">\nta.store('tablet_google_search_app_open_same_tab', true);\n</script>\n<!--trkP:Maps_MetaBlock-->\n<!-- PLACEMENT maps_meta_block -->\n<div class="ppr_rup ppr_priv_maps_meta_block" id="taplc_maps_meta_block_0">\n</div>\n<!--etk-->\n<script type="text/javascript">\n/* <![CDATA[ */\nta.pageModuleName='servlets/attractionsnarrow';\nrequire([ta.pageModuleName], function(module) {\nta.page = module;\nta.page.init(\nJSON.parse('{}')\n);});\nta.queueForReady( function() {\nrequire(['popunder/popunder-manager', 'popunder/chrome-new-window-strategy', 'popunder/contextual-provider'], function(manager, strategy, provider) {\nprovider.init({"FALLBACK":{"priority":0,"behaviour":"INCLUDE"},"DEFAULT":{"priority":10,"behaviour":"INCLUDE"},"ATTRACTION_REVIEW":{"priority":20,"behaviour":"INCLUDE"},"GEO_HOTELS":{"priority":30,"behaviour":"INCLUDE"},"HOTEL_DETAIL":{"priority":40,"behaviour":"INCLUDE"},"FLIGHTS":{"priority":100,"behaviour":"INCLUDE"}}, true); manager.init(strategy, provider,true);\n});\n}, 100, 'initialize popunders');(function(){\nvar define = ta.p13n.placements.define.bind(ta.p13n.placements,'hotels_redesign_header','handlers');\n//Private javascript for hotels_checkbox_filter_header\ndefine(["placement"], function() {\n_openMap = function(mapVer) {\nvar args = null;\nif(ta.has('filters.searchedPoiMapData')) {\nvar userPoi = ta.retrieve('filters.searchedPoiMapData');\nargs = {\nlatitude: userPoi.lat,\nlongitude: userPoi.lng,\nuserPoi: userPoi\n};\n}\nrequireCallLast('ta/maps/opener', 'open', mapVer, null, null, args)\n}\nreturn {\nopenMap: _openMap\n};\n});\n})();\nta.plc_hotels_redesign_header_0_handlers = ta.p13n.placements.load('hotels_redesign_header','handlers.js', { 'name': 'hotels_redesign_header', 'occurrence': 0, 'id': 'taplc_hotels_redesign_header_0', 'location_id': 155019, 'servletName': 'Attractions','servletClass': 'com.TripResearch.servlet.attraction.AttractionOverview', 'modules': ["handlers"], 'params': {}, 'data': {}});\n(function(){\nvar define = ta.p13n.placements.define.bind(ta.p13n.placements,'attraction_viator_categories','handlers');\ndefine(["placement"], function(placement) {\n"use strict";\nta.trackEventOnPage('Attraction_Categories_Module', 'Impression', 'visible', 0, true);\nta.queueForLoad(registerAutoResizeListener);\nvar groupState = {}; // Keeps if a group has "See more" state toggled on or off. Missing value indicates off.\n/**\n* Called during page init on attraction_overview_narrow.vm to register\n* an event listener for the onAttractionFilterChange event so that we can\n* resize the font-size for price\n*/\nfunction registerAutoResizeListener() {\nwindow.addEvent('onAttractionFilterChange', function () {\nautoResize(ta.id(placement.id));\n});\n}\n/**\n* Handles the onClick action for the "See More Top Selling Tours & Activities" link.\n*/\nfunction showMoreGroups() {\nta.trackEventOnPage('A_Product_SeeMore', 'More Categories', 'See More', 0, false);\nvar container = ta.id(placement.id);\nvar moreGroups = container.getElement('.more_groups');\nvar seeMoreGroups = container.getElement('.see_more_groups');\nvar images = moreGroups.getElements('.tile_container.primary img');\nloadImages(images);\nmoreGroups.removeClass('hidden');\nseeMoreGroups.addClass('hidden');\nautoResize(ta.id(placement.id));\n}\n/**\n* Opens the Attraction Products page\n* @param link\n*/\nfunction openAttractionProducts(link) {\nta.trackEventOnPage('A_Product_SeeMore', 'More Categories', 'See More', 0, false);\nwindow.open(link ,'_blank');\n}\n/**\n* Changes sets the src attribute on images that were hidden to start with\n* @param images\n*/\nfunction loadImages(images) {\nif (images && images.length > 0) {\nfor (var i = 0; i < images.length; i++) {\nvar image = images[i];\nvar src = image.get('src');\nif (!src || !src.length) {\nimage.set('src', image.get('data-lazy-src'));\n}\n}\n}\n}\n/**\n* Handler for the "See more", "See less" links.\n*\n* @param spanElement The element that the click action is invoked on\n* @param groupId The group to toggle more/less view on\n*/\nfunction toggleGroup(spanElement, groupId) {\nvar shown = !!groupState[groupId]; // Absence of property or false indicates shown\nif (shown) {\nshowLess(groupId);\nvar labelShowMore = spanElement.get('data-show-label');\nspanElement.set('html', labelShowMore);\n} else {\nshowMore(groupId);\nvar hideTarget = spanElement.get('data-hide-target');\nif ("true" === hideTarget) {\nspanElement.addClass("hidden");\n} else {\nvar labelShowLess = spanElement.get('data-hide-label');\nspanElement.set('html', labelShowLess);\n}\n}\nautoResize(ta.id(placement.id));\n}\n/**\n* Makes the additional products visible for a given group\n* @param groupId\n*/\nfunction showMore(groupId) {\nta.trackEventOnPage('A_Product_SeeMore', 'Categories', 'See More', groupId, false);\nvar container = ta.id(placement.id);\nvar section = container.getElement('.top_picks_section.group_' + groupId);\nif (!section) {\nreturn;\n}\nvar moreTopPicks = section.getElement('.more_top_picks');\nvar images = moreTopPicks.getElements('img');\nloadImages(images);\nmoreTopPicks.removeClass('hidden');\ngroupState[groupId] = true; // Shown = true\n}\n/**\n* Hides the additional products that were made visible\n* @param groupId\n*/\nfunction showLess(groupId) {\nta.trackEventOnPage('A_Product_SeeMore', 'Categories', 'See Less', groupId, false);\nvar container = ta.id(placement.id);\nvar section = container.getElement('.top_picks_section.group_' + groupId);\nif (!section) {\nreturn;\n}\nvar moreTopPicks = section.getElement('.more_top_picks');\nmoreTopPicks.addClass('hidden');\ngroupState[groupId] = false; // Shown = false\n}\nfunction moreInfo(source, link, sourceType) {\nta.stopEvent(window.event);\nvar sectionElement = source.getParent("div.top_picks_section");\nvar tileElement = source.getParent("div.tile");\nif (sectionElement) {\nvar row = sectionElement.get('data-group-row');\nvar allTilesInSection = sectionElement.getElements('div.tile');\nvar clickedTile = 0;\nfor (var i = 0; i < allTilesInSection.length; i++) {\nif (allTilesInSection[i] == tileElement) {\nclickedTile = i + 1;\nbreak;\n}\n}\nvar specialOffer = tileElement.get('data-special-offer');\nif (specialOffer) {\nvar offerInfo = "specialOffer: " + tileElement.get('data-product');\n}\nta.trackEventOnPage('A_Product_Tile_Click', sourceType, offerInfo, clickedTile, false);\n}\nwindow.open(link ,'_blank');\n(new Event(event)).stopPropagation();\nreturn false;\n}\n/**\n* When the page is first loaded, it will fire ta.util.element.autoResizeTextInNode to resize the price font-size, but when you click the "See more" link\n* the ta.util.element.autoResizeTextInNode will not be fired again. So we create a autoResize() method for resizing the price font-size\n* when user clicks the "See more" in the page\n*/\nfunction autoResize(element) {\nif (element && ta && ta.util && ta.util.element && ta.util.element.autoResizeTextInNode) {\nta.util.element.autoResizeTextInNode(element);\n}\n}\nreturn {\nopenAttractionProducts: openAttractionProducts,\nshowMoreGroups: showMoreGroups,\ntoggleGroup: toggleGroup,\nmoreInfo: moreInfo,\nreset: function() {\ngroupState = {};\n}\n}\n});})();\nta.plc_attraction_viator_categories_0_handlers = ta.p13n.placements.load('attraction_viator_categories','handlers.js', { 'name': 'attraction_viator_categories', 'occurrence': 0, 'id': 'taplc_attraction_viator_categories_0', 'location_id': 155019, 'servletClass': 'com.TripResearch.servlet.attraction.AttractionOverview', 'servletName': 'Attractions', 'modules': ["handlers"], 'params': {}, 'data': {}});\nif (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],["ta"]);}\ndefine("ta/common/Repoll", ["vanillajs", "ta", "utils/objutils", "api-mod", "ta/util/Error", "utils/ajax", 'ta/Core/TA.Event'],\nfunction(vanilla, ta, objutils, api, taError, ajax, taEvent) {\nvar Repoll = function(options) {\noptions = options || {};\nvar pageUrl\n, baseUrl\n, requestNum = 1\n, timeoutSeqNum = 0\n, currentRequest = null\n, repollMethod = "POST"\n, needRequest = false\n, currentParams = {}\n, oneTimeParams = {}\n, currentChangeSet = null\n, willEvaluateScripts = !!options.evaluateScripts\n, placement = options.placement || "page";\nvar decodeURLParamValue = function(value) {\nif (value) {\nreturn decodeURIComponent(value.replace(/\\+/g, ' '));\n} else {\nreturn value;\n}\n};\nvar setPageUrl = function(url){\nvar queryString\n, parts;\npageUrl = url.split('#')[0];\nbaseUrl = pageUrl.split('?')[0];\ncurrentParams={};\nqueryString = pageUrl.split('?')[1] || "";\nparts = queryString.split('&');\nfor (var i = 0; i < parts.length; i++) {\nvar nv = parts[i].split('=');\nif (nv[0]) {\ncurrentParams[decodeURIComponent(nv[0])] = decodeURLParamValue(nv[1]);\n}\n}\n};\nvar repoll = function(resetCount) {\n_triggerPoll(!!resetCount,[]);\n};\nvar setAjaxParams = function(params, changeset) {\nif (_assignParams(currentParams, params)) {\n_triggerPoll(true, changeset);\n}\n};\nvar setAjaxParamsNoPoll = function (params) {\nif (_assignParams(currentParams, params)) {\nrequestNum = 0;\n}\n};\nvar getAjaxParams = function() {\nreturn currentParams;\n};\nvar setOneTimeParams = function(params, changeset) {\n_assignParams(oneTimeParams, params || {});\n_triggerPoll(true, changeset);\n};\nvar _assignParams = function(target, source) {\nif (!source) {\nreturn false;\n}\nvar changed = false\n, keys = Object.keys(source || {});\nfor (var i = keys.length - 1; i >= 0; i--) {\nvar name = keys[i];\nif (target[name] !== source[name]) {\nchanged = true;\n}\ntarget[name] = source[name];\n}\nreturn changed;\n};\nvar setNotDone = function() {\n_triggerPoll(false);\n};\nvar setMethod = function(method) {\nrepollMethod = method;\n};\nvar isUpdatePending = function() {\nreturn !!(currentRequest || needRequest);\n};\nvar getLastRequestNum = function() {\nreturn requestNum;\n};\nvar setScriptsEval = function(willEval) {\nwillEvaluateScripts = willEval ? true : false;\n};\nvar isScriptsEvalEnabled = function() {\nreturn willEvaluateScripts;\n};\nvar _triggerPoll = function(resetCount, changeset) {\nvar newTSNum;\nif (resetCount && !needRequest) {\ncurrentChangeSet = {};\n}\nif (changeset && currentChangeSet) {\nif (typeof(changeset)==='string') {\ncurrentChangeSet[changeset]=true;\n} else {\nobjutils.each(changeset, function(i,v) {currentChangeSet[v]=true;});\n}\n} else {\ncurrentChangeSet = null;\n}\nif (needRequest) {\nif (!resetCount || requestNum === 0) {\nreturn;\n}\n}\nif (resetCount) {\nrequestNum = 0;\n}\nvar timeout = _getNextTimeout();\nif (timeout >= 0) {\nneedRequest = true;\nnewTSNum = ++timeoutSeqNum;\nwindow.setTimeout(function () {\n_timeForRequest(newTSNum)\n}, timeout);\n}\nelse {\ntaEvent.fireEvent('hac-could-not-complete');\n_onError();\n}\n};\nvar _timeForRequest = function(seqNum) {\nif (currentRequest || !needRequest || seqNum !== timeoutSeqNum) {\nreturn;\n}\nvar reqNum = ++requestNum;\nvar data = objutils.extend({}, currentParams, oneTimeParams);\nvar changeArray=null;\ndata.reqNum = reqNum;\nif (currentChangeSet) {\nchangeArray=[];\nobjutils.each(currentChangeSet, function(n,v) {if (v) {changeArray.push(n);}});\ndata.changeSet = changeArray.toString();\n}\nneedRequest = false;\ncurrentRequest = ajax({\nmethod: repollMethod,\nurl: baseUrl,\ndata: api.toFormQueryString(data),\ndataType: 'html',\ncache: false,\nevalScripts: isScriptsEvalEnabled(),\nsuccess: _onSuccess,\nerror: _onError\n});\n};\nfunction fireTargetEvents(element) {\nif (!element) {\nreturn;\n}\nvar targets = element.querySelectorAll('[data-targetEvent]');\nif (!targets) {\nreturn;\n}\nvar targetArray;\ntry {\ntargetArray = Array.prototype.slice.call(targets);\n}\ncatch (err) {\ntargetArray = [];\nfor (var i=0; i<targets.length; i++)\n{\ntargetArray.push(targets[i]);\n}\n}\ntargetArray.forEach(function(curChild) {\nvar target = curChild.getAttribute("data-targetEvent");\nif (target) {\ntry {\ntaEvent.fireEvent(target, curChild);\n} catch (e) {\ntaError.record(e, {errorMessage: "ERROR in handler for " + target});\n}\n}\n});\n}\nvar _onSuccess = function(responseHtml) {\nvar responseDOM = document.createElement('div');\nresponseDOM.innerHTML = responseHtml;\nvar repollCheck = needRequest;\ncurrentRequest = null;\noneTimeParams = {};\ncurrentChangeSet = (currentChangeSet ? {} : null);\nfireTargetEvents(responseDOM);\nif (placement === "page") {\nif (!responseDOM.querySelector('[data-targetEvent="' + placement + '-repoll-not-done"]')) {\ntaEvent.fireEvent(window, "MetaFetchComplete");\n}\n}\ncurrentRequest = null;\nif (repollCheck) {\n_timeForRequest(++timeoutSeqNum);\n}\n};\nvar _onError = function() {\nvar repollCheck = needRequest;\ncurrentRequest = null;\nif (repollCheck) {\n_timeForRequest(++timeoutSeqNum);\n} else {\ntaEvent.fireEvent(placement + "-repoll-failed");\n}\n};\nfunction _getNextTimeout() {\nswitch (requestNum || 0) {\ncase 0:\nreturn 10;\ncase 1:\ncase 2:\ncase 3:\ncase 4:\nreturn 1000;\ncase 5:\ncase 6:\ncase 7:\nreturn 1500;\ncase 8:\ncase 9:\ncase 10:\nreturn 2000;\ncase 11:\nreturn 5000;\ncase 12:\nreturn 9000;\ncase 13:\nreturn 10000;\ncase 14:\nreturn 11000;\ncase 15:\nreturn 12000;\ndefault:\nreturn -1;\n}\n}\nta.on(placement + "-repoll-not-done", setNotDone);\nsetPageUrl(options.pageUrl || window.location.href);\nreturn {\nsetMethod: setMethod,\nsetPageUrl: setPageUrl,\nrepoll: repoll,\ngetAjaxParams: getAjaxParams,\nsetAjaxParams: setAjaxParams,\nsetAjaxParamsNoPoll: setAjaxParamsNoPoll,\nsetOneTimeParams: setOneTimeParams,\nsetNotDone: setNotDone,\nisUpdatePending: isUpdatePending,\ngetLastRequestNum: getLastRequestNum,\nsetScriptsEval: setScriptsEval,\nisScriptsEvalEnabled: isScriptsEvalEnabled,\nfireTargetEvents : fireTargetEvents\n};\n};\nreturn Repoll;\n});\n(function(){\nvar define = ta.p13n.placements.define.bind(ta.p13n.placements,'maps_meta_block','handlers');\ndefine(['placement', 'ta', 'ta/common/Repoll', 'utils/objutils'],\nfunction (placement, ta, TA_Repoll, objutils) {\n'use strict';\nvar ta_repoll = TA_Repoll({placement: placement.name});\nta_repoll.setPageUrl("/MetaPlacementAjax");\nfunction _onAjaxUpdate(data) {\nif (!data) {\nreturn;\n}\nvar resultDiv = ta.id("maps_meta_block");\nif (!resultDiv) {\nreturn;\n}\nresultDiv.innerHTML = data.innerHTML;\nif (ta.prwidgets) {\nta.prwidgets.initWidgets(resultDiv);\n}\n_updateParams();\nta.fireEvent('refreshedDOMContent', resultDiv);\n}\nfunction _getSponsors() {\nvar sponsors = [];\nArray.prototype.forEach.call(document.querySelectorAll('.inner_poi_map .sponsorDeck .js_markerClassSponsor [type=checkbox]:checked'), function (e) {\nsponsors.push(/sponsor_(\\w+)/.exec(e.className)[1]);\n});\nreturn sponsors.join();\n}\nfunction _getParams() {\nvar element = ta.id("maps_meta_block");\nif (!element)\n{\nreturn void(0);\n}\nvar pin_id = element.getAttribute('data-pinid');\nif (!pin_id){\nreturn void(0);\n}\nvar params = {\n"detail": pin_id,\n"placementName": placement.name,\n"servletClass": placement.servletClass,\n"servletName": placement.servletName,\n"metaReferer": placement.servletName,\n"sponsors": _getSponsors()\n};\nobjutils.extend(params, ta.page.datesToQueryJson('STAYDATES'));\nreturn params;\n}\nfunction _updateParams() {\nvar params = _getParams();\nif (!params) {\nreturn;\n}\nta_repoll.setAjaxParamsNoPoll(params);\n}\nta.queueForLoad(function () {\nif (ta.page && ta.page.on) {\nta.page.on('dateSelected', function (target, dateType) {\nif (dateType !== 'STAYDATES') {\nreturn;\n}\n_updateParams();\nta_repoll.repoll(true);\n});\n}\n}, placement.id);\nta.on('update-' + placement.name, _onAjaxUpdate);\n});})();\nta.plc_maps_meta_block_0_handlers = ta.p13n.placements.load('maps_meta_block','handlers.js', { 'name': 'maps_meta_block', 'occurrence': 0, 'id': 'taplc_maps_meta_block_0', 'location_id': 155019, 'servletClass': 'com.TripResearch.servlet.attraction.AttractionOverview', 'servletName': 'Attractions', 'modules': ["handlers"], 'params': {}, 'data': {}});\ndefine('utils/waiton', ['vanillajs'], function() {\nreturn function(actions, callback, timeout) {\nvar waiting = 0\n, timer = null\n, done = false\n;\nif (!actions || actions.length == 0) {\ncallback();\nreturn;\n}\nfunction onComplete() {\nif (--waiting <= 0 && !done) {\ntimer && clearTimeout(timer);\ndone = true;\ncallback();\n}\n}\nactions.forEach(function(action) {\nwaiting++;\naction(onComplete);\n});\nif (timeout > 0) {\ntimer = setTimeout(function() {\nwaiting = 0;\nonComplete();\n}, timeout);\n}\n};\n});\ndefine('commerce/offerclick',\n['ta', 'mixins/mixin', 'mixins/Events', 'utils/urlutils', 'utils/stopevent', 'utils/waiton', 'vanillajs'],\nfunction (ta, mixin, Events, UrlUtils, stopEvent, waitOn) {\n'use strict';\nvar FROM_PARAM_REGEX = new RegExp("(&|\\\\?)from=[^&]*");\nvar _preclickActions = [];\nvar _preclickHandler = null;\nfunction _expando(token) {\nif (typeof(token) !== 'string') {\nreturn token;\n}\nvar url = UrlUtils.asdf(token.trim()).replace(/&/g, '&');\nif (typeof window !== 'undefined' && window.crPageServlet) {\nurl = url.replace(FROM_PARAM_REGEX, "$1from=HotelDateSearch_" + crPageServlet);\n}\nif (typeof document !== 'undefined' && document.location && document.location.href) {\nvar pageLocId = UrlUtils.getUrlPageLoc(document.location.href);\nif (pageLocId) {\nurl += "&pageLocId=" + pageLocId;\n}\n}\nvar params = UrlUtils.getUrlQueryArgs(url);\nreturn {\nurl: url,\nisBooking: (url.indexOf('/StartBooking') >= 0),\nttP: params.tp,\nttIK: params.ik,\nslot: params.slot,\nproviderName: params.p,\nik: params.ik,\nlocId: (params.d || params.geo),\narea: params.area,\ncontentId: (params.src_0 || params.src),\ntrackingContext: params.btc\n};\n}\nfunction _registerAsyncPreclick(action) {\nif (typeof action === 'function') {\n_preclickActions.push(action);\n}\n}\nfunction _canClickAway(token) {\nif (token.isBooking && typeof ta !== 'undefined' && ta.browser && ta.browser.isIE10Metro()) {\nreturn false;\n}\nif (typeof ta == 'undefined' || !ta.util || !ta.popups || !ta.popups.PopUtil) {\nreturn false;\n}\nreturn true;\n}\nfunction _isSandboxed() {\ntry {\ndocument.domain = document.domain;\n} catch (e) {\nreturn true;\n}\nreturn false;\n}\nfunction _clickAway(token) {\ntoken = _expando(token);\nvar sandboxed = _isSandboxed()\n, winObj = window.open(sandboxed ? token.url : '', '_blank')\n;\nif (!winObj && typeof(Browser) !== 'undefined' && Browser.ie && token.isBooking) {\nif (ta.util && ta.util.cookie) {\nta.util.cookie.setPIDCookie(38822);\n}\n_navigate(token);\nreturn;\n}\n!sandboxed && ta.popups.PopUtil.redirectToUrl(winObj, token.url);\n_preclickActions.forEach(function (action) {\naction(token, function () {\n});\n});\nta.popups.PopUtil.pollForPartnerLoad(winObj, new Date(), token.providerName, token.slot);\n}\nfunction _navigate(token) {\ntoken = _expando(token);\nwaitOn(_preclickActions.map(function (action) {\nreturn action.bind(null, token);\n}), function () {\nif (typeof ta !== 'undefined' && ta.retrieve && ta.retrieve('ta.isIE11orHigher')) {\nwindow.open(token.url, '_self', null, false);\n} else {\nwindow.location.href = token.url;\n}\n});\n}\nfunction _clickEvent(event, elem, token, allowPropagation) {\nif (event && !allowPropagation) {\nstopEvent(event);\n}\ntoken = _expando(token);\nOfferClick.emit("beforeClick", token);\nif (ta.store && ta.retrieve && elem && elem.getAttribute("data-pernight") && token && token.ttIK) {\nvar clickPrices = ta.retrieve('CLICK_PRICE_DOUBLE_CHECK');\nif (!clickPrices) {\nclickPrices = {};\n}\nclickPrices[token.ttIK] = elem.getAttribute("data-pernight");\nta.store('CLICK_PRICE_DOUBLE_CHECK', clickPrices);\n}\nif (require.defined('ta/Core/TA.Event')) {\nsetTimeout(function () {\ntry {\nrequire('ta/Core/TA.Event').fireEvent('metaLinkClick',\nelem, (token.isBooking ? 'TripAdvisor' : token.providerName), token.area, token.locId, token.contentId, "new_tab", token.slot);\n} catch (e) {\nrequire.defined('ta/Core/TA.Error') && require('ta/Core/TA.Error').record(e, "Commerce click tracking failed", null,\n{servlet: window.pageServlet, url: token.url, area: token.area});\n}\n}, 300);\n}\nif (_preclickHandler && _preclickHandler(token)) {\nreturn false;\n}\nif (_canClickAway(token)) {\n_clickAway(token);\n} else {\n_navigate(token);\n}\nOfferClick.emit("afterClick", token);\nreturn false;\n}\nfunction _setPreClickHandler(handler) {\n_preclickHandler = handler;\n}\nvar OfferClick = {\nexpandToken: _expando,\nclickEvent: _clickEvent,\nregisterAsyncPreclick: _registerAsyncPreclick,\nsetPreClickHandler: _setPreClickHandler\n};\nreturn mixin(OfferClick, new Events('beforeClick', 'afterClick'));\n});\ndefine("xsell/metaLightbox", ['vanillajs', 'ta', 'api-mod', 'overlays/widgetoverlays', 'ta/Core/TA.LocalStorage', 'ta/Core/TA.Record'],\nfunction(vanilla, ta, api, widgetoverlays, localStorage, taRecord) {\nvar BUTTON_INIT_KEY = "xsell_metaLightbox_init"\n, TRACK_OPEN_FOR_PLACEMENT = "track_xsell_metaligtbox_opened";\nfunction _initDateSearchOverlay(overlay, locId, trackingPlacement) {\nfunction _dateHandler() {\nif ( !api.inDocument( overlay.container ) ){\nreturn;\n}\nvar hasDates =\n(ta.page && ta.page.hasDates && ta.page.hasDates('STAYDATES')) ||\n(ta.widgets && ta.widgets.calendar && ta.widgets.calendar.hasPageDates());\nif (!hasDates) {\nreturn;\n}\noverlay.hide();\nsetTimeout(function(){\n_showMetaLightbox(locId, trackingPlacement);\n},0);\n}\noverlay.on("show", function() {\nif (ta.page && ta.page.usingUnifiedDates) {\nta.page.on("dateSelected", _dateHandler);\n}\nelse {\nta.on("newInlinePageDates",_dateHandler);\n}\n});\noverlay.on("hide", function() {\nif (ta.page && ta.page.usingUnifiedDates) {\nta.page.off("dateSelected", _dateHandler);\n}\nelse {\nta.off("newInlinePageDates",_dateHandler);\n}\n});\n}\nfunction _handleShowPricesEvent(event, elmt, locId, trackingPlacement) {\nif (!event || (event.type !== "click" && event.type !== "mouseenter" && event.type !== "mouseover")) {\nreturn;\n}\nvar hasDates =\n(ta.page && ta.page.hasDates && ta.page.hasDates('STAYDATES')) ||\n(ta.widgets && ta.widgets.calendar && ta.widgets.calendar.hasPageDates());\nif (event.type === "click") {\napi.stopEvent(event);\n}\nif (hasDates) {\nif (event.type === "click") {\n_showMetaLightbox(locId, trackingPlacement)\n}\n} else {\nwidgetoverlays.triggerFlyout(event, elmt, "DATE_SEARCH_FLYOUT", {locationId: String(locId)}, {\nmixins: [function() {_initDateSearchOverlay(this, locId, trackingPlacement);}]\n});\n}\nreturn false;\n}\nfunction _openedInSession(trackingPlacement) {\nreturn localStorage.enabled && !!localStorage.getSessionKey(trackingPlacement + TRACK_OPEN_FOR_PLACEMENT);\n}\nfunction _setOpenedInSession(trackingPlacement) {\nlocalStorage.enabled && localStorage.setSessionKey(trackingPlacement + TRACK_OPEN_FOR_PLACEMENT, true);\n}\nfunction _handleTracking(trackingPlacement) {\nif (!trackingPlacement || _openedInSession(trackingPlacement)) {\nreturn;\n}\ntaRecord.trackEventOnPage(trackingPlacement, "meta_LB_in_view");\n_setOpenedInSession(trackingPlacement);\n}\nfunction _initShowPricesButton(event, elmt, locId, trackingPlacement) {\nif (elmt[BUTTON_INIT_KEY]) {\nreturn;\n}\nelmt[BUTTON_INIT_KEY] = true;\napi.addEvent(elmt, "click", function(event) {_handleShowPricesEvent(event || window.event, this, locId, trackingPlacement);});\napi.addEvent(elmt, "mouseenter", function(event) {_handleShowPricesEvent(event || window.event, this, locId, trackingPlacement);});\nif (event) {\n_handleShowPricesEvent(event, elmt, locId, trackingPlacement);\n}\n}\nfunction _showMetaLightbox(locId, trackingPlacement, options) {\nif (!ta.page || !ta.page.usingUnifiedDates) {\nta.overlays.Factory.metaCheckRatesOverlay_allProviders(locId, null);\nreturn;\n}\nvar params = {locationId: String(locId)};\nif (options && typeof(options.mapSponsorship)==='string') {\nparams.mapSponsorship = options.mapSponsorship;\n}\nwidgetoverlays.showLightbox("HOTEL_META_LIGHTBOX", params, {sendTravelInfo: true, classes: 'no_padding hotel_meta_lightbox'});\n_handleTracking(trackingPlacement);\n}\nreturn {\ninitShowPricesButton: _initShowPricesButton,\nshowMetaLightbox: _showMetaLightbox\n};\n});\n(function(){\nvar define = ta.prwidgets.define.bind(ta.prwidgets,'meta_maps_meta_block','handlers');\n/*jshint nonew: false */\n/*jshint unused:false */\ndefine(["widget", "commerce/offerclick", 'xsell/metaLightbox'], function (widget, offerclick, metaLightbox) {\nfunction clickSeeAll(locationId) {\nmetaLightbox.showMetaLightbox(locationId, '', {mapSponsorship: ta.maps.mapsponsor.getSponsorForLocation(locationId)});\n}\nfunction clickOffer(event, elem) {\nvar token = elem.getAttribute("data-clickToken");\nif (token) {\nofferclick.clickEvent(event, elem, token);\n} else {\nta.meta.link.click(event, elem);\n}\n}\nreturn {\nclickOffer: clickOffer,\nclickSeeAll: clickSeeAll\n};\n});})();\nta.plc_dual_search_dust_0_deferred_lateHandlers = ta.p13n.placements.load('dual_search_dust','lateHandlers.js', { 'name': 'dual_search_dust', 'occurrence': 0, 'id': 'taplc_dual_search_dust_0', 'location_id': 155019, 'servletClass': 'com.TripResearch.servlet.attraction.AttractionOverview', 'servletName': 'Attractions', 'modules': ["deferred/lateHandlers","handlers"], 'params': {"typeahead_to_store":{"typeahead_new_location_label":"NEW LOCATION","typeahead_divClasses":null,"typeahead.aliases.travel_forums":["forum","forums","Travel Forum","Travel Forums"],"typeahead.aliases.travel_guides":["guides","city guides"],"typeahead.aliases.flight_reviews":["flight reviews","airline reviews"],"typeahead.aliases.vacation_rentals":["Vacation rentals","Vacation rental","Airbnb","Holiday rental","Holiday rentals"],"typeahead_throttle_requests":"true","typeahead.aliases.flights":["Flights","Flight","Flight to","flights to","nonstop flights","business class flights","return flights","airline flights","air flights","cheap flights","flight from","cheapest flights","flight only","one way flights","direct flights","domestic flights","air fare","cheap flights to","air flights to","airline flights to","business class flights to","cheapest flights to","direct flights to","domestic flights to","nonstop flights to","one way flights to","air fares","airfare","airfares","air fare to","air fares to","airfare to","airfares to"],"typeahead_moved_label":"MOVED","typeahead_dual_search_options":{"geoID":155019,"bypassSearch":true,"staticTypeAheadOptions":{"minChars":3,"defaultValue":"Search","injectNewLocation":true,"typeahead1_5":false,"geoBoostFix":true},"debug":false,"navSearchTypeAheadEnabled":true,"geoInfo":{"geoId":155019,"geoName":"Toronto","parentName":"Ontario","shortParentName":"Ontario","categories":{"GEO":{"url":"/Tourism-g155019-Toronto_Ontario-Vacations.html"},"HOTEL":{"url":"/Hotels-g155019-Toronto_Ontario-Hotels.html"},"VACATION_RENTAL":{"url":"/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html"},"ATTRACTION":{"url":"/Attractions-g155019-Activities-Toronto_Ontario.html"},"EATERY":{"url":"/Restaurants-g155019-Toronto_Ontario.html"},"FLIGHTS_TO":{"url":"/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html"},"NEIGHBORHOOD":{"url":"/NeighborhoodList-g155019-Toronto_Ontario.html"},"TRAVEL_GUIDE":{"url":"/Travel_Guide-g155019-Toronto_Ontario.html"}}}},"typeahead_closed_label":"CLOSED","typeahead.scoped.all_of_trip":"Worldwide","typeahead_attraction_activity_search":"true","typeahead.aliases.hotels":["hotels","hotel","lodging","places to stay","where to stay","accommodation","accommodations","hotel reviews","Hotels & Motels","Best Hotels","Best Places to Stay","Best Lodging","Best Hotels & Motels","Lodgings","Place to stay","Top Hotels","Top Places to Stay","Top Lodging","Top Hotels & Motels","Top 10 Hotels","Top 10 Places to Stay","Top 10 Lodging","Top 10 Hotels & Motels"],"typeahead.aliases.things_to_do":["Things to do","Thing to do","attractions","activities","what to do","sightseeing","Sights","Tourist Attractions","Activity","Attraction","What to see","Where to go","Where to visit","Best Attractions","Best Things to do","Best Tourist Attractions","Best Sightseeing","Top Attractions","Top Things to do","Top Tourist Attractions","Top Sightseeing","Top 10 Attractions","Top 10 Things to do","Top 10 Tourist Attractions","Top 10 Sightseeing"],"typeahead.aliases.restaurants":["food","places to eat","eateries","dining","restaurants","restaurant","Place to eat","Eatery","Where to eat","What to eat","Best Restaurants","Best Places to Eat","Best Food","Best Dining","Top Restaurants","Top Places to Eat","Top Food","Top Dining","Top 10 Restaurants","Top 10 Places To Eat","Top 10 Food","Top 10 Dining"],"typeahead.searchMore.v2":"Search for \\"%\\"","typeahead.searchSessionId":"40F05E45FA2943DDA2D9271243A6BFF71487732595281ssid"}}, 'data': {}});\nta.plc_dual_search_dust_0_handlers = ta.p13n.placements.load('dual_search_dust','handlers.js', { 'name': 'dual_search_dust', 'occurrence': 0, 'id': 'taplc_dual_search_dust_0', 'location_id': 155019, 'servletClass': 'com.TripResearch.servlet.attraction.AttractionOverview', 'servletName': 'Attractions', 'modules': ["deferred/lateHandlers","handlers"], 'params': {"typeahead_to_store":{"typeahead_new_location_label":"NEW LOCATION","typeahead_divClasses":null,"typeahead.aliases.travel_forums":["forum","forums","Travel Forum","Travel Forums"],"typeahead.aliases.travel_guides":["guides","city guides"],"typeahead.aliases.flight_reviews":["flight reviews","airline reviews"],"typeahead.aliases.vacation_rentals":["Vacation rentals","Vacation rental","Airbnb","Holiday rental","Holiday rentals"],"typeahead_throttle_requests":"true","typeahead.aliases.flights":["Flights","Flight","Flight to","flights to","nonstop flights","business class flights","return flights","airline flights","air flights","cheap flights","flight from","cheapest flights","flight only","one way flights","direct flights","domestic flights","air fare","cheap flights to","air flights to","airline flights to","business class flights to","cheapest flights to","direct flights to","domestic flights to","nonstop flights to","one way flights to","air fares","airfare","airfares","air fare to","air fares to","airfare to","airfares to"],"typeahead_moved_label":"MOVED","typeahead_dual_search_options":{"geoID":155019,"bypassSearch":true,"staticTypeAheadOptions":{"minChars":3,"defaultValue":"Search","injectNewLocation":true,"typeahead1_5":false,"geoBoostFix":true},"debug":false,"navSearchTypeAheadEnabled":true,"geoInfo":{"geoId":155019,"geoName":"Toronto","parentName":"Ontario","shortParentName":"Ontario","categories":{"GEO":{"url":"/Tourism-g155019-Toronto_Ontario-Vacations.html"},"HOTEL":{"url":"/Hotels-g155019-Toronto_Ontario-Hotels.html"},"VACATION_RENTAL":{"url":"/VacationRentals-g155019-Reviews-Toronto_Ontario-Vacation_Rentals.html"},"ATTRACTION":{"url":"/Attractions-g155019-Activities-Toronto_Ontario.html"},"EATERY":{"url":"/Restaurants-g155019-Toronto_Ontario.html"},"FLIGHTS_TO":{"url":"/Flights-g155019-Toronto_Ontario-Cheap_Discount_Airfares.html"},"NEIGHBORHOOD":{"url":"/NeighborhoodList-g155019-Toronto_Ontario.html"},"TRAVEL_GUIDE":{"url":"/Travel_Guide-g155019-Toronto_Ontario.html"}}}},"typeahead_closed_label":"CLOSED","typeahead.scoped.all_of_trip":"Worldwide","typeahead_attraction_activity_search":"true","typeahead.aliases.hotels":["hotels","hotel","lodging","places to stay","where to stay","accommodation","accommodations","hotel reviews","Hotels & Motels","Best Hotels","Best Places to Stay","Best Lodging","Best Hotels & Motels","Lodgings","Place to stay","Top Hotels","Top Places to Stay","Top Lodging","Top Hotels & Motels","Top 10 Hotels","Top 10 Places to Stay","Top 10 Lodging","Top 10 Hotels & Motels"],"typeahead.aliases.things_to_do":["Things to do","Thing to do","attractions","activities","what to do","sightseeing","Sights","Tourist Attractions","Activity","Attraction","What to see","Where to go","Where to visit","Best Attractions","Best Things to do","Best Tourist Attractions","Best Sightseeing","Top Attractions","Top Things to do","Top Tourist Attractions","Top Sightseeing","Top 10 Attractions","Top 10 Things to do","Top 10 Tourist Attractions","Top 10 Sightseeing"],"typeahead.aliases.restaurants":["food","places to eat","eateries","dining","restaurants","restaurant","Place to eat","Eatery","Where to eat","What to eat","Best Restaurants","Best Places to Eat","Best Food","Best Dining","Top Restaurants","Top Places to Eat","Top Food","Top Dining","Top 10 Restaurants","Top 10 Places To Eat","Top 10 Food","Top 10 Dining"],"typeahead.searchMore.v2":"Search for \\"%\\"","typeahead.searchSessionId":"40F05E45FA2943DDA2D9271243A6BFF71487732595281ssid"}}, 'data': {}});\n(function(){\nvar define = ta.p13n.placements.define.bind(ta.p13n.placements,'brand_consistent_header','handlers');\n/*\n* Private js for the promotion consistent headers placement\n*/\ndefine(["placement"], function(placement) {\n/***********************************************\n* PUBLIC FUNCTIONS\n***********************************************/\nreturn {\ntrackClickPageEvent: function(campaignCategory, pageAction, servletName) {\nta.trackEventOnPage(campaignCategory, pageAction, servletName);\n}\n}\n});})();\nif (ta.prwidgets) {\nta.prwidgets.initWidgets(document);\n}\n/* ]]> */\n</script>\n<div id="IP_IFRAME_HOLDER"></div>\n</body>\n<!-- st: 426 dc: 0 sc: 15 -->\n<!-- uid: WKz-cgokKHEAAeKqrrgAAAB6 -->\n</html>
In [216]:
def createKey(city, state):
return city.upper() + ":" + state.upper()
def city_poi(city,state):
urlCity = city.replace(' ','+')
urlState = state.replace(' ', '+')
key = createKey(urlCity, urlState)
baseUrl = "http://www.tripadvisor.com"
citySearchUrl = baseUrl+"/Search?q="+urlCity+"%2C+"+urlState+"&sub-search=SEARCH&geo=&returnTo=__2F__"
r = requests.get(citySearchUrl)
if r.status_code != 200:
print 'WARNING: ', city, ', ',state, r.status_code
else:
s = BS(r.text, 'html.parser')
for item in s.find('div',attrs = {'class':'info geo-info'}):
if 'Things to do' in item.text:
attrsUrl = item.find('a').attrs['href']
fullUrl = baseUrl + attrsUrl
responses = requests.get(fullUrl)
if responses.status_code != 200:
print 'WARNING: ', city, ', ',state, r.status_code
else:
soup = BS(responses.text, 'html.parser')
property_titles = soup.find_all('div', attrs = {'class':'property_title'})
for property_url in property_titles[:1]:
poi_url = baseUrl + property_url.find('a').attrs['href']
print poi_url
poi_details(poi_url)
def poi_details(poi_url):
r = requests.get(poi_url)
if r.status_code != 200:
print 'WARNING: ', city, ', ',state, r.status_code
else:
s = BS(r.text, 'html.parser')
print s
In [1]:
# city_poi('chicago','IL')
In [ ]:
https://www.tripadvisor.com/Attractions-g35805-Activities-Chicago_Illinois.html
In [ ]:
def createKey(city, state):
return city.upper() + ":" + state.upper()
def city_poi(city,state):
urlCity = city.replace(' ','+')
urlState = state.replace(' ', '+')
key = createKey(urlCity, urlState)
baseUrl = "http://www.tripadvisor.com/"
citySearchUrl = baseUrl+"Search?q="+urlCity+"%2C+"+urlState+"&sub-search=SEARCH&geo=&returnTo=__2F__"
r = requests.get(citySearchUrl)
if r.status_code != 200:
print 'WARNING: ', city, ', ',state, r.status_code
else:
s = BS(r.text, 'html.parser')
return data['features']
In [218]:
!pip install pyschedule
Collecting pyschedule
Downloading pyschedule-0.2.15.tar.gz
Collecting pulp (from pyschedule)
Downloading PuLP-1.6.2.zip (13.6MB)
100% |████████████████████████████████| 13.6MB 56kB/s
Collecting pyparsing>=2.0.1 (from pulp->pyschedule)
Using cached pyparsing-2.1.10-py2.py3-none-any.whl
Building wheels for collected packages: pyschedule, pulp
Running setup.py bdist_wheel for pyschedule ... - done
Stored in directory: /Users/zoesh/Library/Caches/pip/wheels/3d/66/b3/5d667fa633922f09455c551e7e54f9f29a450a7659bd4c1f51
Running setup.py bdist_wheel for pulp ... - \ done
Stored in directory: /Users/zoesh/Library/Caches/pip/wheels/57/ad/46/a2ac2a2aed6495aff11ce28c762a5442faff5e5dfae3f4353d
Successfully built pyschedule pulp
Installing collected packages: pyparsing, pulp, pyschedule
Found existing installation: pyparsing 1.5.6
DEPRECATION: Uninstalling a distutils installed project (pyparsing) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
Uninstalling pyparsing-1.5.6:
Successfully uninstalled pyparsing-1.5.6
Successfully installed pulp-1.6.2 pyparsing-2.1.10 pyschedule-0.2.15
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
In [219]:
employee_names = ['A','B','C','D','E','F','G','H']
n_days = 14 # number of days
days = list(range(n_days))
max_seq = 5 # max number of consecutive shifts
min_seq = 2 # min sequence without gaps
max_work = 10 # max total number of shifts
min_work = 7 # min total number of shifts
max_weekend = 3 # max number of weekend shifts
# number of required shifts for each day
shift_requirements =\
{
0: 5,
1: 7,
2: 6,
3: 4,
4: 5,
5: 5,
6: 5,
7: 6,
8: 7,
9: 4,
10: 2,
11: 5,
12: 6,
13: 4
}
# specific shift requests by employees for days
shift_requests =\
[
('A',0),
('B',5),
('C',8),
('D',2),
('E',9),
('F',5),
('G',1),
('H',7),
('A',3),
('B',4),
('C',4),
('D',9),
('F',1),
('F',2),
('F',3),
('F',5),
('F',7),
('H',13)
]
In [234]:
from pyschedule import Scenario, solvers, plotters, alt
# Create employee scheduling scenari
S = Scenario('employee_scheduling',horizon=n_days)
# Create enployees as resources indexed by namesc
employees = { name : S.Resource(name) for name in employee_names }
print employees
# Create shifts as tasks
shifts = { (day,i) : S.Task('S_%s_%s'%(str(day),str(i)))
for day in shift_requirements if day in days
for i in range(shift_requirements[day]) }
# distribute shifts to days
for day,i in shifts:
# Assign shift to its day
S += shifts[day,i] >= day
print S
# The shifts on each day are interchangeable, so add them to the same group
shifts[day,i].group = day
print shifts[day,i]
# Weekend shifts get attribute week_end
if day % 7 in {5,6}:
shifts[day,i].week_end = 1
# # There are no restrictions, any shift can be done by any employee
# for day,i in shifts:
# shifts[day,i] += alt( S.resources() )
# # Capacity restrictions
# for name in employees:
# # Maximal number of shifts
# S += employees[name] <= max_work
# # Minimal number of shifts
# S += employees[name] >= min_work
# # Maximal number of weekend shifts using attribute week_end
# S += employees[name]['week_end'] <= max_weekend
# # Max number of consecutive shifts
# for name in employees:
# for day in range(n_days):
# S += employees[name][day:day+max_seq+1] <= max_seq
# # Min sequence without gaps
# for name in employees:
# # No increase in last periods
# S += employees[name][n_days-min_seq:].inc <= 0
# # No decrease in first periods
# S += employees[name][:min_seq].dec <= 0
# # No diff during time horizon
# for day in days[:-min_seq]:
# S += employees[name][day:day+min_seq+1].diff <= 1
# # Solve and plot scenario
# if solvers.mip.solve(S,kind='CBC',msg=1,random_seed=6):
# %matplotlib inline
# plotters.matplotlib.plot(S,fig_size=(12,5))
# else:
# print('no solution found')
{'A': A, 'C': C, 'B': B, 'E': E, 'D': D, 'G': G, 'F': F, 'H': H}
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
###############################################
S_7_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
###############################################
S_1_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
###############################################
S_12_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
###############################################
S_9_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
###############################################
S_9_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
###############################################
S_3_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
###############################################
S_11_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
###############################################
S_8_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
###############################################
S_5_4
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
###############################################
S_2_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
###############################################
S_12_5
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
###############################################
S_6_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
###############################################
S_1_6
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
###############################################
S_13_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
###############################################
S_5_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
###############################################
S_2_5
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
###############################################
S_8_5
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
###############################################
S_0_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
###############################################
S_7_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
###############################################
S_4_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
###############################################
S_1_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
###############################################
S_12_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
###############################################
S_9_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
###############################################
S_3_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
###############################################
S_13_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
###############################################
S_8_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
###############################################
S_4_4
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
###############################################
S_6_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
###############################################
S_1_5
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
###############################################
S_11_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
###############################################
S_5_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
###############################################
S_2_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
###############################################
S_8_6
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
###############################################
S_4_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
###############################################
S_1_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
###############################################
S_12_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
###############################################
S_6_4
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
###############################################
S_3_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
###############################################
S_0_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
###############################################
S_11_4
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
###############################################
S_8_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
###############################################
S_7_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
###############################################
S_0_4
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
###############################################
S_6_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
###############################################
S_1_4
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
###############################################
S_11_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
###############################################
S_7_5
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
###############################################
S_2_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
###############################################
S_10_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
###############################################
S_10_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
###############################################
S_4_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
###############################################
S_1_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
###############################################
S_5_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
###############################################
S_0_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
###############################################
S_13_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
###############################################
S_8_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
###############################################
S_7_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
###############################################
S_12_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
###############################################
S_9_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
S_6_1 >= 6
###############################################
S_6_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
S_6_1 >= 6
S_3_1 >= 3
###############################################
S_3_1
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
S_6_1 >= 6
S_3_1 >= 3
S_11_3 >= 11
###############################################
S_11_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
S_6_1 >= 6
S_3_1 >= 3
S_11_3 >= 11
S_0_2 >= 0
###############################################
S_0_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
S_6_1 >= 6
S_3_1 >= 3
S_11_3 >= 11
S_0_2 >= 0
S_7_4 >= 7
###############################################
S_7_4
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
S_6_1 >= 6
S_3_1 >= 3
S_11_3 >= 11
S_0_2 >= 0
S_7_4 >= 7
S_2_0 >= 2
###############################################
S_2_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
S_6_1 >= 6
S_3_1 >= 3
S_11_3 >= 11
S_0_2 >= 0
S_7_4 >= 7
S_2_0 >= 2
S_12_4 >= 12
###############################################
S_12_4
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
S_6_1 >= 6
S_3_1 >= 3
S_11_3 >= 11
S_0_2 >= 0
S_7_4 >= 7
S_2_0 >= 2
S_12_4 >= 12
S_4_3 >= 4
###############################################
S_4_3
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
S_6_1 >= 6
S_3_1 >= 3
S_11_3 >= 11
S_0_2 >= 0
S_7_4 >= 7
S_2_0 >= 2
S_12_4 >= 12
S_4_3 >= 4
S_5_2 >= 5
###############################################
S_5_2
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
S_6_1 >= 6
S_3_1 >= 3
S_11_3 >= 11
S_0_2 >= 0
S_7_4 >= 7
S_2_0 >= 2
S_12_4 >= 12
S_4_3 >= 4
S_5_2 >= 5
S_2_4 >= 2
###############################################
S_2_4
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
S_6_1 >= 6
S_3_1 >= 3
S_11_3 >= 11
S_0_2 >= 0
S_7_4 >= 7
S_2_0 >= 2
S_12_4 >= 12
S_4_3 >= 4
S_5_2 >= 5
S_2_4 >= 2
S_13_0 >= 13
###############################################
S_13_0
###############################################
SCENARIO: employee_scheduling / horizon: 14
OBJECTIVE: None
RESOURCES:
A
B
C
D
E
F
G
H
TASKS:
S_0_0 :
S_0_1 :
S_0_2 :
S_0_3 :
S_0_4 :
S_1_0 :
S_1_1 :
S_1_2 :
S_1_3 :
S_1_4 :
S_1_5 :
S_1_6 :
S_2_0 :
S_2_1 :
S_2_2 :
S_2_3 :
S_2_4 :
S_2_5 :
S_3_0 :
S_3_1 :
S_3_2 :
S_3_3 :
S_4_0 :
S_4_1 :
S_4_2 :
S_4_3 :
S_4_4 :
S_5_0 :
S_5_1 :
S_5_2 :
S_5_3 :
S_5_4 :
S_6_0 :
S_6_1 :
S_6_2 :
S_6_3 :
S_6_4 :
S_7_0 :
S_7_1 :
S_7_2 :
S_7_3 :
S_7_4 :
S_7_5 :
S_8_0 :
S_8_1 :
S_8_2 :
S_8_3 :
S_8_4 :
S_8_5 :
S_8_6 :
S_9_0 :
S_9_1 :
S_9_2 :
S_9_3 :
S_10_0 :
S_10_1 :
S_11_0 :
S_11_1 :
S_11_2 :
S_11_3 :
S_11_4 :
S_12_0 :
S_12_1 :
S_12_2 :
S_12_3 :
S_12_4 :
S_12_5 :
S_13_0 :
S_13_1 :
S_13_2 :
S_13_3 :
JOINT RESOURCES:
TIGHT LOWER BOUNDS:
S_7_3 >= 7
S_1_3 >= 1
S_12_1 >= 12
S_9_1 >= 9
S_9_3 >= 9
S_3_0 >= 3
S_11_2 >= 11
S_8_0 >= 8
S_5_4 >= 5
S_2_1 >= 2
S_12_5 >= 12
S_6_2 >= 6
S_1_6 >= 1
S_13_2 >= 13
S_5_1 >= 5
S_2_5 >= 2
S_8_5 >= 8
S_0_3 >= 0
S_7_2 >= 7
S_4_0 >= 4
S_1_2 >= 1
S_12_2 >= 12
S_9_0 >= 9
S_3_3 >= 3
S_13_3 >= 13
S_8_1 >= 8
S_4_4 >= 4
S_6_3 >= 6
S_1_5 >= 1
S_11_1 >= 11
S_5_0 >= 5
S_2_2 >= 2
S_8_6 >= 8
S_4_1 >= 4
S_1_1 >= 1
S_12_3 >= 12
S_6_4 >= 6
S_3_2 >= 3
S_0_0 >= 0
S_11_4 >= 11
S_8_2 >= 8
S_7_1 >= 7
S_0_4 >= 0
S_6_0 >= 6
S_1_4 >= 1
S_11_0 >= 11
S_7_5 >= 7
S_2_3 >= 2
S_10_1 >= 10
S_10_0 >= 10
S_4_2 >= 4
S_1_0 >= 1
S_5_3 >= 5
S_0_1 >= 0
S_13_1 >= 13
S_8_3 >= 8
S_7_0 >= 7
S_12_0 >= 12
S_9_2 >= 9
S_6_1 >= 6
S_3_1 >= 3
S_11_3 >= 11
S_0_2 >= 0
S_7_4 >= 7
S_2_0 >= 2
S_12_4 >= 12
S_4_3 >= 4
S_5_2 >= 5
S_2_4 >= 2
S_13_0 >= 13
S_8_4 >= 8
###############################################
S_8_4
In [236]:
# Load pyschedule and create a scenario with ten steps planning horizon
from pyschedule import Scenario, solvers, plotters
S = Scenario('hello_pyschedule',horizon=10)
# Create two resources
Day1, Day2 = S.Resource('Day1'), S.Resource('Day2')
# Create three tasks with lengths 1,2 and 3
cook, wash, clean = S.Task('cook',1), S.Task('wash',2), S.Task('clean',3)
# Assign tasks to resources, either Alice or Bob
cook += Day1|Day2
wash += Day1|Day2
clean += Day1|Day2
# Solve and print solution
S.use_makespan_objective()
solvers.mip.solve(S,msg=1)
# Print the solution
print(S.solution())
INFO: execution time for solving mip (sec) = 0.0339479446411
INFO: objective = 3.0
[(clean, Day1, 0, 3), (wash, Day2, 0, 2), (cook, Day2, 2, 3), (MakeSpan, Day1, 3, 4)]
In [244]:
S = Scenario('trip1',horizon=10)
Day1, Day2 = S.Resource('Day1'), S.Resource('Day2')
golden_gate, moma,deyoung,park,aam,lombard,tele = S.Task('golden_gate', 1), S.Task('MOMA', 4), \
S.Task('De_Young',3), S.Task('golden_gate_park',2), S.Task('asian_art_museum', 3),\
S.Task('lombard', 1), S.Task('telegraph_hills',1)
golden_gate += Day1|Day2
moma += Day1|Day2
deyoung += Day1|Day2
park += Day1|Day2
aam += Day1|Day2
lombard += Day1|Day2
tele += Day1|Day2
S.use_makespan_objective()
solvers.mip.solve(S,msg=1)
print(S.solution())
INFO: execution time for solving mip (sec) = 0.139722824097
INFO: objective = 8.0
[(golden_gate, Day2, 0, 1), (telegraph_hills, Day1, 0, 1), (MOMA, Day1, 1, 5), (asian_art_museum, Day2, 2, 5), (De_Young, Day2, 5, 8), (golden_gate_park, Day1, 5, 7), (lombard, Day1, 7, 8), (MakeSpan, Day1, 8, 9)]
In [240]:
S.solution()[0][0]
Out[240]:
golden_gate
In [243]:
from pyschedule import Scenario, solvers, plotters
S = Scenario('hello_pyschedule',horizon=10)
# Create two resources
Alice, Bob = S.Resource('Alice'), S.Resource('Bob')
# Create three tasks with lengths 1,2 and 3
cook, wash, clean = S.Task('cook',1), S.Task('wash',2), S.Task('clean',3)
# Assign tasks to resources, either Alice or Bob
cook += Alice|Bob
wash += Alice|Bob
clean += Alice|Bob
# Solve and print solution
S.use_makespan_objective()
solvers.mip.solve(S,msg=1)
# Print the solution
print(S.solution())
INFO: execution time for solving mip (sec) = 0.0337960720062
INFO: objective = 3.0
[(clean, Alice, 0, 3), (wash, Bob, 0, 2), (cook, Bob, 2, 3), (MakeSpan, Alice, 3, 4)]
In [249]:
import numpy as np
sample_size = 10000
alphaA = 1 + 6000
betaA = 1 + 4000
alphaB = 1 + 6000
betaB = 1 + 3950
A = np.random.beta(alphaA, betaA, sample_size)
B = np.random.beta(alphaB, betaB, sample_size)
print A,B
print "%f%% chance site B is better than site A" \
% (np.sum(B > A) / float(sample_size))
[ 0.60081663 0.60094293 0.60456197 ..., 0.60200635 0.59803233
0.60436774] [ 0.60465228 0.61280729 0.59792256 ..., 0.60715289 0.59859756
0.60296165]
0.673700% chance site B is better than site A
In [3211]:
#find mongodb scrape data of TripAdvisor
from pymongo import MongoClient
client = MongoClient()
db = client.zoeshrm
db.TripAdvisor.count()
Out[3211]:
15509
In [3255]:
city = 'San Francisco, California'
# city_poi = BS(doc['html'], 'html.parser')
city_poi = BS(db.TripAdvisor.find_one({'city':city})['html'], 'html.parser')
head_name = city_poi.find('h1', attrs = {'class':'heading_name'}).text.strip()
street_address = city_poi.find('span', attrs = {'class':'street-address'}).text.strip()
address_locality = city_poi.find('span', attrs = {'property':'addressLocality'}).text.strip()
address_region = city_poi.find('span', attrs = {'property':'addressRegion'}).text.strip()
postal_code = city_poi.find('span', attrs = {'property':'postalCode'}).text.strip()
full_address = street_address+', '+address_locality+', '+address_region+', '+postal_code
print full_address, head_name
city_poi.find('div', attrs = {'class': 'heading_rating separator'}).find('img')
Lincoln Boulevard, near Doyle Drive and Fort Point, San Francisco, CA, 94129 Golden Gate Bridge
Bridges
,
Sights & Landmarks
As featured in
3 Days in San Francisco
and
14 other guides
In [3250]:
cities = pd.read_csv('/Users/zoesh/Desktop/travel_with_friends/top_1000_us_cities.csv')
cities['city_state'] = cities['city']+', ' +cities['state']
In [3273]:
# df = pd.DataFrame(columns=['name','city','state','rating', 'reviews', 'city_rank','fee','visit_length', 'tag', \
conn_str = "dbname='travel_with_friends' user='zoesh' host='localhost'"
counter = 0
for city in cities['city_state']:
for doc in db.TripAdvisor.find({"city": city}):
city_poi = BS(doc['html'], 'html.parser')
head_name = city_poi.find('h1', attrs = {'class':'heading_name'}).text.strip()
city_rank = city_poi.find('b', attrs = {'class':'rank_text wrap'}).text.strip().replace('#',"")
if not city_poi.find('div', attrs = {'class': 'heading_rating separator'}).find('img'):
continue
rating = city_poi.find('div', attrs = {'class': 'heading_rating separator'}).find('img').get('content')
reviews = city_poi.find('div', attrs = {'class': 'rs rating'}).find('a').get('content')
neighborhood = city_poi.find('div', attrs = {'class': 'heading_details'})\
.find_all('div', attrs = {'class':'detail'})
neighborhood_0 = neighborhood[0].text.split(',')[0].strip()
if not len(neighborhood) > 2:
tag = neighborhood_0
else:
tag = neighborhood[2].text.split(',')[0].strip()
try:
fee = city_poi.find('div', attrs = {'class': 'detail_section details'})\
.find_all('div', attrs ={'class':'detail'} )[-1].text.strip().split('\n')[-1].strip()
if not "Yes" in fee and not "No" in fee:
fee = "No"
visit_length = city_poi.find_all('div', attrs = {'class':'detail_section details'})[0]\
.find('div', attrs = {'class':'detail'})\
.text.strip().split('\n')[-1].strip()
except:
fee = 'No'
visit_length = '15 min'
street_address = city_poi.find('span', attrs = {'class':'street-address'}).text.strip()
address_locality = city_poi.find('span', attrs = {'property':'addressLocality'}).text.strip()
address_region = city_poi.find('span', attrs = {'property':'addressRegion'}).text.strip()
postal_code = city_poi.find('span', attrs = {'property':'postalCode'}).text.strip()
full_address = street_address+', '+address_locality+', '+address_region+', '+postal_code
head_name = re.sub(u"(\u2018|\u2019)", "''", head_name).replace("'","''")
city_only =re.sub(u"(\u2018|\u2019)", "''", city.split(', ')[0]).replace("'","''")
state=re.sub(u"(\u2018|\u2019)", "''", city.split(', ')[1]).replace("'","''")
rating = re.sub(u"(\u2018|\u2019)", "''", rating).replace("'","''")
reviews = re.sub(u"(\u2018|\u2019)", "''", reviews).replace("'","''")
city_rank= re.sub(u"(\u2018|\u2019)", "''", city_rank).replace("'","''")
fee = re.sub(u"(\u2018|\u2019)", "''", fee).replace("'","''")
visit_length = re.sub(u"(\u2018|\u2019)", "''", visit_length).replace("'","''")
tag=re.sub(u"(\u2018|\u2019)", "''", tag).replace("'","''")
street_address=re.sub(u"(\u2018|\u2019)", "''",street_address).replace("'","''")
address_locality=re.sub(u"(\u2018|\u2019)", "''", address_locality).replace("'","''")
address_region=re.sub(u"(\u2018|\u2019)", "''",address_region).replace("'","''")
postal_code=re.sub(u"(\u2018|\u2019)", "''", postal_code).replace("'","''")
full_address=re.sub(u"(\u2018|\u2019)", "''",full_address).replace("'","''")
# df = df.append({'name': re.sub(u"(\u2018|\u2019)", "''", head_name), 'city': re.sub(u"(\u2018|\u2019)", "''", city.split(', ')[0]), \
# 'state': re.sub(u"(\u2018|\u2019)", "''", city.split(', ')[1]), 'rating': re.sub(u"(\u2018|\u2019)", "''", rating),\
# 'reviews': re.sub(u"(\u2018|\u2019)", "''", reviews), 'city_rank': re.sub(u"(\u2018|\u2019)", "''", city_rank), \
# 'fee': re.sub(u"(\u2018|\u2019)", "''", fee), \
# 'visit_length': re.sub(u"(\u2018|\u2019)", "''", visit_length), 'tag':re.sub(u"(\u2018|\u2019)", "''", tag),\
# 'street_address': re.sub(u"(\u2018|\u2019)", "''",street_address), 'address_locality': re.sub(u"(\u2018|\u2019)", "''", address_locality),\
# 'address_region': re.sub(u"(\u2018|\u2019)", "''",address_region), 'postal_code': re.sub(u"(\u2018|\u2019)", "''", postal_code),\
# 'full_address': re.sub(u"(\u2018|\u2019)", "''",full_address), }, ignore_index=True)
conn = psycopg2.connect(conn_str)
cur = conn.cursor()
index = counter
cur.execute("INSERT INTO mongodb_trip_advisor_table VALUES (%i, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s','%s', '%s', '%s', '%s', '%s');"\
%(index, head_name, city_only, state, rating, reviews, city_rank, fee, visit_length, tag,street_address,\
address_locality, address_region, postal_code, full_address))
conn.commit()
counter+=1
# print df.shape, city
if counter % 100 == 0:
# print df.shape, city
print counter, city, state, head_name
# df.to_csv('mongo_db_trip_advisor.csv')
100 Chicago, Illinois Illinois Crown Fountain
200 San Antonio, Texas Texas Mission Concepcion
300 San Jose, California California Japanese American Resource Center/Museum
400 San Francisco, California California Anchor Brewing Company
500 Detroit, Michigan Michigan Mexicantown
600 Denver, Colorado Colorado Washington Park
700 Nashville-Davidson, Tennessee Tennessee Tennessee State Museum
800 Portland, Oregon Oregon St. Johns Bridge
900 Tucson, Arizona Arizona San Xavier Plaza
1000 Kansas City, Missouri Missouri Arrowhead Stadium
1100 Colorado Springs, Colorado Colorado Glen Eyrie Castle
1200 Oakland, California California San Francisco Bay Ferry
1300 Cleveland, Ohio Ohio University Circle
1400 Bakersfield, California California Kern River Parkway Trail
1500 Santa Ana, California California Lyon Air Museum
1600 Lexington-Fayette, Kentucky Kentucky Lexington Cemetery
1700 Cincinnati, Ohio Ohio Carew Tower
1800 Newark, New Jersey New Jersey Mount Pleasant Cemetery
1900 Jersey City, New Jersey New Jersey Newport Centre Mall
2000 St. Petersburg, Florida Florida Mahaffey Theater
2100 Madison, Wisconsin Wisconsin Capitol Square
2200 Glendale, Arizona Arizona Foothills Park
2300 Baton Rouge, Louisiana Louisiana Downtown
2400 Boise City, Idaho Idaho Boise Public Library
2500 Spokane, Washington Washington John A. Finch Arboretum
2600 Fayetteville, North Carolina North Carolina David McCune International Art Gallery
2700 Montgomery, Alabama Alabama Rosa Parks Arrest Site
2800 Huntington Beach, California California Shipley Nature Center
2900 Glendale, California California Casa Adobe De San Rafael & Park
3000 Tallahassee, Florida Florida New Capitol Building
3100 Worcester, Massachusetts Massachusetts Cantor Art Gallery at Holy Cross
3200 Chattanooga, Tennessee Tennessee Raccoon Mountain Caverns
3300 Santa Rosa, California California Paradise Ridge Winery
3400 Cape Coral, Florida Florida Cape Coral Yacht Club Community Park
3500 Elk Grove, California California The Gun Room
3600 Palmdale, California California Grable''s Slot Cars and Raceway
3700 Pomona, California California Rail Giants Train Museum
3800 McKinney, Texas Texas Landon Winery
3900 Lakewood, Colorado Colorado Addenbrooke Park
4000 Dayton, Ohio Ohio Antiques Village
4100 Pasadena, California California Lake Avenue
4200 Bellevue, Washington Washington Robinswood Tennis Center
4300 Waco, Texas Texas Mayborn Museum Complex
4400 Topeka, Kansas Kansas Combat Air Museum
4500 Stamford, Connecticut Connecticut Curtain Call
4600 Midland, Texas Texas Midland County Horseshoe Arena & Pavilion
4700 Abilene, Texas Texas National Center for Children''s Illustrated Literature
4800 Beaumont, Texas Texas Art Museum of Southeast Texas
4900 Springfield, Illinois Illinois Edwards Place Historic Home
5000 Columbia, Missouri Missouri Stephens Lake Park
5100 Costa Mesa, California California Martin Lawrence Galleries
5200 Rochester, Minnesota Minnesota Semva Art Gallery
5300 Fairfield, California California Vezer Family Vineyard
5400 Pueblo, Colorado Colorado Colorado Mental Health Institute at Pueblo Museum
5500 Temecula, California California Lorimar Vineyards and Winery
5600 Daly City, California California Pacifica Archery
5700 West Palm Beach, Florida Florida Mandel Public Library of West Palm Beach
5800 Lewisville, Texas Texas Zone Action Park
5900 Tyler, Texas Texas Rocket Fizz
6000 Flint, Michigan Michigan Flint Symphony Orchestra
6100 Hillsboro, Oregon Oregon Heritage Farms
6200 Portsmouth, Virginia Virginia Way Back Yonder Antiques
6300 Beaverton, Oregon Oregon Hyland Forest Park
6400 Santa Monica, California California Santa Monica History Museum
6500 Redding, California California Redding Aquatic Center
6600 Sandy, Utah Utah Sandy City Dog Park
6700 Greenville, North Carolina North Carolina Greenville Convention Center
6800 Norwalk, Connecticut Connecticut Norwalk Museum
6900 Nampa, Idaho Idaho Warhawk Air Museum
7000 Clifton, New Jersey New Jersey Limoride
7100 Hoover, Alabama Alabama Moss Rock Preserve & Waterfalls
7200 Champaign, Illinois Illinois University Research Park Trail
7300 Bloomington, Indiana Indiana Buskirk-Chumley Theater
7400 Bend, Oregon Oregon Newberry National Volcanic Monument
7500 New Rochelle, New York New York The Rock Club
7600 Avondale, Arizona Arizona Rusty Wallace Racing Experience
7700 Racine, Wisconsin Wisconsin Racine Heritage Museum
7800 Melbourne, Florida Florida Paradise Beach & Park
7900 Kennewick, Washington Washington Get air
8000 Kalamazoo, Michigan Michigan Kalamazoo Curling Club
8100 Decatur, Illinois Illinois Rock Springs Conservation Area & Nature Center
8200 Gastonia, North Carolina North Carolina Sleepy Poet Antique Mall of Gastonia
8300 Warner Robins, Georgia Georgia Lush Art of Warner Robins
8400 Loveland, Colorado Colorado Dancing Pines Distillery, LLC
8500 Rapid City, South Dakota South Dakota Call of the Wild Museum
8600 Santa Fe, New Mexico New Mexico Old Fort Marcy Park
8700 Flagstaff, Arizona Arizona Flagstaff Extreme
8800 Redondo Beach, California California Veterans Park
8900 Kenner, Louisiana Louisiana Rivertown Theaters for the Performing Arts
9000 Bossier City, Louisiana Louisiana Gallery Fine Art Center
9100 Harlingen, Texas Texas Harlingen Convention and Visitors Bureau
9200 Kissimmee, Florida Florida Osceola County Historical Society Pioneer Village
9300 Homestead, Florida Florida Blakey Park
9400 Lodi, California California Spenker Winery
9500 Cheyenne, Wyoming Wyoming Southeast Wyoming Welcome Center
9600 Haverhill, Massachusetts Massachusetts Tattersall Farm
9700 Bowling Green, Kentucky Kentucky River Walk at Mitch McConnell Park
9800 North Miami, Florida Florida Greynolds Park
9900 St. Clair Shores, Michigan Michigan Waves
10000 Broomfield, Colorado Colorado Big Choice Brewing, LLC
10100 Great Falls, Montana Montana Malmstrom Air Force Base Museum
10200 San Rafael, California California Marin Bocce Federation
10300 Moore, Oklahoma Oklahoma Round 1
10400 Redmond, Washington Washington Idylwood Beach Park
10500 Kokomo, Indiana Indiana Treasure Mart Antique Mall
10600 Manhattan, Kansas Kansas Downtown Farmers Market of Manhattan
10700 Anderson, Indiana Indiana Anderson Roll Arena
10800 Georgetown, Texas Texas Rentsch Brewery
10900 Port Arthur, Texas Texas Sea Rim State Park
11000 Bellevue, Nebraska Nebraska The Crook
11100 Lake Havasu City, Arizona Arizona Lake Havasu State Park
11200 Dublin, California California Dublin Public Library
11300 Milford, Connecticut Connecticut Wilcox Park
11400 Elkhart, Indiana Indiana Midwest Museum of American Art
11500 Palm Desert, California California Santa Rosa & San Jacinto Mountains National Monument Visitor Center
11600 Grapevine, Texas Texas D''Vine Wine
11700 Downers Grove, Illinois Illinois Downers Grove Wine Shop
11800 Harrisburg, Pennsylvania Pennsylvania Pennsylvania State Capitol
11900 Sheboygan, Wisconsin Wisconsin John Michael Kohler Arts Center
12000 Alexandria, Louisiana Louisiana Bringhurst Stadium
12100 Leesburg, Virginia Virginia Ball''s Bluff Battlefield and National Cemetery
12200 Middletown, Connecticut Connecticut The Board Room
12300 Coeur d'Alene, Idaho Idaho Kootenai County Farmers'' Market
12400 Twin Falls, Idaho Idaho Sunway Soccer Complex
12500 Elmhurst, Illinois Illinois Elmhurst Art Museum
12600 Lacey, Washington Washington Charlie''s Safari
12700 Charlottesville, Virginia Virginia University of Virginia
12800 York, Pennsylvania Pennsylvania Agricultural & Industrial Museum
12900 Danville, California California Extraordinary Tour Services
13000 Fond du Lac, Wisconsin Wisconsin Fondy Sports Park
13100 San Bruno, California California The Shops at Tanforan
13200 Hutchinson, Kansas Kansas Cosmosphere
13300 Kearny, New Jersey New Jersey Serene Dreams
13400 Brea, California California Arovista Park
13500 Burleson, Texas Texas Regal Burleson Movies Stadium 14
13600 Cedar Falls, Iowa Iowa Rod Library
13700 Bentonville, Arkansas Arkansas Compton Gardens and Conference Center
13800 Maplewood, Minnesota Minnesota Myth
13900 Calexico, California California Gran Plaza Oulet
14000 Bremerton, Washington Washington Elandan Gardens
14100 Ormond Beach, Florida Florida The Casements
14200 Florence, South Carolina South Carolina Florence National Cemetery
14300 Texarkana, Texas Texas Discovery Place Children''s Museum
14400 Apache Junction, Arizona Arizona Geronimo Surrender Monument
In [3272]:
import pandas as pd
import numpy as np
import requests
import psycopg2
import json
import simplejson
import urllib
import config
import ast
engine = create_engine('postgresql://zoesh@localhost:5432/travel_with_friends')
df[:1].to_sql('mongodb_trip_advisor_table',engine, if_exists = "replace")
In [481]:
import pandas as pd
import re
old_df = pd.read_csv('poi_process.csv')
df = pd.DataFrame(columns=['name','city','state','rating', 'reviews', 'city_rank','fee','visit_length', 'tag'])
city = "Chicago, Illinois"
counter = 0
for city in cities['city_state']:
for doc in db.TripAdvisor.find({"city": city}):
city_poi = BS(doc['html'], 'html.parser')
head_name = city_poi.find('h1', attrs = {'class':'heading_name'}).text.strip()
if head_name not in old_df.name:
city_rank = city_poi.find('b', attrs = {'class':'rank_text wrap'}).text.strip().replace('#',"")
if None == city_poi.find('div', attrs = {'class': 'heading_rating separator'}).find('img'):
continue
rating = city_poi.find('div', attrs = {'class': 'heading_rating separator'}).find('img').get('content')
reviews = city_poi.find('div', attrs = {'class': 'rs rating'}).find('a').get('content')
neighborhood = city_poi.find('div', attrs = {'class': 'heading_details'})\
.find_all('div', attrs = {'class':'detail'})
neighborhood_0 = neighborhood[0].text.split(',')[0].strip()
if not len(neighborhood) > 2:
tag = neighborhood_0
else:
tag = neighborhood[2].text.split(',')[0].strip()
try:
fee = city_poi.find('div', attrs = {'class': 'detail_section details'})\
.find_all('div', attrs ={'class':'detail'} )[-1].text.strip().split('\n')[-1].strip()
if not "Yes" in fee and not "No" in fee:
fee = "No"
visit_length = city_poi.find_all('div', attrs = {'class':'detail_section details'})[0]\
.find('div', attrs = {'class':'detail'})\
.text.strip().split('\n')[-1].strip()
except:
fee = 'No'
visit_length = '15 min'
df = df.append({'name': re.sub(u"(\u2018|\u2019)", "'", head_name), 'city': re.sub(u"(\u2018|\u2019)", "'", city.split(', ')[0]), \
'state': re.sub(u"(\u2018|\u2019)", "'", city.split(', ')[1]), 'rating': re.sub(u"(\u2018|\u2019)", "'", rating),\
'reviews': re.sub(u"(\u2018|\u2019)", "'", reviews), 'city_rank': re.sub(u"(\u2018|\u2019)", "'", city_rank), \
'fee': re.sub(u"(\u2018|\u2019)", "'", fee), \
'visit_length': re.sub(u"(\u2018|\u2019)", "'", visit_length), 'tag':re.sub(u"(\u2018|\u2019)", "'", tag)}, ignore_index=True)
print df.shape, city
counter+=1
if counter % 20 == 0:
df.to_csv('poi_process.csv')
(51, 9) New York, New York
(78, 9) Los Angeles, California
(104, 9) Chicago, Illinois
(133, 9) Houston, Texas
(162, 9) Philadelphia, Pennsylvania
(186, 9) Phoenix, Arizona
(216, 9) San Antonio, Texas
(245, 9) San Diego, California
(272, 9) Dallas, Texas
(301, 9) San Jose, California
(326, 9) Austin, Texas
(353, 9) Indianapolis, Indiana
(379, 9) Jacksonville, Florida
(404, 9) San Francisco, California
(430, 9) Columbus, Ohio
(454, 9) Charlotte, North Carolina
(481, 9) Fort Worth, Texas
(508, 9) Detroit, Michigan
(537, 9) El Paso, Texas
(559, 9) Memphis, Tennessee
(586, 9) Seattle, Washington
(614, 9) Denver, Colorado
(643, 9) Washington, District of Columbia
(680, 9) Boston, Massachusetts
(706, 9) Nashville-Davidson, Tennessee
(736, 9) Baltimore, Maryland
(764, 9) Oklahoma City, Oklahoma
(790, 9) Louisville/Jefferson County, Kentucky
(816, 9) Portland, Oregon
(836, 9) Las Vegas, Nevada
(862, 9) Milwaukee, Wisconsin
(887, 9) Albuquerque, New Mexico
(916, 9) Tucson, Arizona
(938, 9) Fresno, California
(966, 9) Sacramento, California
(989, 9) Long Beach, California
(1016, 9) Kansas City, Missouri
(1038, 9) Mesa, Arizona
(1063, 9) Virginia Beach, Virginia
(1091, 9) Atlanta, Georgia
(1119, 9) Colorado Springs, Colorado
(1147, 9) Omaha, Nebraska
(1170, 9) Raleigh, North Carolina
(1195, 9) Miami, Florida
(1224, 9) Oakland, California
(1250, 9) Minneapolis, Minnesota
(1278, 9) Tulsa, Oklahoma
(1307, 9) Cleveland, Ohio
(1335, 9) Wichita, Kansas
(1361, 9) Arlington, Texas
(1386, 9) New Orleans, Louisiana
(1410, 9) Bakersfield, California
(1439, 9) Tampa, Florida
(1463, 9) Honolulu, Hawaii
(1479, 9) Aurora, Colorado
(1497, 9) Anaheim, California
(1514, 9) Santa Ana, California
(1544, 9) St. Louis, Missouri
(1566, 9) Riverside, California
(1594, 9) Corpus Christi, Texas
(1620, 9) Lexington-Fayette, Kentucky
(1648, 9) Pittsburgh, Pennsylvania
(1673, 9) Anchorage, Alaska
(1688, 9) Stockton, California
(1712, 9) Cincinnati, Ohio
(1740, 9) St. Paul, Minnesota
(1768, 9) Toledo, Ohio
(1789, 9) Greensboro, North Carolina
(1804, 9) Newark, New Jersey
(1821, 9) Plano, Texas
(1844, 9) Henderson, Nevada
(1873, 9) Lincoln, Nebraska
(1895, 9) Buffalo, New York
(1911, 9) Jersey City, New Jersey
(1931, 9) Chula Vista, California
(1958, 9) Fort Wayne, Indiana
(1983, 9) Orlando, Florida
(2007, 9) St. Petersburg, Florida
(2027, 9) Chandler, Arizona
(2038, 9) Laredo, Texas
(2067, 9) Norfolk, Virginia
(2095, 9) Durham, North Carolina
(2115, 9) Madison, Wisconsin
(2141, 9) Lubbock, Texas
(2159, 9) Irvine, California
(2183, 9) Winston-Salem, North Carolina
(2205, 9) Glendale, Arizona
(2223, 9) Garland, Texas
(2236, 9) Hialeah, Florida
(2264, 9) Reno, Nevada
(2273, 9) Chesapeake, Virginia
(2285, 9) Gilbert, Arizona
(2313, 9) Baton Rouge, Louisiana
(2331, 9) Irving, Texas
(2353, 9) Scottsdale, Arizona
(2360, 9) North Las Vegas, Nevada
(2379, 9) Fremont, California
(2407, 9) Boise City, Idaho
(2435, 9) Richmond, Virginia
(2453, 9) San Bernardino, California
(2481, 9) Birmingham, Alabama
(2509, 9) Spokane, Washington
(2537, 9) Rochester, New York
(2566, 9) Des Moines, Iowa
(2576, 9) Modesto, California
(2602, 9) Fayetteville, North Carolina
(2629, 9) Tacoma, Washington
(2648, 9) Oxnard, California
(2657, 9) Fontana, California
(2678, 9) Columbus, Georgia
(2705, 9) Montgomery, Alabama
(2708, 9) Moreno Valley, California
(2736, 9) Shreveport, Louisiana
(2752, 9) Aurora, Illinois
(2762, 9) Yonkers, New York
(2786, 9) Akron, Ohio
(2805, 9) Huntington Beach, California
(2833, 9) Little Rock, Arkansas
(2859, 9) Augusta-Richmond County, Georgia
(2887, 9) Amarillo, Texas
(2906, 9) Glendale, California
(2933, 9) Mobile, Alabama
(2958, 9) Grand Rapids, Michigan
(2986, 9) Salt Lake City, Utah
(3014, 9) Tallahassee, Florida
(3041, 9) Huntsville, Alabama
(3051, 9) Grand Prairie, Texas
(3079, 9) Knoxville, Tennessee
(3106, 9) Worcester, Massachusetts
(3127, 9) Newport News, Virginia
(3144, 9) Brownsville, Texas
(3156, 9) Overland Park, Kansas
(3166, 9) Santa Clarita, California
(3189, 9) Providence, Rhode Island
(3196, 9) Garden Grove, California
(3222, 9) Chattanooga, Tennessee
(3248, 9) Oceanside, California
(3277, 9) Jackson, Mississippi
(3294, 9) Fort Lauderdale, Florida
(3316, 9) Santa Rosa, California
(3325, 9) Rancho Cucamonga, California
(3340, 9) Port St. Lucie, Florida
(3362, 9) Tempe, Arizona
(3370, 9) Ontario, California
(3398, 9) Vancouver, Washington
(3415, 9) Cape Coral, Florida
(3443, 9) Sioux Falls, South Dakota
(3469, 9) Springfield, Missouri
(3481, 9) Peoria, Arizona
(3488, 9) Pembroke Pines, Florida
(3500, 9) Elk Grove, California
(3530, 9) Salem, Oregon
(3552, 9) Lancaster, California
(3556, 9) Corona, California
(3586, 9) Eugene, Oregon
(3601, 9) Palmdale, California
(3619, 9) Salinas, California
(3649, 9) Springfield, Massachusetts
(3659, 9) Pasadena, Texas
(3679, 9) Fort Collins, Colorado
(3691, 9) Hayward, California
(3702, 9) Pomona, California
(3720, 9) Cary, North Carolina
(3741, 9) Rockford, Illinois
(3768, 9) Alexandria, Virginia
(3796, 9) Escondido, California
(3817, 9) McKinney, Texas
(3838, 9) Kansas City, Kansas
(3854, 9) Joliet, Illinois
(3865, 9) Sunnyvale, California
(3877, 9) Torrance, California
(3893, 9) Bridgeport, Connecticut
(3905, 9) Lakewood, Colorado
(3922, 9) Hollywood, Florida
(3929, 9) Paterson, New Jersey
(3942, 9) Naperville, Illinois
(3969, 9) Syracuse, New York
(3979, 9) Mesquite, Texas
(4008, 9) Dayton, Ohio
(4031, 9) Savannah, Georgia
(4043, 9) Clarksville, Tennessee
(4073, 9) Orange, California
(4102, 9) Pasadena, California
(4111, 9) Fullerton, California
(4126, 9) Killeen, Texas
(4142, 9) Frisco, Texas
(4158, 9) Hampton, Virginia
(4174, 9) McAllen, Texas
(4183, 9) Warren, Michigan
(4204, 9) Bellevue, Washington
(4215, 9) West Valley City, Utah
(4242, 9) Columbia, South Carolina
(4253, 9) Olathe, Kansas
(4262, 9) Sterling Heights, Michigan
(4289, 9) New Haven, Connecticut
(4293, 9) Miramar, Florida
(4319, 9) Waco, Texas
(4328, 9) Thousand Oaks, California
(4355, 9) Cedar Rapids, Iowa
(4379, 9) Charleston, South Carolina
(4394, 9) Visalia, California
(4421, 9) Topeka, Kansas
(4429, 9) Elizabeth, New Jersey
(4458, 9) Gainesville, Florida
(4472, 9) Thornton, Colorado
(4483, 9) Roseville, California
(4491, 9) Carrollton, Texas
(4497, 9) Coral Springs, Florida
(4508, 9) Stamford, Connecticut
(4519, 9) Simi Valley, California
(4530, 9) Concord, California
(4558, 9) Hartford, Connecticut
(4566, 9) Kent, Washington
(4588, 9) Lafayette, Louisiana
(4602, 9) Midland, Texas
(4618, 9) Surprise, Arizona
(4632, 9) Denton, Texas
(4648, 9) Victorville, California
(4672, 9) Evansville, Indiana
(4693, 9) Santa Clara, California
(4714, 9) Abilene, Texas
(4741, 9) Athens-Clarke County, Georgia
(4751, 9) Vallejo, California
(4773, 9) Allentown, Pennsylvania
(4792, 9) Norman, Oklahoma
(4813, 9) Beaumont, Texas
(4840, 9) Independence, Missouri
(4866, 9) Murfreesboro, Tennessee
(4892, 9) Ann Arbor, Michigan
(4921, 9) Springfield, Illinois
(4950, 9) Berkeley, California
(4970, 9) Peoria, Illinois
(4995, 9) Provo, Utah
(4998, 9) El Monte, California
(5023, 9) Columbia, Missouri
(5051, 9) Lansing, Michigan
(5077, 9) Fargo, North Dakota
(5082, 9) Downey, California
(5100, 9) Costa Mesa, California
(5126, 9) Wilmington, North Carolina
(5138, 9) Arvada, Colorado
(5145, 9) Inglewood, California
(5150, 9) Miami Gardens, Florida
(5173, 9) Carlsbad, California
(5179, 9) Westminster, Colorado
(5203, 9) Rochester, Minnesota
(5217, 9) Odessa, Texas
(5234, 9) Manchester, New Hampshire
(5245, 9) Elgin, Illinois
(5252, 9) West Jordan, Utah
(5265, 9) Round Rock, Texas
(5281, 9) Clearwater, Florida
(5289, 9) Waterbury, Connecticut
(5296, 9) Gresham, Oregon
(5309, 9) Fairfield, California
(5335, 9) Billings, Montana
(5381, 9) Lowell, Massachusetts
(5381, 9) San Buenaventura (Ventura), California
(5406, 9) Pueblo, Colorado
(5413, 9) High Point, North Carolina
(5421, 9) West Covina, California
(5439, 9) Richmond, California
(5444, 9) Murrieta, California
(5469, 9) Cambridge, Massachusetts
(5483, 9) Antioch, California
(5511, 9) Temecula, California
(5515, 9) Norwalk, California
(5517, 9) Centennial, Colorado
(5536, 9) Everett, Washington
(5553, 9) Palm Bay, Florida
(5569, 9) Wichita Falls, Texas
(5594, 9) Green Bay, Wisconsin
(5600, 9) Daly City, California
(5609, 9) Burbank, California
(5619, 9) Richardson, Texas
(5634, 9) Pompano Beach, Florida
(5653, 9) North Charleston, South Carolina
(5660, 9) Broken Arrow, Oklahoma
(5684, 9) Boulder, Colorado
(5702, 9) West Palm Beach, Florida
(5721, 9) Santa Maria, California
(5730, 9) El Cajon, California
(5754, 9) Davenport, Iowa
(5756, 9) Rialto, California
(5785, 9) Las Cruces, New Mexico
(5796, 9) San Mateo, California
(5804, 9) Lewisville, Texas
(5831, 9) South Bend, Indiana
(5857, 9) Lakeland, Florida
(5885, 9) Erie, Pennsylvania
(5911, 9) Tyler, Texas
(5919, 9) Pearland, Texas
(5934, 9) College Station, Texas
(5953, 9) Kenosha, Wisconsin
(5962, 9) Sandy Springs, Georgia
(5975, 9) Clovis, California
(6004, 9) Flint, Michigan
(6029, 9) Roanoke, Virginia
(6056, 9) Albany, New York
(6058, 9) Jurupa Valley, California
(6060, 9) Compton, California
(6074, 9) San Angelo, Texas
(6102, 9) Hillsboro, Oregon
(6117, 9) Lawton, Oklahoma
(6125, 9) Renton, Washington
(6143, 9) Vista, California
(6156, 9) Davie, Florida
(6179, 9) Greeley, Colorado
(6191, 9) Mission Viejo, California
(6204, 9) Portsmouth, Virginia
(6215, 9) Dearborn, Michigan
(6216, 9) South Gate, California
(6230, 9) Tuscaloosa, Alabama
(6234, 9) Livonia, Michigan
(6264, 9) New Bedford, Massachusetts
(6271, 9) Vacaville, California
(6275, 9) Brockton, Massachusetts
(6295, 9) Roswell, Georgia
(6308, 9) Beaverton, Oregon
(6319, 9) Quincy, Massachusetts
(6330, 9) Sparks, Nevada
(6357, 9) Yakima, Washington
(6362, 9) Lee's Summit, Missouri
(6374, 9) Federal Way, Washington
(6378, 9) Carson, California
(6400, 9) Santa Monica, California
(6404, 9) Hesperia, California
(6421, 9) Allen, Texas
(6427, 9) Rio Rancho, New Mexico
(6453, 9) Yuma, Arizona
(6459, 9) Westminster, California
(6466, 9) Orem, Utah
(6479, 9) Lynn, Massachusetts
(6507, 9) Redding, California
(6511, 9) Spokane Valley, Washington
(6534, 9) Miami Beach, Florida
(6547, 9) League City, Texas
(6574, 9) Lawrence, Kansas
(6596, 9) Santa Barbara, California
(6596, 9) Plantation, Florida
(6606, 9) Sandy, Utah
(6615, 9) Sunrise, Florida
(6644, 9) Macon, Georgia
(6661, 9) Longmont, Colorado
(6685, 9) Boca Raton, Florida
(6697, 9) San Marcos, California
(6708, 9) Greenville, North Carolina
(6714, 9) Waukegan, Illinois
(6732, 9) Fall River, Massachusetts
(6751, 9) Chico, California
(6764, 9) Newton, Massachusetts
(6776, 9) San Leandro, California
(6789, 9) Reading, Pennsylvania
(6804, 9) Norwalk, Connecticut
(6818, 9) Fort Smith, Arkansas
(6839, 9) Newport Beach, California
(6861, 9) Asheville, North Carolina
(6874, 9) Nashua, New Hampshire
(6884, 9) Edmond, Oklahoma
(6899, 9) Whittier, California
(6910, 9) Nampa, Idaho
(6928, 9) Bloomington, Minnesota
(6934, 9) Deltona, Florida
(6938, 9) Hawthorne, California
(6960, 9) Duluth, Minnesota
(6975, 9) Carmel, Indiana
(6991, 9) Suffolk, Virginia
(7004, 9) Clifton, New Jersey
(7009, 9) Citrus Heights, California
(7035, 9) Livermore, California
(7041, 9) Tracy, California
(7045, 9) Alhambra, California
(7055, 9) Kirkland, Washington
(7072, 9) Trenton, New Jersey
(7097, 9) Ogden, Utah
(7105, 9) Hoover, Alabama
(7107, 9) Cicero, Illinois
(7112, 9) Fishers, Indiana
(7124, 9) Sugar Land, Texas
(7136, 9) Danbury, Connecticut
(7146, 9) Meridian, Idaho
(7155, 9) Indio, California
(7172, 9) Concord, North Carolina
(7180, 9) Menifee, California
(7206, 9) Champaign, Illinois
(7221, 9) Buena Park, California
(7234, 9) Troy, Michigan
(7251, 9) O'Fallon, Missouri
(7259, 9) Johns Creek, Georgia
(7286, 9) Bellingham, Washington
(7290, 9) Westland, Michigan
(7316, 9) Bloomington, Indiana
(7340, 9) Sioux City, Iowa
(7364, 9) Warwick, Rhode Island
(7383, 9) Hemet, California
(7390, 9) Longview, Texas
(7398, 9) Farmington Hills, Michigan
(7417, 9) Bend, Oregon
(7423, 9) Lakewood, California
(7437, 9) Merced, California
(7437, 9) Mission, Texas
(7456, 9) Chino, California
(7465, 9) Redwood City, California
(7474, 9) Edinburg, Texas
(7484, 9) Cranston, Rhode Island
(7491, 9) Parma, Ohio
(7502, 9) New Rochelle, New York
(7519, 9) Lake Forest, California
(7546, 9) Napa, California
(7556, 9) Hammond, Indiana
(7581, 9) Fayetteville, Arkansas
(7598, 9) Bloomington, Illinois
(7611, 9) Avondale, Arizona
(7622, 9) Somerville, Massachusetts
(7645, 9) Palm Coast, Florida
(7659, 9) Bryan, Texas
(7665, 9) Gary, Indiana
(7681, 9) Largo, Florida
(7684, 9) Brooklyn Park, Minnesota
(7690, 9) Tustin, California
(7709, 9) Racine, Wisconsin
(7721, 9) Deerfield Beach, Florida
(7744, 9) Lynchburg, Virginia
(7758, 9) Mountain View, California
(7786, 9) Medford, Oregon
(7793, 9) Lawrence, Massachusetts
(7796, 9) Bellflower, California
(7819, 9) Melbourne, Florida
(7848, 9) St. Joseph, Missouri
(7860, 9) Camden, New Jersey
(7884, 9) St. George, Utah
(7901, 9) Kennewick, Washington
(7901, 9) Baldwin Park, California
(7907, 9) Chino Hills, California
(7923, 9) Alameda, California
(7936, 9) Albany, Georgia
(7946, 9) Arlington Heights, Illinois
(7967, 9) Scranton, Pennsylvania
(7982, 9) Evanston, Illinois
(8002, 9) Kalamazoo, Michigan
(8017, 9) Baytown, Texas
(8034, 9) Upland, California
(8046, 9) Springdale, Arkansas
(8066, 9) Bethlehem, Pennsylvania
(8073, 9) Schaumburg, Illinois
(8088, 9) Mount Pleasant, South Carolina
(8097, 9) Auburn, Washington
(8107, 9) Decatur, Illinois
(8114, 9) San Ramon, California
(8123, 9) Pleasanton, California
(8127, 9) Wyoming, Michigan
(8145, 9) Lake Charles, Louisiana
(8154, 9) Plymouth, Minnesota
(8166, 9) Bolingbrook, Illinois
(8170, 9) Pharr, Texas
(8190, 9) Appleton, Wisconsin
(8200, 9) Gastonia, North Carolina
(8220, 9) Folsom, California
(8227, 9) Southfield, Michigan
(8237, 9) Rochester Hills, Michigan
(8249, 9) New Britain, Connecticut
(8267, 9) Goodyear, Arizona
(8287, 9) Canton, Ohio
(8301, 9) Warner Robins, Georgia
(8307, 9) Union City, California
(8317, 9) Perris, California
(8327, 9) Manteca, California
(8343, 9) Iowa City, Iowa
(8358, 9) Jonesboro, Arkansas
(8385, 9) Wilmington, Delaware
(8386, 9) Lynwood, California
(8413, 9) Loveland, Colorado
(8424, 9) Pawtucket, Rhode Island
(8438, 9) Boynton Beach, Florida
(8449, 9) Waukesha, Wisconsin
(8465, 9) Gulfport, Mississippi
(8476, 9) Apple Valley, California
(8480, 9) Passaic, New Jersey
(8501, 9) Rapid City, South Dakota
(8517, 9) Layton, Utah
(8532, 9) Lafayette, Indiana
(8539, 9) Turlock, California
(8551, 9) Muncie, Indiana
(8551, 9) Temple, Texas
(8560, 9) Missouri City, Texas
(8576, 9) Redlands, California
(8604, 9) Santa Fe, New Mexico
(8604, 9) Lauderhill, Florida
(8614, 9) Milpitas, California
(8623, 9) Palatine, Illinois
(8652, 9) Missoula, Montana
(8668, 9) Rock Hill, South Carolina
(8675, 9) Jacksonville, North Carolina
(8698, 9) Franklin, Tennessee
(8724, 9) Flagstaff, Arizona
(8732, 9) Flower Mound, Texas
(8732, 9) Weston, Florida
(8744, 9) Waterloo, Iowa
(8748, 9) Union City, New Jersey
(8752, 9) Mount Vernon, New York
(8774, 9) Fort Myers, Florida
(8784, 9) Dothan, Alabama
(8795, 9) Rancho Cordova, California
(8805, 9) Redondo Beach, California
(8817, 9) Jackson, Tennessee
(8826, 9) Pasco, Washington
(8843, 9) St. Charles, Missouri
(8861, 9) Eau Claire, Wisconsin
(8871, 9) North Richland Hills, Texas
(8893, 9) Bismarck, North Dakota
(8898, 9) Yorba Linda, California
(8903, 9) Kenner, Louisiana
(8915, 9) Walnut Creek, California
(8944, 9) Frederick, Maryland
(8959, 9) Oshkosh, Wisconsin
(8961, 9) Pittsburg, California
(8990, 9) Palo Alto, California
(9005, 9) Bossier City, Louisiana
(9023, 9) Portland, Maine
(9032, 9) St. Cloud, Minnesota
(9048, 9) Davis, California
(9059, 9) South San Francisco, California
(9071, 9) Camarillo, California
(9080, 9) North Little Rock, Arkansas
(9091, 9) Schenectady, New York
(9097, 9) Gaithersburg, Maryland
(9115, 9) Harlingen, Texas
(9121, 9) Woodbury, Minnesota
(9135, 9) Eagan, Minnesota
(9142, 9) Yuba City, California
(9155, 9) Maple Grove, Minnesota
(9178, 9) Youngstown, Ohio
(9190, 9) Skokie, Illinois
(9201, 9) Kissimmee, Florida
(9219, 9) Johnson City, Tennessee
(9236, 9) Victoria, Texas
(9251, 9) San Clemente, California
(9261, 9) Bayonne, New Jersey
(9272, 9) Laguna Niguel, California
(9272, 9) East Orange, New Jersey
(9281, 9) Shawnee, Kansas
(9303, 9) Homestead, Florida
(9320, 9) Rockville, Maryland
(9341, 9) Delray Beach, Florida
(9350, 9) Janesville, Wisconsin
(9364, 9) Conway, Arkansas
(9364, 9) Pico Rivera, California
(9370, 9) Lorain, Ohio
(9373, 9) Montebello, California
(9401, 9) Lodi, California
(9427, 9) New Braunfels, Texas
(9437, 9) Marysville, Washington
(9444, 9) Tamarac, Florida
(9458, 9) Madera, California
(9466, 9) Conroe, Texas
(9493, 9) Santa Cruz, California
(9498, 9) Eden Prairie, Minnesota
(9526, 9) Cheyenne, Wyoming
(9551, 9) Daytona Beach, Florida
(9565, 9) Alpharetta, Georgia
(9580, 9) Hamilton, Ohio
(9587, 9) Waltham, Massachusetts
(9595, 9) Coon Rapids, Minnesota
(9601, 9) Haverhill, Massachusetts
(9618, 9) Council Bluffs, Iowa
(9631, 9) Taylor, Michigan
(9641, 9) Utica, New York
(9651, 9) Ames, Iowa
(9657, 9) La Habra, California
(9676, 9) Encinitas, California
(9702, 9) Bowling Green, Kentucky
(9716, 9) Burnsville, Minnesota
(9739, 9) Greenville, South Carolina
(9744, 9) West Des Moines, Iowa
(9751, 9) Cedar Park, Texas
(9753, 9) Tulare, California
(9760, 9) Monterey Park, California
(9769, 9) Vineland, New Jersey
(9796, 9) Terre Haute, Indiana
(9801, 9) North Miami, Florida
(9814, 9) Mansfield, Texas
(9816, 9) West Allis, Wisconsin
(9828, 9) Bristol, Connecticut
(9829, 9) Taylorsville, Utah
(9834, 9) Malden, Massachusetts
(9841, 9) Meriden, Connecticut
(9847, 9) Blaine, Minnesota
(9861, 9) Wellington, Florida
(9872, 9) Cupertino, California
(9880, 9) Springfield, Oregon
(9896, 9) Rogers, Arkansas
(9906, 9) St. Clair Shores, Michigan
(9906, 9) Gardena, California
(9910, 9) Pontiac, Michigan
(9919, 9) National City, California
(9944, 9) Grand Junction, Colorado
(9956, 9) Rocklin, California
(9978, 9) Chapel Hill, North Carolina
(9993, 9) Casper, Wyoming
(10013, 9) Broomfield, Colorado
(10065, 9) Petaluma, California
(10073, 9) South Jordan, Utah
(10092, 9) Springfield, Ohio
(10117, 9) Great Falls, Montana
(10144, 9) Lancaster, Pennsylvania
(10154, 9) North Port, Florida
(10169, 9) Lakewood, Washington
(10191, 9) Marietta, Georgia
(10206, 9) San Rafael, California
(10214, 9) Royal Oak, Michigan
(10229, 9) Des Plaines, Illinois
(10230, 9) Huntington Park, California
(10243, 9) La Mesa, California
(10257, 9) Orland Park, Illinois
(10266, 9) Auburn, Alabama
(10275, 9) Lakeville, Minnesota
(10291, 9) Owensboro, Kentucky
(10300, 9) Moore, Oklahoma
(10316, 9) Jupiter, Florida
(10333, 9) Idaho Falls, Idaho
(10362, 9) Dubuque, Iowa
(10365, 9) Bartlett, Tennessee
(10370, 9) Rowlett, Texas
(10374, 9) Novi, Michigan
(10378, 9) White Plains, New York
(10395, 9) Arcadia, California
(10414, 9) Redmond, Washington
(10425, 9) Lake Elsinore, California
(10449, 9) Ocala, Florida
(10460, 9) Tinley Park, Illinois
(10476, 9) Port Orange, Florida
(10481, 9) Medford, Massachusetts
(10485, 9) Oak Lawn, Illinois
(10497, 9) Rocky Mount, North Carolina
(10506, 9) Kokomo, Indiana
(10521, 9) Coconut Creek, Florida
(10531, 9) Bowie, Maryland
(10539, 9) Berwyn, Illinois
(10543, 9) Midwest City, Oklahoma
(10550, 9) Fountain Valley, California
(10558, 9) Buckeye, Arizona
(10561, 9) Dearborn Heights, Michigan
(10574, 9) Woodland, California
(10581, 9) Noblesville, Indiana
(10589, 9) Valdosta, Georgia
(10591, 9) Diamond Bar, California
(10607, 9) Manhattan, Kansas
(10617, 9) Santee, California
(10635, 9) Taunton, Massachusetts
(10655, 9) Sanford, Florida
(10664, 9) Kettering, Ohio
(10673, 9) New Brunswick, New Jersey
(10690, 9) Decatur, Alabama
(10693, 9) Chicopee, Massachusetts
(10706, 9) Anderson, Indiana
(10714, 9) Margate, Florida
(10719, 9) Weymouth Town, Massachusetts
(10721, 9) Hempstead, New York
(10744, 9) Corvallis, Oregon
(10746, 9) Eastvale, California
(10751, 9) Porterville, California
(10755, 9) West Haven, Connecticut
(10768, 9) Brentwood, California
(10771, 9) Paramount, California
(10784, 9) Grand Forks, North Dakota
(10802, 9) Georgetown, Texas
(10812, 9) St. Peters, Missouri
(10825, 9) Shoreline, Washington
(10832, 9) Mount Prospect, Illinois
(10837, 9) Hanford, California
(10850, 9) Normal, Illinois
(10852, 9) Rosemead, California
(10868, 9) Lehi, Utah
(10881, 9) Pocatello, Idaho
(10883, 9) Highland, California
(10898, 9) Novato, California
(10909, 9) Port Arthur, Texas
(10932, 9) Carson City, Nevada
(10946, 9) San Marcos, Texas
(10959, 9) Hendersonville, Tennessee
(10967, 9) Elyria, Ohio
(10972, 9) Revere, Massachusetts
(10985, 9) Pflugerville, Texas
(10989, 9) Greenwood, Indiana
(11000, 9) Bellevue, Nebraska
(11011, 9) Wheaton, Illinois
(11022, 9) Smyrna, Georgia
(11045, 9) Sarasota, Florida
(11054, 9) Blue Springs, Missouri
(11059, 9) Colton, California
(11066, 9) Euless, Texas
(11074, 9) Castle Rock, Colorado
(11080, 9) Cathedral City, California
(11095, 9) Kingsport, Tennessee
(11111, 9) Lake Havasu City, Arizona
(11133, 9) Pensacola, Florida
(11139, 9) Hoboken, New Jersey
(11140, 9) Yucaipa, California
(11158, 9) Watsonville, California
(11172, 9) Richland, Washington
(11174, 9) Delano, California
(11180, 9) Hoffman Estates, Illinois
(11184, 9) Florissant, Missouri
(11192, 9) Placentia, California
(11194, 9) West New York, New Jersey
(11204, 9) Dublin, California
(11224, 9) Oak Park, Illinois
(11234, 9) Peabody, Massachusetts
(11240, 9) Perth Amboy, New Jersey
(11257, 9) Battle Creek, Michigan
(11277, 9) Bradenton, Florida
(11294, 9) Gilroy, California
(11300, 9) Milford, Connecticut
(11313, 9) Albany, Oregon
(11321, 9) Ankeny, Iowa
(11340, 9) La Crosse, Wisconsin
(11358, 9) Burlington, North Carolina
(11360, 9) DeSoto, Texas
(11383, 9) Harrisonburg, Virginia
(11392, 9) Minnetonka, Minnesota
(11404, 9) Elkhart, Indiana
(11407, 9) Lakewood, Ohio
(11410, 9) Glendora, California
(11424, 9) Southaven, Mississippi
(11450, 9) Charleston, West Virginia
(11462, 9) Joplin, Missouri
(11471, 9) Enid, Oklahoma
(11483, 9) Palm Beach Gardens, Florida
(11484, 9) Brookhaven, Georgia
(11485, 9) Plainfield, New Jersey
(11494, 9) Grand Island, Nebraska
(11513, 9) Palm Desert, California
(11525, 9) Huntersville, North Carolina
(11539, 9) Tigard, Oregon
(11550, 9) Lenexa, Kansas
(11567, 9) Saginaw, Michigan
(11569, 9) Kentwood, Michigan
(11580, 9) Doral, Florida
(11585, 9) Apple Valley, Minnesota
(11609, 9) Grapevine, Texas
(11612, 9) Aliso Viejo, California
(11615, 9) Sammamish, Washington
(11628, 9) Casa Grande, Arizona
(11642, 9) Pinellas Park, Florida
(11653, 9) Troy, New York
(11662, 9) West Sacramento, California
(11670, 9) Burien, Washington
(11676, 9) Commerce City, Colorado
(11685, 9) Monroe, Louisiana
(11694, 9) Cerritos, California
(11706, 9) Downers Grove, Illinois
(11728, 9) Coral Gables, Florida
(11743, 9) Wilson, North Carolina
(11767, 9) Niagara Falls, New York
(11780, 9) Poway, California
(11791, 9) Edina, Minnesota
(11798, 9) Cuyahoga Falls, Ohio
(11798, 9) Rancho Santa Margarita, California
(11823, 9) Harrisburg, Pennsylvania
(11834, 9) Huntington, West Virginia
(11840, 9) La Mirada, California
(11845, 9) Cypress, California
(11856, 9) Caldwell, Idaho
(11873, 9) Logan, Utah
(11897, 9) Galveston, Texas
(11912, 9) Sheboygan, Wisconsin
(11925, 9) Middletown, Ohio
(11931, 9) Murray, Utah
(11950, 9) Roswell, New Mexico
(11959, 9) Parker, Colorado
(11963, 9) Bedford, Texas
(11979, 9) East Lansing, Michigan
(11986, 9) Methuen, Massachusetts
(11992, 9) Covina, California
(12003, 9) Alexandria, Louisiana
(12032, 9) Olympia, Washington
(12038, 9) Euclid, Ohio
(12048, 9) Mishawaka, Indiana
(12062, 9) Salina, Kansas
(12068, 9) Azusa, California
(12082, 9) Newark, Ohio
(12092, 9) Chesterfield, Missouri
(12122, 9) Leesburg, Virginia
(12128, 9) Dunwoody, Georgia
(12139, 9) Hattiesburg, Mississippi
(12143, 9) Roseville, Michigan
(12155, 9) Bonita Springs, Florida
(12167, 9) Portage, Michigan
(12178, 9) St. Louis Park, Minnesota
(12186, 9) Collierville, Tennessee
(12203, 9) Middletown, Connecticut
(12218, 9) Stillwater, Oklahoma
(12225, 9) East Providence, Rhode Island
(12226, 9) Lawrence, Indiana
(12238, 9) Wauwatosa, Wisconsin
(12250, 9) Mentor, Ohio
(12251, 9) Ceres, California
(12255, 9) Cedar Hill, Texas
(12270, 9) Mansfield, Ohio
(12286, 9) Binghamton, New York
(12302, 9) Coeur d'Alene, Idaho
(12330, 9) San Luis Obispo, California
(12340, 9) Minot, North Dakota
(12364, 9) Palm Springs, California
(12372, 9) Pine Bluff, Arkansas
(12381, 9) Texas City, Texas
(12390, 9) Summerville, South Carolina
(12406, 9) Twin Falls, Idaho
(12414, 9) Jeffersonville, Indiana
(12418, 9) San Jacinto, California
(12432, 9) Madison, Alabama
(12447, 9) Altoona, Pennsylvania
(12465, 9) Columbus, Indiana
(12479, 9) Beavercreek, Ohio
(12497, 9) Apopka, Florida
(12507, 9) Elmhurst, Illinois
(12521, 9) Maricopa, Arizona
(12534, 9) Farmington, New Mexico
(12548, 9) Glenview, Illinois
(12557, 9) Cleveland Heights, Ohio
(12573, 9) Draper, Utah
(12582, 9) Lincoln, California
(12599, 9) Sierra Vista, Arizona
(12611, 9) Lacey, Washington
(12637, 9) Biloxi, Mississippi
(12650, 9) Strongsville, Ohio
(12679, 9) Barnstable Town, Massachusetts
(12684, 9) Wylie, Texas
(12688, 9) Sayreville, New Jersey
(12698, 9) Kannapolis, North Carolina
(12723, 9) Charlottesville, Virginia
(12743, 9) Littleton, Colorado
(12760, 9) Titusville, Florida
(12770, 9) Hackensack, New Jersey
(12773, 9) Newark, California
(12785, 9) Pittsfield, Massachusetts
(12812, 9) York, Pennsylvania
(12820, 9) Lombard, Illinois
(12825, 9) Attleboro, Massachusetts
(12834, 9) DeKalb, Illinois
(12847, 9) Blacksburg, Virginia
(12864, 9) Dublin, Ohio
(12865, 9) Haltom City, Texas
(12893, 9) Lompoc, California
(12896, 9) El Centro, California
(12908, 9) Danville, California
(12920, 9) Jefferson City, Missouri
(12924, 9) Cutler Bay, Florida
(12933, 9) Oakland Park, Florida
(12938, 9) North Miami Beach, Florida
(12943, 9) Freeport, New York
(12947, 9) Moline, Illinois
(12952, 9) Coachella, California
(12977, 9) Fort Pierce, Florida
(12988, 9) Smyrna, Tennessee
(12992, 9) Bountiful, Utah
(13004, 9) Fond du Lac, Wisconsin
(13010, 9) Everett, Massachusetts
(13028, 9) Danville, Virginia
(13039, 9) Keller, Texas
(13048, 9) Belleville, Illinois
(13049, 9) Bell Gardens, California
(13058, 9) Cleveland, Tennessee
(13059, 9) North Lauderdale, Florida
(13068, 9) Fairfield, Ohio
(13090, 9) Salem, Massachusetts
(13098, 9) Rancho Palos Verdes, California
(13111, 9) San Bruno, California
(13132, 9) Concord, New Hampshire
(13153, 9) Burlington, Vermont
(13163, 9) Apex, North Carolina
(13182, 9) Midland, Michigan
(13198, 9) Altamonte Springs, Florida
(13213, 9) Hutchinson, Kansas
(13221, 9) Buffalo Grove, Illinois
(13226, 9) Urbandale, Iowa
(13243, 9) State College, Pennsylvania
(13270, 9) Urbana, Illinois
(13279, 9) Plainfield, Illinois
(13296, 9) Manassas, Virginia
(13298, 9) Bartlett, Illinois
(13301, 9) Kearny, New Jersey
(13310, 9) Oro Valley, Arizona
(13322, 9) Findlay, Ohio
(13336, 9) Rohnert Park, California
(13342, 9) Westfield, Massachusetts
(13348, 9) Linden, New Jersey
(13361, 9) Sumter, South Carolina
(13366, 9) Wilkes-Barre, Pennsylvania
(13373, 9) Woonsocket, Rhode Island
(13383, 9) Leominster, Massachusetts
(13389, 9) Shelton, Connecticut
(13401, 9) Brea, California
(13414, 9) Covington, Kentucky
(13421, 9) Rockwall, Texas
(13434, 9) Meridian, Mississippi
(13435, 9) Riverton, Utah
(13442, 9) St. Cloud, Florida
(13452, 9) Quincy, Illinois
(13472, 9) Morgan Hill, California
(13480, 9) Warren, Ohio
(13497, 9) Edmonds, Washington
(13508, 9) Burleson, Texas
(13517, 9) Beverly, Massachusetts
(13531, 9) Mankato, Minnesota
(13554, 9) Hagerstown, Maryland
(13582, 9) Prescott, Arizona
(13590, 9) Campbell, California
(13600, 9) Cedar Falls, Iowa
(13602, 9) Beaumont, California
(13602, 9) La Puente, California
(13618, 9) Crystal Lake, Illinois
(13630, 9) Fitchburg, Massachusetts
(13633, 9) Carol Stream, Illinois
(13646, 9) Hickory, North Carolina
(13647, 9) Streamwood, Illinois
(13659, 9) Norwich, Connecticut
(13672, 9) Coppell, Texas
(13677, 9) San Gabriel, California
(13692, 9) Holyoke, Massachusetts
(13705, 9) Bentonville, Arkansas
(13721, 9) Florence, Alabama
(13723, 9) Peachtree Corners, Georgia
(13736, 9) Brentwood, Tennessee
(13757, 9) Bozeman, Montana
(13765, 9) New Berlin, Wisconsin
(13769, 9) Goose Creek, South Carolina
(13786, 9) Huntsville, Texas
(13797, 9) Prescott Valley, Arizona
(13807, 9) Maplewood, Minnesota
(13813, 9) Romeoville, Illinois
(13815, 9) Duncanville, Texas
(13840, 9) Atlantic City, New Jersey
(13852, 9) Clovis, New Mexico
(13860, 9) The Colony, Texas
(13867, 9) Culver City, California
(13877, 9) Marlborough, Massachusetts
(13891, 9) Hilton Head Island, South Carolina
(13899, 9) Moorhead, Minnesota
(13900, 9) Calexico, California
(13914, 9) Bullhead City, Arizona
(13917, 9) Germantown, Tennessee
(13920, 9) La Quinta, California
(13933, 9) Lancaster, Ohio
(13950, 9) Wausau, Wisconsin
(13960, 9) Sherman, Texas
(13968, 9) Ocoee, Florida
(13979, 9) Shakopee, Minnesota
(13991, 9) Woburn, Massachusetts
(14015, 9) Bremerton, Washington
(14029, 9) Rock Island, Illinois
(14045, 9) Muskogee, Oklahoma
(14070, 9) Cape Girardeau, Missouri
(14094, 9) Annapolis, Maryland
(14095, 9) Greenacres, Florida
(14120, 9) Ormond Beach, Florida
(14126, 9) Hallandale Beach, Florida
(14127, 9) Stanton, California
(14138, 9) Puyallup, Washington
(14149, 9) Pacifica, California
(14149, 9) Hanover Park, Illinois
(14159, 9) Hurst, Texas
(14172, 9) Lima, Ohio
(14172, 9) Marana, Arizona
(14172, 9) Carpentersville, Illinois
(14173, 9) Oakley, California
(14176, 9) Huber Heights, Ohio
(14178, 9) Lancaster, Texas
(14179, 9) Montclair, California
(14185, 9) Wheeling, Illinois
(14190, 9) Brookfield, Wisconsin
(14196, 9) Park Ridge, Illinois
(14211, 9) Florence, South Carolina
(14214, 9) Roy, Utah
(14224, 9) Winter Garden, Florida
(14229, 9) Chelsea, Massachusetts
(14233, 9) Valley Stream, New York
(14253, 9) Spartanburg, South Carolina
(14258, 9) Lake Oswego, Oregon
(14263, 9) Friendswood, Texas
(14277, 9) Westerville, Ohio
(14281, 9) Northglenn, Colorado
(14284, 9) Phenix City, Alabama
(14296, 9) Grove City, Ohio
(14314, 9) Texarkana, Texas
(14318, 9) Addison, Illinois
(14341, 9) Dover, Delaware
(14344, 9) Lincoln Park, Michigan
(14344, 9) Calumet City, Illinois
(14364, 9) Muskegon, Michigan
(14369, 9) Aventura, Florida
(14379, 9) Martinez, California
(14387, 9) Greenfield, Wisconsin
(14403, 9) Apache Junction, Arizona
(14408, 9) Monrovia, California
(14413, 9) Weslaco, Texas
(14417, 9) Keizer, Oregon
(14420, 9) Spanish Fork, Utah
(14428, 9) Beloit, Wisconsin
(14448, 9) Panama City, Florida
In [531]:
df = pd.read_csv('poi_process.csv', index_col=0)
df = df.drop_duplicates()
df.visit_length.value_counts()
Out[531]:
15 min 10038
1-2 hours 1900
2-3 hours 952
<1 hour 933
More than 3 hours 487
Yes 21
No 16
Name: visit_length, dtype: int64
In [487]:
table2 = db['Places']
In [547]:
# df2 = pd.DataFrame(columns=['name','city','state','coord0', 'coord1', 'google_time_spent','rank','img_url', 'type'])
from collections import Counter
df2 = pd.DataFrame(list(table2.find()))
df2['Name'] = [i['title'] for i in df2.properties]
df2['City'] = [i.split(', ')[0] for i in df2.city]
df2['State'] = [i.split(', ')[1] for i in df2.city]
df2['Coord0'] = [i['coordinates'][0] for i in df2.geometry]
df2['Coord1'] = [i['coordinates'][1] for i in df2.geometry]
df2['POI_rank'] = [i['rank'] for i in df2.properties]
df2['img_url'] = [i['thumbnail_url'] for i in df2.properties]
df2 = df2.drop(['_id','city','geometry','properties'],axis=1)
df2.columns = [i.lower() for i in df2.columns.values]
df2.to_csv('poi_places.csv')
In [989]:
df_test = pd.read_csv('poi_places.csv',index_col = 0)
In [695]:
# for i in range(df2.shape[0]):
idx = 0
df4 = df[(df.city == df2.loc[idx]['city']) & (df.state == df2.loc[idx]['state'])]
df4 = df4[[df2.loc[idx]['name'] in i for i in df4.name.values]]
df4 = pd.DataFrame(columns = df4.columns)
ta_rating = np.zeros(df2.shape[0])
reviews = np.zeros(df2.shape[0])
city_rank = np.zeros(df2.shape[0])
fee = np.chararray(df2.shape[0],itemsize=20)
visit_length = np.chararray(df2.shape[0],itemsize=20)
tag = np.chararray(df2.shape[0],itemsize=40)
for idx in range(df2.shape[0]):
current_df = df[(df.city == df2.loc[idx]['city']) & (df.state == df2.loc[idx]['state'])]
cdf = current_df[[df2.loc[idx]['name'] in i for i in current_df.name.values]]
if cdf.shape[0] == 1:
ta_rating[idx] = cdf['rating'].values[0]
reviews[idx] = cdf['reviews'].values[0]
city_rank[idx] = cdf['city_rank'].values[0]
fee[idx] = cdf['fee'].values[0]
visit_length[idx] = cdf['visit_length'].values[0]
tag[idx] = cdf['tag'].values[0]
elif cdf.shape[0] == 0:
ta_rating[idx] = None
reviews[idx] = None
city_rank[idx] = None
fee[idx] = None
visit_length[idx] = None
tag[idx] = None
else:
if df2.loc[idx]['name'] in cdf.name.values:
for j in range(cdf.shape[0]):
if cdf.name.values[j] == df2.loc[idx]['name']:
ta_rating[idx] = cdf.rating.values[j]
reviews[idx] = cdf.reviews.values[j]
city_rank[idx] = cdf.city_rank.values[j]
fee[idx] = cdf.fee.values[j]
visit_length[idx] = cdf.visit_length.values[j]
tag[idx] = cdf.tag.values[j]
break
else:
ta_rating[idx] = -999
reviews[idx] = -999
city_rank[idx] = -999
fee[idx] = -999
visit_length[idx] = -999
tag[idx] = -999
In [700]:
df3 = df2.copy()
df3['rating'] = ta_rating
df3['reviews'] = reviews
df3['city_rank'] = city_rank
df3['fee'] = fee
df3['visit_length'] = visit_length
df3['tag'] = tag
In [707]:
df3 = df3.drop_duplicates()
df3.to_csv('step2_poi.csv')
In [805]:
normal_trip_min = np.chararray(df3.shape[0],itemsize=20)
fast_trip_min = np.chararray(df3.shape[0],itemsize=20)
for i,v in enumerate(df3.google_time_spent_txt.values):
if v:
if ('hour' in v):
normal_trip_min[i] = v.split(' ')[-2]
if '-' in normal_trip_min[i]:
fast_trip_min[i] = float(normal_trip_min[i].split('-')[0])*60
normal_trip_min[i] = float(normal_trip_min[i].split('-')[-1])*60
else:
fast_trip_min[i] = float(normal_trip_min[i])*60/2
normal_trip_min[i] = float(normal_trip_min[i])*60
elif 'hr' in v:
normal_trip_min[i] = float(v.split(' ')[-2])*60
if 'min' not in v:
fast_trip_min[i] = float(v.split(' ')[0])*60
else:
fast_trip_min[i] = float(v.split(' ')[0])
else:
normal_trip_min[i] = v.split(' ')[-2]
if '-' in v:
normal_trip_min[i] = float(normal_trip_min[i].split('-')[-1])
fast_trip_min[i] = float(normal_trip_min[i].split('-')[-1])
else:
fast_trip_min[i] = float(v.split(' ')[-2])/2
if float(normal_trip_min[i]) < 15:
normal_trip_min[i] = 15
elif float(normal_trip_min[i]) < 30:
normal_trip_min[i] = 30
if float(fast_trip_min[i]) < 15:
fast_trip_min[i] = 15
elif float(fast_trip_min[i]) < 30:
fast_trip_min[i] = 30
else:
fast_trip_min[i] = v
normal_trip_min[i] = v
df3['google_normal_min'] = normal_trip_min
df3['google_fast_min'] = fast_trip_min
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:41: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:42: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
In [900]:
tripadvisor_normal_min = np.chararray(df3.shape[0],itemsize=20)
tripadvisor_fast_min = np.chararray(df3.shape[0],itemsize=20)
for i,v in enumerate(df3.visit_length.values):
if v != 'None':
if v == 'More than 3 hours':
tripadvisor_normal_min[i] = 5*60
tripadvisor_fast_min[i] = 3*60
elif 'hour' in v:
if '-' in v:
tripadvisor_normal_min[i] = float(v.split(' ')[-2].split('-')[-1])*60
tripadvisor_fast_min[i] = float(v.split(' ')[-2].split('-')[-2])*60
else:
tripadvisor_normal_min[i] = 60
tripadvisor_fast_min[i] = 30
else:
if 'zoo' in df3.name.values[i].lower():
tripadvisor_normal_min[i] = 120
tripadvisor_fast_min[i] = 90
elif 'park' in df3.name.values[i].lower():
tripadvisor_normal_min[i] = 60
tripadvisor_fast_min[i] = 30
elif 'beach' in df3.name.values[i].lower():
tripadvisor_normal_min[i] = 30
tripadvisor_fast_min[i] = 15
else:
tripadvisor_normal_min[i] = 15
tripadvisor_fast_min[i] = 15
else:
tripadvisor_normal_min[i] = None
tripadvisor_fast_min[i] = None
df3['tripadvisor_fast_min'] = tripadvisor_fast_min
df3['tripadvisor_normal_min'] = tripadvisor_normal_min
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:32: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:33: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
In [901]:
adjusted_normal_time_spent = []
adjusted_fast_time_spent = []
for i in xrange(df3.shape[0]):
if df3.google_normal_min.values[i] == 'None':
if df3.tripadvisor_normal_min.values[i] == 'None':
if 'park' in df3.name.values[i].lower():
adjusted_normal_time_spent.append('45')
adjusted_fast_time_spent.append('30')
else:
adjusted_normal_time_spent.append('15')
adjusted_fast_time_spent.append('15')
else:
adjusted_normal_time_spent.append(df3.tripadvisor_normal_min.values[i])
adjusted_fast_time_spent.append(df3.tripadvisor_fast_min.values[i])
else:
adjusted_normal_time_spent.append(df3.google_normal_min.values[i])
adjusted_fast_time_spent.append(df3.google_fast_min.values[i])
df3['adjusted_normal_time_spent'] = adjusted_normal_time_spent
df3['adjusted_fast_time_spent'] = adjusted_fast_time_spent
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:18: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:19: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
In [907]:
from sklearn.cluster import KMeans
location = 'San Diego, California'
n_days = 3
city = location.split(', ')[0]
state = location.split(', ')[1]
poi_coords = df3[(df3.city == city) & (df3.state == state)][['coord0','coord1']]
kmeans = KMeans(n_clusters=n_days, random_state=0).fit(poi_coords)
print kmeans.labels_
for i in range(1,2):
current_events = []
for ix, label in enumerate(kmeans.labels_):
if label == i:
event_ix = poi_coords.index[ix]
current_events.append(event_ix)
[0 1 0 1 0 0 0 0 0 0 1 0 0 1 2 0 1 0 0 0 0]
In [837]:
#deal with the cold start:
#first pick the first use k clustering to find the cloest N days groups. Based on the attraction time zone for over 360 min.
#may switch to other attractions.
#Park equal to 45 min and others set to 15 min for now.
Out[837]:
Counter({None: 3364,
'120.0': 289,
'15': 968,
'150.0': 191,
'180.0': 175,
'210.0': 38,
'240.0': 15,
'270.0': 4,
'30': 67,
'300': 36,
'360.0': 1,
'45': 95,
'45.0': 22,
'60': 36,
'60.0': 176,
'90.0': 275})
In [910]:
city = 'san diego county'
def city_poi(city):
geolocator = Nominatim()
try:
location = geolocator.geocode(city)
except:
print 'too fast, take 5 min break'
time.sleep(5*60)
location = geolocator.geocode(city)
x1,x2,y1,y2 = location.raw['boundingbox']
base_url = 'http://www.pointsonamap.com/search?bounds=%s,%s,%s,%s' %(str(x1),str(y1),str(x2),str(y2))
r = requests.get(base_url)
if r.status_code != 200:
print 'WARNING: ', city, r.status_code
else:
data = json.loads(r.text)
return data['features']
city_poi(city)
Out[910]:
[{u'geometry': {u'coordinates': [-117.14972847543528, 32.73155500708827],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/balboapark/0',
u'rank': 1,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/101657820.jpg',
u'title': u'Balboa Park'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.27827620646276, 32.84636501606068],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/jolla/0',
u'rank': 2,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/11756032.jpg',
u'title': u'La Jolla'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.17859566929502, 32.68024198662996],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/coronadohotel/0',
u'rank': 3,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/71155401.jpg',
u'title': u'Hotel del Coronado'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.22696967808564, 32.76536432891429],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/seaworld/0',
u'rank': 4,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/75217350.jpg',
u'title': u'Sea World'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.17068008119779, 32.699440099364715],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/stdiego/0',
u'rank': 5,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/75684954.jpg',
u'title': u'San Diego'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.14970213743995, 32.735282482107955],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/stdiegozoo/0',
u'rank': 6,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/75652220.jpg',
u'title': u'San Diego Zoo'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.19658042643661, 32.754163247923906],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/oldtown/0',
u'rank': 7,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/104941168.jpg',
u'title': u'Old Town'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.17509448584258, 32.71382164834171],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/usmidway/0',
u'rank': 8,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/53147000.jpg',
u'title': u'USS Midway'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.15693776844262, 32.70710888079347],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/petcopark/0',
u'rank': 9,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/10043431.jpg',
u'title': u'Petco Park'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.17118600030665, 32.70896487799013],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/seaportvillage/0',
u'rank': 10,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/75272858.jpg',
u'title': u'Seaport Village'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.31149400962188, 33.127246529430074],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg119_33_neg113_39/legoland/0',
u'rank': 11,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/1793488.jpg',
u'title': u'Legoland'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.38507464973118, 33.19386577384317],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg119_33_neg113_39/oceanside/0',
u'rank': 12,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/58401508.jpg',
u'title': u'Oceanside'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.2729943348652, 32.85066487394239],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/jollacove/0',
u'rank': 13,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/7604993.jpg',
u'title': u'La Jolla Cove'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.15089832451496, 32.73531460541677],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/panda/0',
u'rank': 14,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/16379442.jpg',
u'title': u'Panda'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.15235662869192, 32.73160546269124],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/manmuseum/0',
u'rank': 15,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/12291091.jpg',
u'title': u'Museum of Man'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.25753866973099, 32.79600791074909],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/pacificbeach/0',
u'rank': 16,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/28975253.jpg',
u'title': u'Pacific Beach'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.24086993098719, 32.67199173555879],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/pointlomalighthouse/0',
u'rank': 17,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/108403651.jpg',
u'title': u'Point Loma Lighthouse'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.17346980932795, 32.72022947280797],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/indiastar/0',
u'rank': 18,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/1958396.jpg',
u'title': u'Star of India'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.2447045840458, 32.83983691806696],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/mtsoledad/0',
u'rank': 19,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/40536652.jpg',
u'title': u'Mount Soledad'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.17968139084391, 32.67949613256709],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/coronadobeach/0',
u'rank': 20,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/66459588.jpg',
u'title': u'Coronado Beach'},
u'type': u'Feature'},
{u'geometry': {u'coordinates': [-117.1612314455976, 32.70632999365126],
u'type': u'Point'},
u'properties': {u'path': u'/attraction/box_neg135_22_neg113_33/comiccon/0',
u'rank': 21,
u'thumbnail_url': u'http://mw2.google.com/mw-panoramio/photos/small/75498727.jpg',
u'title': u'Comic-Con'},
u'type': u'Feature'}]
In [914]:
df_counties = pd.read_csv('/Users/zoesh/Desktop/travel_with_friends/USA-cities-and-states/us_cities_states_counties.csv',sep='|')
In [919]:
df_counties_u = df_counties.drop('City alias',axis = 1).drop_duplicates()
In [929]:
df_cities = pd.read_csv('/Users/zoesh/Desktop/travel_with_friends/top_1000_us_cities.csv')
In [931]:
db_cilent = MongoClient()
db = db_cilent['zoeshrm']
table = db['Counties']
def city_poi(city):
geolocator = Nominatim()
try:
location = geolocator.geocode(city)
except:
print 'too fast, take 5 min break'
time.sleep(5*60)
location = geolocator.geocode(city)
x1,x2,y1,y2 = location.raw['boundingbox']
base_url = 'http://www.pointsonamap.com/search?bounds=%s,%s,%s,%s' %(str(x1),str(y1),str(x2),str(y2))
r = requests.get(base_url)
if r.status_code != 200:
print 'WARNING: ', city, r.status_code
else:
data = json.loads(r.text)
return data['features']
def top_1000_cities(data_path):
df = pd.read_csv(data_path)
return df
def time_spent_txt(poi):
poi_name = poi['properties']['title']
poi_name = poi_name.replace(' ', '+')
baseurl = 'https://www.google.com/search?q=%s' %(poi_name)
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
r = requests.get(baseurl,headers=headers)
if r.status_code != 200:
print 'WARNING: ', poi_name, r.status_code
else:
s = BS(r.text, 'html.parser')
try:
time_spent= s.find("div", attrs={"class": "_OKe"}).find('div',attrs={'class':'_B1k'}).find('b').text
return time_spent
except:
return None
def top_1000_cities_poi(df):
df['search_city'] = df.city + ', ' + df.state
df['search_county'] =
for city in df.search_city:
for data in city_poi(city):
data['city'] = city
data['google_time_spent_txt'] = time_spent_txt(data)
try:
table.insert(data)
except DuplicateKeyError:
print 'DUPS!'
print city, ' DONE!'
Out[931]:
City
State short
State full
County
0
Holtsville
NY
New York
SUFFOLK
2
Adjuntas
PR
Puerto Rico
ADJUNTAS
6
Aguada
PR
Puerto Rico
AGUADA
12
Aguadilla
PR
Puerto Rico
AGUADILLA
45
Maricao
PR
Puerto Rico
MARICAO
47
Anasco
PR
Puerto Rico
ANASCO
54
Angeles
PR
Puerto Rico
UTUADO
55
Arecibo
PR
Puerto Rico
ARECIBO
123
Bajadero
PR
Puerto Rico
ARECIBO
125
Barceloneta
PR
Puerto Rico
BARCELONETA
151
Boqueron
PR
Puerto Rico
CABO ROJO
153
Cabo Rojo
PR
Puerto Rico
CABO ROJO
198
Penuelas
PR
Puerto Rico
PENUELAS
217
Camuy
PR
Puerto Rico
CAMUY
224
Castaner
PR
Puerto Rico
LARES
226
Rosario
PR
Puerto Rico
SAN GERMAN
227
Sabana Grande
PR
Puerto Rico
SABANA GRANDE
241
Ciales
PR
Puerto Rico
CIALES
246
Utuado
PR
Puerto Rico
UTUADO
258
Dorado
PR
Puerto Rico
DORADO
309
Ensenada
PR
Puerto Rico
GUANICA
311
Florida
PR
Puerto Rico
FLORIDA
318
Garrochales
PR
Puerto Rico
ARECIBO
321
Guanica
PR
Puerto Rico
GUANICA
328
Guayanilla
PR
Puerto Rico
GUAYANILLA
341
Hatillo
PR
Puerto Rico
HATILLO
359
Hormigueros
PR
Puerto Rico
HORMIGUEROS
371
Isabela
PR
Puerto Rico
ISABELA
446
Jayuya
PR
Puerto Rico
JAYUYA
455
Lajas
PR
Puerto Rico
LAJAS
...
...
...
...
...
63164
Chalkyitsik
AK
Alaska
YUKON KOYUKUK
63166
Nuiqsut
AK
Alaska
NORTH SLOPE
63168
Atqasuk
AK
Alaska
NORTH SLOPE
63170
Juneau
AK
Alaska
JUNEAU
63172
Angoon
AK
Alaska
HOONAH ANGOON
63173
Auke Bay
AK
Alaska
JUNEAU
63175
Douglas
AK
Alaska
JUNEAU
63177
Elfin Cove
AK
Alaska
HOONAH ANGOON
63178
Gustavus
AK
Alaska
HOONAH ANGOON
63179
Haines
AK
Alaska
HAINES
63180
Hoonah
AK
Alaska
HOONAH ANGOON
63181
Kake
AK
Alaska
PETERSBURG
63182
Pelican
AK
Alaska
HOONAH ANGOON
63183
Petersburg
AK
Alaska
PETERSBURG
63185
Sitka
AK
Alaska
SITKA
63186
Port Alexander
AK
Alaska
SITKA
63189
Skagway
AK
Alaska
SKAGWAY
63190
Tenakee Springs
AK
Alaska
HOONAH ANGOON
63192
Ketchikan
AK
Alaska
KETCHIKAN GATEWAY
63197
Meyers Chuck
AK
Alaska
KETCHIKAN GATEWAY
63199
Coffman Cove
AK
Alaska
PRINCE OF WALES HYDER
63201
Thorne Bay
AK
Alaska
PRINCE OF WALES HYDER
63203
Craig
AK
Alaska
PRINCE OF WALES HYDER
63204
Hydaburg
AK
Alaska
PRINCE OF WALES HYDER
63205
Hyder
AK
Alaska
PRINCE OF WALES HYDER
63206
Klawock
AK
Alaska
PRINCE OF WALES HYDER
63207
Metlakatla
AK
Alaska
PRINCE OF WALES HYDER
63208
Point Baker
AK
Alaska
PRINCE OF WALES HYDER
63209
Ward Cove
AK
Alaska
KETCHIKAN GATEWAY
63210
Wrangell
AK
Alaska
WRANGELL
29991 rows × 4 columns
In [973]:
counties = []
error = []
for i in xrange(df3.shape[0]):
[city,state] = df3.iloc[i][['city','state']]
county = df_counties_u['County'][(df_counties_u['City'] == city) & (df_counties_u['State full'] == state)]
if len(county.values) != 0:
counties.append(county.values[0])
else:
counties.append(None)
In [977]:
#trip table: user_id, trip_id, road_trip_or_city_trip, target_city, target_state, trip_history, number_trips_done,
# number_days, travel_with_kids, first_day_full, last_day_full
#trip detail table: trip_id, user_id, day_number, poi_id, visit_order
#open hours table:
print len(counties), counties[1100:1110]
5752 ['NUECES', 'NUECES', 'NUECES', 'NUECES', 'NUECES', 'NUECES', 'NUECES', 'NUECES', 'NUECES', 'NUECES']
In [980]:
df3['county'] = counties
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
if __name__ == '__main__':
In [1015]:
df3.to_csv('step6_poi.csv')
In [1012]:
df4 = cold_start(location)
In [1013]:
def theme_park_list(path):
baseurl = '/Users/zoesh/Desktop/travel_with_friends/List of amusement parks in the Americas - Wikipedia.htm'
r = requests.get(baseurl,headers=headers)
s = BS(r.text, 'html.parser')
s.find('div', attrs={"id": "content"})
Out[1013]:
google_time_spent_txt
type
name
city
state
coord0
coord1
poi_rank
img_url
rating
...
fee
visit_length
tag
google_normal_min
google_fast_min
tripadvisor_fast_min
tripadvisor_normal_min
adjusted_normal_time_spent
adjusted_fast_time_spent
county
152
2 hours
Feature
Balboa Park
San Diego
California
-117.149728
32.731555
1
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
More than 3 hours
Playgrounds
120.0
60.0
180
300
120.0
60.0
SAN DIEGO
153
None
Feature
La Jolla
San Diego
California
-117.278276
32.846365
2
http://mw2.google.com/mw-panoramio/photos/smal...
-999.0
...
-999
-999
-999
None
None
15
15
15
15
SAN DIEGO
154
None
Feature
Hotel del Coronado
San Diego
California
-117.178596
32.680242
3
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
155
None
Feature
Sea World
San Diego
California
-117.226970
32.765364
4
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
156
None
Feature
San Diego
San Diego
California
-117.170680
32.699440
5
http://mw2.google.com/mw-panoramio/photos/smal...
-999.0
...
-999
-999
-999
None
None
15
15
15
15
SAN DIEGO
157
None
Feature
San Diego Zoo
San Diego
California
-117.149702
32.735282
6
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
Yes
Yes
Outdoor Activities
None
None
90
120
120
90
SAN DIEGO
158
None
Feature
Old Town
San Diego
California
-117.196580
32.754163
7
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
2-3 hours
Historic Walking Areas
None
None
120.0
180.0
180.0
120.0
SAN DIEGO
159
None
Feature
USS Midway
San Diego
California
-117.175094
32.713822
8
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
Yes
More than 3 hours
Specialty Museums
None
None
180
300
300
180
SAN DIEGO
160
None
Feature
Petco Park
San Diego
California
-117.156938
32.707109
9
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Arenas & Stadiums
None
None
30
60
60
30
SAN DIEGO
161
1.5 hours
Feature
Seaport Village
San Diego
California
-117.171186
32.708965
10
http://mw2.google.com/mw-panoramio/photos/smal...
4.0
...
No
More than 3 hours
Piers & Boardwalks
90.0
45.0
180
300
90.0
45.0
SAN DIEGO
162
None
Feature
La Jolla Cove
San Diego
California
-117.272994
32.850665
11
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
More than 3 hours
Beaches
None
None
180
300
300
180
SAN DIEGO
163
None
Feature
Panda
San Diego
California
-117.150898
32.735315
12
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
164
2 hours
Feature
Museum of Man
San Diego
California
-117.152357
32.731605
13
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
120.0
60.0
None
None
120.0
60.0
SAN DIEGO
165
None
Feature
Pacific Beach
San Diego
California
-117.257539
32.796008
14
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Beaches
None
None
15
30
30
15
SAN DIEGO
166
None
Feature
Point Loma Lighthouse
San Diego
California
-117.240870
32.671992
15
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Lighthouses
None
None
15
15
15
15
SAN DIEGO
167
None
Feature
Star of India
San Diego
California
-117.173470
32.720229
16
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
168
None
Feature
Mount Soledad
San Diego
California
-117.244705
32.839837
17
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Historic Sites
None
None
15
15
15
15
SAN DIEGO
169
None
Feature
Coronado Beach
San Diego
California
-117.179681
32.679496
18
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
170
None
Feature
Comic-Con
San Diego
California
-117.161231
32.706330
19
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
171
None
Feature
San Diego Convention Center
San Diego
California
-117.161380
32.706673
20
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Conference & Convention Centers
None
None
15
15
15
15
SAN DIEGO
172
None
Feature
Flamingos
San Diego
California
-117.149417
32.735459
21
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
1330
None
Feature
Thick-billed Kingbird
Chula Vista
California
-117.041650
32.593981
1
None
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
1331
None
Feature
Lesser Sand-Plover
Chula Vista
California
-117.119820
32.590290
2
None
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
1332
1 hour
Feature
Chula Vista Nature Center
Chula Vista
California
-117.110518
32.640318
3
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
60.0
30.0
None
None
60.0
30.0
SAN DIEGO
1333
25 min to 1.5 hr
Feature
Otay Ranch Town Center
Chula Vista
California
-116.967419
32.624007
4
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Shopping Malls
90.0
30
15
15
90.0
30
SAN DIEGO
2093
None
Feature
Oceanside
Oceanside
California
-117.385075
33.193866
1
http://mw2.google.com/mw-panoramio/photos/smal...
-999.0
...
-999
-999
-999
None
None
15
15
15
15
SAN DIEGO
2094
30 min
Feature
Oceanside Pier
Oceanside
California
-117.384671
33.194037
2
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Piers & Boardwalks
30
30
15
15
30
30
SAN DIEGO
2095
None
Feature
Pier
Oceanside
California
-117.384870
33.193954
3
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Piers & Boardwalks
None
None
15
15
15
15
SAN DIEGO
2096
None
Feature
Mission San Luis Rey
Oceanside
California
-117.319211
33.232132
4
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
1-2 hours
Specialty Museums
None
None
60.0
120.0
120.0
60.0
SAN DIEGO
2097
None
Feature
Oceanside Harbor
Oceanside
California
-117.389733
33.204974
5
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
2276
None
Feature
California Condor
Escondido
California
-116.995868
33.102222
13
https://farm9.staticflickr.com/8465/8122887268...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
2277
None
Feature
Kit Carson Park
Escondido
California
-117.061602
33.080622
14
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
1-2 hours
Gardens
None
None
60.0
120.0
120.0
60.0
SAN DIEGO
2278
None
Feature
Queen Califia's Magical Circle
Escondido
California
-117.062871
33.080204
15
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Monuments & Statues
None
None
15
15
15
15
SAN DIEGO
2279
None
Feature
Condor Ridge
Escondido
California
-116.995902
33.102096
16
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
2280
None
Feature
Butterfly Jungle
Escondido
California
-116.999676
33.098932
17
None
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
2281
None
Feature
Orfila Vineyards
Escondido
California
-117.043073
33.071040
18
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Wineries & Vineyards
None
None
15
15
15
15
SAN DIEGO
2282
None
Feature
Grape Day Park
Escondido
California
-117.083499
33.124137
19
http://mw2.google.com/mw-panoramio/photos/smal...
3.0
...
No
15 min
Nature & Parks
None
None
30
60
60
30
SAN DIEGO
2283
None
Feature
Butterflies
Escondido
California
-116.999979
33.098196
20
None
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
2875
None
Feature
Legoland
Carlsbad
California
-117.311494
33.127247
1
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
2876
45 min
Feature
Carlsbad Flower Fields
Carlsbad
California
-117.317765
33.124080
2
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Gardens
45
30
15
15
45
30
SAN DIEGO
2877
None
Feature
Encinitas
Carlsbad
California
-117.305701
33.066211
3
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
2878
1.5 hours
Feature
Mount Rushmore
Carlsbad
California
-117.311868
33.127876
4
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
90.0
45.0
None
None
90.0
45.0
SAN DIEGO
2879
45 min to 2 hr
Feature
Carlsbad Premium Outlets
Carlsbad
California
-117.321121
33.126488
5
http://mw2.google.com/mw-panoramio/photos/smal...
4.0
...
No
2-3 hours
Factory Outlets
120.0
45.0
120.0
180.0
120.0
45.0
SAN DIEGO
2880
None
Feature
DC in Lego
Carlsbad
California
-117.311639
33.127933
6
https://farm9.staticflickr.com/8497/8292356872...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
3491
None
Feature
Stone
San Marcos
California
-117.119734
33.116416
1
None
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
3492
None
Feature
Stone Brewery
San Marcos
California
-117.119966
33.116212
2
https://farm9.staticflickr.com/8265/8607768407...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
4398
1.5 hours
Feature
Moonlight Beach
Encinitas
California
-117.296921
33.047770
1
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Beaches
90.0
45.0
15
30
90.0
45.0
SAN DIEGO
4399
2.5 hours
Feature
San Diego Botanic Garden
Encinitas
California
-117.280653
33.052943
2
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Gardens
150.0
75.0
15
15
150.0
75.0
SAN DIEGO
4400
None
Feature
Swamis
Encinitas
California
-117.292231
33.034657
3
None
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
4401
None
Feature
Encinitas
Encinitas
California
-117.305701
33.066211
4
http://mw2.google.com/mw-panoramio/photos/smal...
-999.0
...
-999
-999
-999
None
None
15
15
15
15
SAN DIEGO
4402
None
Feature
D Street
Encinitas
California
-117.296456
33.045717
5
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
4403
None
Feature
Swami's Beach
Encinitas
California
-117.294152
33.035504
6
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Beaches
None
None
15
30
30
15
SAN DIEGO
4404
None
Feature
Swami's Garden
Encinitas
California
-117.293585
33.035805
7
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
4483
1 hour
Feature
Chula Vista Nature Center
National City
California
-117.110518
32.640318
1
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
60.0
30.0
None
None
60.0
30.0
SAN DIEGO
4549
None
Feature
Mt. Helix
La Mesa
California
-116.983382
32.767076
1
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
4550
None
Feature
Lake Murray
La Mesa
California
-117.040921
32.786321
2
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Bodies of Water
None
None
15
15
15
15
SAN DIEGO
4635
None
Feature
Santee Lakes
Santee
California
-117.007609
32.859233
1
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Bodies of Water
None
None
15
15
15
15
SAN DIEGO
4956
None
Feature
Lake Poway
Poway
California
-117.009919
33.005854
1
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
4957
None
Feature
Mt. Woodson
Poway
California
-116.973133
33.009056
2
http://mw2.google.com/mw-panoramio/photos/smal...
NaN
...
None
None
None
None
None
None
None
15
15
SAN DIEGO
4958
None
Feature
Potato Chip Rock
Poway
California
-116.974187
33.009181
3
http://mw2.google.com/mw-panoramio/photos/smal...
4.5
...
No
15 min
Geologic Formations
None
None
15
15
15
15
SAN DIEGO
77 rows × 22 columns
In [1153]:
baseurl = '/Users/zoesh/Desktop/travel_with_friends/List of amusement parks in the Americas - Wikipedia.htm'
import codecs
f=codecs.open(baseurl, 'r', 'utf-8')
# document= BeautifulSoup(f.read()).get_text()
# r = requests.get(baseurl,headers=headers)
s = BS(f.read())
#from ul 24 to 85, 34 is san diego
theme_parks = []
for ix in xrange(24,86):
for i in s.find('div', attrs={"id": "mw-content-text"}).find_all('ul')[ix].find_all('a'):
if (',_' not in i.attrs['href']) or ('#' in i.attrs['href']):
if i.text not in df_counties_u.City.values:
theme_parks.append(i.text.lower())
In [1194]:
df3.adjusted_normal_time_spent = df3.adjusted_normal_time_spent.astype(float)
df3_name_city = df3.name.str.lower() + ' ' + df3.city.str.lower()
df3_name_city2 = df3.name.str.replace(' ', '').str.lower() + ' ' + df3.city.str.lower()
theme_park = [(i.lower() in theme_parks) or (i.lower().replace(' ', '') in theme_parks) for i in df3.name.values ]
theme_park2 = [(i.lower() in theme_parks) for i in df3_name_city2.values]
In [1217]:
theme_park_idx = df3[theme_park].append(df3[theme_park2]).index
df3['theme_park'] = [(i in theme_park_idx) for i in df3.index]
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:3: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
app.launch_new_instance()
In [1220]:
df3.to_csv('step7_poi.csv')
In [1315]:
df5 = df3.reset_index(drop=True)
for i in xrange(df5.shape[0]):
if (df5.google_normal_min[i] == 'None') and (df5.tripadvisor_normal_min[i] == 'None'):
if df5.theme_park[i] == True:
df5.adjusted_fast_time_spent[i] = 3*60
df5.adjusted_normal_time_spent[i] = 5*60
elif df5.name[i] == 'Legoland':
df5.adjusted_fast_time_spent[i] = 3*60
df5.adjusted_normal_time_spent[i] = 5*60
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:5: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:6: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:8: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:9: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
In [1316]:
museums = [('moma' in i.lower()) or ('museum' in i.lower()) for i in df5.name.values]
stadiums =[('stadium' in i.lower()) for i in df5.tag.values]
df5['museum'] = museums
df5['stadium'] = stadiums
In [1317]:
df5.to_csv('step8_poi.csv')
In [1341]:
#first day and last day full day or half day: only poi with time 1 hr or less for half day
#full day with two >=2hr to <=3hr big poi,max 5 total or one >=4 hr big poi along with some small poi <= 1hr, max 4 total or 8 hrs total
#half day max 4 total and max 4 hrs
df6 = df5[df5.name != df5.city]
In [ ]:
pd.read_csv('step9_poi.csv', index_col=0)
In [2671]:
location = 'San Diego, California'
number_days = 3
first_day_full = True
last_day_full = True
def cold_start_places(df6, df_counties_u,location, number_days, first_day_full =True, last_day_full =True):
[city,state] = location.split(', ')
county = df_counties_u['County'][(df_counties_u['City'] == city) & (df_counties_u['State full'] == state)]
if len(county.values) != 0:
county = county.values[0]
temp_df = df6[(df6['county'] == county) & (df6['state'] == state)]
else:
temp_df = df6[(df6['city'] == city) & (df6['state'] == state)]
big_events = temp_df[temp_df.adjusted_normal_time_spent > 180]
med_events = temp_df[(temp_df.adjusted_normal_time_spent >= 120) &(temp_df.adjusted_normal_time_spent <= 180)]
small_events = temp_df[temp_df.adjusted_normal_time_spent < 120]
return county, big_events,med_events, small_events,temp_df
def default_cold_start_places(df6,df_counties_u, day_trip_locations,full_trip_table,df_poi_travel_info,number_days = [1,2,3,4,5]):
df_c = df_counties_u.groupby(['State full','County']).count().reset_index()
for state, county,_,_ in df_c.values[105:150]:
temp_df = df6[(df6['county'] == county) & (df6['state'] == state)]
if temp_df.shape[0]!=0:
if sum(temp_df.adjusted_normal_time_spent) < 360:
number_days = [1]
elif sum(temp_df.adjusted_normal_time_spent) < 720:
number_days = [1,2]
big_events = temp_df[temp_df.adjusted_normal_time_spent > 180]
med_events = temp_df[(temp_df.adjusted_normal_time_spent>= 120)&(temp_df.adjusted_normal_time_spent<=180)]
small_events = temp_df[temp_df.adjusted_normal_time_spent < 120]
for i in number_days:
n_days = i
full_trip_table, day_trip_locations, new_trip_df1, df_poi_travel_info = \
default_search_cluster_events(df6, df_counties_u, county, state, big_events,med_events, \
small_events, temp_df, n_days,day_trip_locations, full_trip_table,\
df_poi_travel_info)
print county, state
print full_trip_table.shape, len(day_trip_locations), new_trip_df1.shape, df_poi_travel_info.shape
return None
day_trip_locations = pd.DataFrame(columns =['trip_locations_id','full_day', 'default', 'county', 'state','details', 'event_type'])
full_trip_table = pd.DataFrame(columns =['user_id', 'full_trip_id', 'trip_location_ids', 'default', 'county', 'state', 'details', 'n_days'])
df_poi_travel_info = pd.DataFrame(columns =['id_','orig_name','orig_idx','dest_name','dest_idx','orig_coord0','orig_coord1',\
'dest_coord0','dest_coord1','orig_coords','dest_coords','google_driving_url',\
'google_walking_url','driving_result','walking_result','google_driving_time',\
'google_walking_time'])
def default_search_cluster_events(df6, df_counties_u, county, state, big,med, small, \
temp, n_days,day_trip_locations, full_trip_table,df_poi_travel_info):
# df_poi_travel_info = pd.DataFrame(columns =['id_','orig_name','orig_idx','dest_name','dest_idx','orig_coord0','orig_coord1',\
# 'dest_coord0','dest_coord1','orig_coords','dest_coords','google_driving_url',\
# 'google_walking_url','driving_result','walking_result','google_driving_time',\
# 'google_walking_time'])
poi_coords = temp[['coord0','coord1']]
kmeans = KMeans(n_clusters=n_days, random_state=0).fit(poi_coords)
# print kmeans.labels_
full_trip_id = '-'.join([str(state.upper()), str(county.upper().replace(' ','-')),str(int(default)), str(n_days)])
trip_location_ids = []
full_trip_details = []
for i in range(n_days):
current_events = []
big_ix = []
small_ix = []
med_ix = []
for ix, label in enumerate(kmeans.labels_):
if label == i:
event_ix = poi_coords.index[ix]
current_events.append(event_ix)
if event_ix in big.index:
big_ix.append(event_ix)
elif event_ix in med.index:
med_ix.append(event_ix)
else:
small_ix.append(event_ix)
all_big = big.sort_values(['poi_rank', 'rating'], ascending=[True, False])
big_ = big.loc[big_ix].sort_values(['poi_rank', 'rating'], ascending=[True, False])
small_ = small.loc[small_ix].sort_values(['poi_rank', 'rating'], ascending=[True, False])
medium_ = med.loc[med_ix].sort_values(['poi_rank', 'rating'], ascending=[True, False])
trip_df, event_type = create_trip_df(big_,medium_,small_)
tour = trip_df_cloest_distance(trip_df, event_type)
new_tour, new_trip_df, df_poi_travel_time = google_driving_walking_time(tour,trip_df,event_type)
new_trip_df = new_trip_df.iloc[new_tour]
new_trip_df1,new_df_poi_travel_time,total_time = remove_extra_events(new_trip_df, df_poi_travel_time)
new_trip_df1['address'] = df_addresses(new_trip_df1, new_df_poi_travel_time)
values = day_trip(new_trip_df1, county, state, default, full_day,n_days,i)
day_trip_locations.loc[len(day_trip_locations)] = values
trip_location_ids.append(values[0])
full_trip_details.extend(values[-1])
# print 'trave time df \n',new_df_poi_travel_time
df_poi_travel_info = df_poi_travel_info.append(new_df_poi_travel_time)
full_trip_id = '-'.join([str(state.upper()), str(county.upper().replace(' ','-')),str(int(default)), str(n_days)])
details = extend_full_trip_details(full_trip_details)
full_trip_table.loc[len(full_trip_table)] = [user_id, full_trip_id, \
str(trip_location_ids), default, county, state, details, n_days]
return full_trip_table, day_trip_locations, new_trip_df1, df_poi_travel_info
In [2672]:
df_counties_u.groupby(['State full','County']).count().reset_index()[100:120]
Out[2672]:
State full
County
City
State short
100
Arizona
GILA
12
12
101
Arizona
GRAHAM
8
8
102
Arizona
GREENLEE
4
4
103
Arizona
LA PAZ
8
8
104
Arizona
MARICOPA
42
42
105
Arizona
MOHAVE
21
21
106
Arizona
NAVAJO
28
28
107
Arizona
PIMA
16
16
108
Arizona
PINAL
20
20
109
Arizona
SANTA CRUZ
8
8
110
Arizona
YAVAPAI
24
24
111
Arizona
YUMA
9
9
112
Arkansas
ARKANSAS
9
9
113
Arkansas
ASHLEY
7
7
114
Arkansas
BAXTER
10
10
115
Arkansas
BENTON
17
17
116
Arkansas
BOONE
8
8
117
Arkansas
BRADLEY
4
4
118
Arkansas
CALHOUN
3
3
119
Arkansas
CARROLL
5
5
In [2674]:
default_cold_start_places(df6,df_counties_u,day_trip_locations,full_trip_table,df_poi_travel_info,number_days = [1,2,3,4,5])
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-2674-2d85be664ad5> in <module>()
----> 1 default_cold_start_places(df6,df_counties_u,day_trip_locations,full_trip_table,df_poi_travel_info,number_days = [1,2,3,4,5])
<ipython-input-2671-17b08be41360> in default_cold_start_places(df6, df_counties_u, day_trip_locations, full_trip_table, df_poi_travel_info, number_days)
31 for i in number_days:
32 n_days = i
---> 33 full_trip_table, day_trip_locations, new_trip_df1, df_poi_travel_info = default_search_cluster_events(df6, df_counties_u, county, state, big_events,med_events, small_events, temp_df, n_days,day_trip_locations, full_trip_table, df_poi_travel_info)
34 print county, state
35 print full_trip_table.shape, len(day_trip_locations), new_trip_df1.shape, df_poi_travel_info.shape
<ipython-input-2671-17b08be41360> in default_search_cluster_events(df6, df_counties_u, county, state, big, med, small, temp, n_days, day_trip_locations, full_trip_table, df_poi_travel_info)
70 trip_df, event_type = create_trip_df(big_,medium_,small_)
71 tour = trip_df_cloest_distance(trip_df, event_type)
---> 72 new_tour, new_trip_df, df_poi_travel_time = google_driving_walking_time(tour,trip_df,event_type)
73 new_trip_df = new_trip_df.iloc[new_tour]
74 new_trip_df1,new_df_poi_travel_time,total_time = remove_extra_events(new_trip_df, df_poi_travel_time)
<ipython-input-2661-c3112ab4c4b4> in google_driving_walking_time(tour, trip_df, event_type)
26 driving_result= simplejson.load(urllib.urlopen(google_driving_url))
27
---> 28 if walking_result['rows'][0]['elements'][0]['status'] == 'ZERO_RESULTS':
29 google_walking_url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins={0}&destinations={1}&mode=walking&language=en-EN&sensor=false&key={2}". format(orig_name.replace(' ','+').replace('-','+'),dest_name.replace(' ','+').replace('-','+'),my_key)
30 walking_result= simplejson.load(urllib.urlopen(google_walking_url))
IndexError: list index out of range
In [2570]:
# for _,_,state,county in df_counties_u[100:200].values:
# print state,county
for state, county,_,_ in df_c.values[100:200]:
temp_df = df6[(df6['county'] == county) & (df6['state'] == state)]
# print temp_df
if temp_df.shape[0]!=0:
print temp_df.city
print sum(temp_df.adjusted_normal_time_spent)
df6[(df6['county'] == county) & (df6['state'] == state)]
105 Phoenix
106 Phoenix
107 Phoenix
108 Phoenix
109 Phoenix
110 Phoenix
111 Phoenix
112 Phoenix
113 Phoenix
114 Phoenix
115 Phoenix
116 Phoenix
117 Phoenix
118 Phoenix
119 Phoenix
120 Phoenix
121 Phoenix
122 Phoenix
123 Phoenix
124 Phoenix
125 Phoenix
730 Mesa
731 Mesa
732 Mesa
733 Mesa
734 Mesa
735 Mesa
736 Mesa
737 Mesa
738 Mesa
...
1594 Scottsdale
1595 Scottsdale
1596 Scottsdale
2115 Tempe
2116 Tempe
2117 Tempe
2118 Tempe
2119 Tempe
2120 Tempe
2121 Tempe
2122 Tempe
2123 Tempe
2124 Tempe
2125 Tempe
2126 Tempe
2127 Tempe
2128 Tempe
2129 Tempe
2130 Tempe
2131 Tempe
2132 Tempe
2133 Tempe
2134 Tempe
2135 Tempe
2165 Peoria
3764 Avondale
3765 Avondale
3984 Goodyear
3985 Goodyear
4609 Buckeye
Name: city, dtype: object
4665.0
4762 Lake Havasu City
4763 Lake Havasu City
5632 Bullhead City
5633 Bullhead City
5634 Bullhead City
5635 Bullhead City
Name: city, dtype: object
90.0
639 Tucson
640 Tucson
641 Tucson
642 Tucson
643 Tucson
644 Tucson
645 Tucson
646 Tucson
647 Tucson
648 Tucson
649 Tucson
650 Tucson
651 Tucson
652 Tucson
653 Tucson
654 Tucson
655 Tucson
656 Tucson
657 Tucson
658 Tucson
659 Tucson
Name: city, dtype: object
630.0
5189 Maricopa
5190 Maricopa
5191 Maricopa
5192 Maricopa
5193 Maricopa
5194 Maricopa
5195 Maricopa
5196 Maricopa
5197 Maricopa
5198 Maricopa
5199 Maricopa
5200 Maricopa
5201 Maricopa
5202 Maricopa
5203 Maricopa
5204 Maricopa
5205 Maricopa
5206 Maricopa
5207 Maricopa
5208 Maricopa
5209 Maricopa
5739 Apache Junction
Name: city, dtype: object
960.0
5517 Prescott
5519 Prescott
5520 Prescott
5521 Prescott
5522 Prescott
5523 Prescott
5524 Prescott
Name: city, dtype: object
195.0
3372 Yuma
Name: city, dtype: object
15.0
4468 Rogers
4469 Rogers
4470 Rogers
4471 Rogers
4472 Rogers
4473 Rogers
4474 Rogers
5546 Bentonville
5548 Bentonville
5549 Bentonville
5550 Bentonville
5551 Bentonville
5552 Bentonville
Name: city, dtype: object
465.0
3999 Jonesboro
Name: city, dtype: object
15.0
1846 Little Rock
1847 Little Rock
1848 Little Rock
1850 Little Rock
1851 Little Rock
1852 Little Rock
1853 Little Rock
1854 Little Rock
1855 Little Rock
1856 Little Rock
1857 Little Rock
1858 Little Rock
1859 Little Rock
1860 Little Rock
1861 Little Rock
1862 Little Rock
1863 Little Rock
1864 Little Rock
1865 Little Rock
4201 North Little Rock
4202 North Little Rock
4203 North Little Rock
4204 North Little Rock
4205 North Little Rock
4206 North Little Rock
4207 North Little Rock
4208 North Little Rock
4209 North Little Rock
4210 North Little Rock
4211 North Little Rock
4212 North Little Rock
4213 North Little Rock
4214 North Little Rock
4215 North Little Rock
4216 North Little Rock
4217 North Little Rock
4218 North Little Rock
4219 North Little Rock
4220 North Little Rock
Name: city, dtype: object
1725.0
3528 Fort Smith
3529 Fort Smith
3530 Fort Smith
3531 Fort Smith
3532 Fort Smith
Name: city, dtype: object
165.0
3759 Fayetteville
3760 Fayetteville
3761 Fayetteville
3926 Springdale
3927 Springdale
Name: city, dtype: object
120.0
860 Oakland
861 Oakland
862 Oakland
863 Oakland
864 Oakland
865 Oakland
866 Oakland
867 Oakland
868 Oakland
869 Oakland
870 Oakland
871 Oakland
872 Oakland
873 Oakland
874 Oakland
875 Oakland
876 Oakland
877 Oakland
878 Oakland
879 Oakland
880 Oakland
1599 Fremont
1600 Fremont
1601 Fremont
1602 Fremont
1603 Fremont
1604 Fremont
1605 Fremont
1606 Fremont
1607 Fremont
...
2787 Berkeley
2788 Berkeley
3518 San Leandro
3616 Livermore
3863 Alameda
3864 Alameda
3865 Alameda
3866 Alameda
3867 Alameda
3868 Alameda
3869 Alameda
3870 Alameda
3871 Alameda
3872 Alameda
3873 Alameda
3874 Alameda
3875 Alameda
3876 Alameda
3877 Alameda
3878 Alameda
3879 Alameda
3880 Alameda
3881 Alameda
3882 Alameda
3883 Alameda
3954 Pleasanton
3991 Union City
3992 Union City
3993 Union City
5255 Newark
Name: city, dtype: object
3075.0
3500 Chico
3501 Chico
3502 Chico
3503 Chico
Name: city, dtype: object
210.0
2633 Concord
2926 Richmond
2927 Richmond
2928 Richmond
2929 Richmond
2930 Richmond
2931 Richmond
2932 Richmond
2933 Richmond
2934 Richmond
2935 Richmond
2936 Richmond
2937 Richmond
2938 Richmond
2939 Richmond
2940 Richmond
2941 Richmond
2942 Richmond
2943 Richmond
2944 Richmond
2966 Antioch
4129 Walnut Creek
4130 Walnut Creek
4147 Pittsburg
5321 Danville
5733 Martinez
5734 Martinez
5735 Martinez
Name: city, dtype: object
720.0
660 Fresno
661 Fresno
662 Fresno
663 Fresno
664 Fresno
665 Fresno
666 Fresno
Name: city, dtype: object
585.0
Out[2570]:
google_time_spent_txt
type
name
city
state
coord0
coord1
poi_rank
img_url
rating
...
google_normal_min
google_fast_min
tripadvisor_fast_min
tripadvisor_normal_min
adjusted_normal_time_spent
adjusted_fast_time_spent
county
theme_park
museum
stadium
0 rows × 25 columns
In [2104]:
df6.to_csv('step9_poi.csv')
In [2105]:
county, big, med, small, temp = cold_start_places(location, n_days, True,True)
In [3190]:
'''
Most important event that will call all the functions and return the day details for the trip
'''
from sklearn.cluster import KMeans
day_trip_locations = pd.DataFrame(columns =['trip_locations_id','full_day', 'default', 'county', 'state','details','event_type'])
full_trip_table = pd.DataFrame(columns =['user_id', 'full_trip_id', 'trip_location_ids', 'default', 'county', 'state', 'details', 'n_days'])
def search_cluster_events(df6, df_counties_u, location, n_days,day_trip_locations, full_trip_table):
df_poi_travel_info = pd.DataFrame(columns =['id_','orig_name','orig_idx','dest_name','dest_idx','orig_coord0','orig_coord1',\
'dest_coord0','dest_coord1','orig_coords','dest_coords','google_driving_url',\
'google_walking_url','driving_result','walking_result','google_driving_time',\
'google_walking_time'])
county, big, med, small, temp = cold_start_places(df6, df_counties_u, location, n_days, True,True)
location = 'San Diego, California'
n_days = 3
default = True
city = location.split(', ')[0]
state = location.split(', ')[1]
poi_coords = temp[['coord0','coord1']]
kmeans = KMeans(n_clusters=n_days, random_state=0).fit(poi_coords)
print kmeans.labels_
full_trip_id = '-'.join([str(state.upper()), str(county.upper().replace(' ','-')),str(int(default)), str(n_days)])
trip_location_ids = []
full_trip_details = []
for i in range(n_days):
current_events = []
big_ix = []
small_ix = []
med_ix = []
for ix, label in enumerate(kmeans.labels_):
if label == i:
event_ix = poi_coords.index[ix]
current_events.append(event_ix)
if event_ix in big.index:
big_ix.append(event_ix)
elif event_ix in med.index:
med_ix.append(event_ix)
else:
small_ix.append(event_ix)
all_big = big.sort_values(['poi_rank', 'rating'], ascending=[True, False])
big_ = big.loc[big_ix].sort_values(['poi_rank', 'rating'], ascending=[True, False])
small_ = small.loc[small_ix].sort_values(['poi_rank', 'rating'], ascending=[True, False])
medium_ = med.loc[med_ix].sort_values(['poi_rank', 'rating'], ascending=[True, False])
# print 'big:', big_, 'small:', small_, 'msize:', medium_
trip_df, event_type = create_trip_df(big_,medium_,small_)
# print event_type
tour = trip_df_cloest_distance(trip_df, event_type)
# print tour
new_tour, new_trip_df, df_poi_travel_time = google_driving_walking_time(tour,trip_df,event_type)
# print new_tour, new_trip_df
# return new_trip_df, df_poi_travel_time
new_trip_df = new_trip_df.iloc[new_tour]
new_trip_df1,new_df_poi_travel_time,total_time = remove_extra_events(new_trip_df, df_poi_travel_time)
# print new_trip_df1
# print new_df_poi_travel_time
new_trip_df1['address'] = df_addresses(new_trip_df1, new_df_poi_travel_time)
# print 'total time:', total_ti
values = day_trip(new_trip_df1, county, state, default, full_day,n_days,i)
values.append('event_type')
day_trip_locations.loc[len(day_trip_locations)] = values
trip_location_ids.append(values[0])
full_trip_details.extend(values[5])
df_poi_travel_info = df_poi_travel_info.append(new_df_poi_travel_time)
full_trip_id = '-'.join([str(state.upper()), str(county.upper().replace(' ','-')),str(int(default)), str(n_days)])
details = extend_full_trip_details(full_trip_details)
full_trip_table.loc[len(full_trip_table)] = [user_id, full_trip_id, str(trip_location_ids), default, county, state, details, n_days]
return full_trip_table, day_trip_locations, new_trip_df1, df_poi_travel_info
In [3191]:
search_cluster_events(df6, df_counties_u, location, n_days,day_trip_locations, full_trip_table)
[2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 2 2 2 2 0 0 0]
id_ orig_name orig_idx dest_name \
0 225900002260 San Diego Zoo Safari Park 2259.0 Meerkat
1 226000003486 Meerkat 2260.0 Stone
2 348600003487 Stone 3486.0 Stone Brewery
3 348700004951 Stone Brewery 3487.0 Lake Poway
4 495100004953 Lake Poway 4951.0 Potato Chip Rock
5 495300004952 Potato Chip Rock 4953.0 Mt. Woodson
dest_idx orig_coord0 orig_coord1 dest_coord0 dest_coord1 \
0 2260.0 -117.000133 33.098961 -116.999868 33.099392
1 3486.0 -116.999868 33.099392 -117.119734 33.116416
2 3487.0 -117.119734 33.116416 -117.119966 33.116212
3 4951.0 -117.119966 33.116212 -117.009919 33.005854
4 4953.0 -117.009919 33.005854 -116.974187 33.009181
5 4952.0 -116.974187 33.009181 -116.973133 33.009056
orig_coords dest_coords \
0 33.0989612714,-117.000132992 33.0993917904,-116.999867776
1 33.0993917904,-116.999867776 33.1164156674,-117.119734333
2 33.1164156674,-117.119734333 33.1162121945,-117.119966167
3 33.1162121945,-117.119966167 33.0058541256,-117.009919223
4 33.0058541256,-117.009919223 33.0091805065,-116.97418726
5 33.0091805065,-116.97418726 33.0090558461,-116.973133362
google_driving_url \
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
4 https://maps.googleapis.com/maps/api/distancem...
5 https://maps.googleapis.com/maps/api/distancem...
google_walking_url \
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
4 https://maps.googleapis.com/maps/api/distancem...
5 https://maps.googleapis.com/maps/api/distancem...
driving_result \
0 {'status': 'OK', 'rows': [{'elements': [{'dura...
1 {'status': 'OK', 'rows': [{'elements': [{'dura...
2 {'status': 'OK', 'rows': [{'elements': [{'dura...
3 {'status': 'OK', 'rows': [{'elements': [{'dura...
4 {'status': 'OK', 'rows': [{'elements': [{'dura...
5 {'status': 'OK', 'rows': [{'elements': [{'dura...
walking_result google_driving_time \
0 {'status': 'OK', 'rows': [{'elements': [{'dura... 3.0
1 {'status': 'OK', 'rows': [{'elements': [{'dura... 25.0
2 {'status': 'OK', 'rows': [{'elements': [{'dura... 0.0
3 {'status': 'OK', 'rows': [{'elements': [{'dura... 25.0
4 {'status': 'OK', 'rows': [{'elements': [{'dura... 25.0
5 {'status': 'OK', 'rows': [{'elements': [{'dura... 0.0
google_walking_time
0 7.0
1 193.0
2 0.0
3 268.0
4 99.0
5 1.0
id_ orig_name orig_idx dest_name \
0 287000002871 Legoland 2870.0 Carlsbad Flower Fields
1 287100002089 Carlsbad Flower Fields 2871.0 Oceanside Pier
2 208900002090 Oceanside Pier 2089.0 Pier
3 209000002872 Pier 2090.0 Encinitas
dest_idx orig_coord0 orig_coord1 dest_coord0 dest_coord1 \
0 2871.0 -117.311494 33.127247 -117.317765 33.124080
1 2089.0 -117.317765 33.124080 -117.384671 33.194037
2 2090.0 -117.384671 33.194037 -117.384870 33.193954
3 2872.0 -117.384870 33.193954 -117.305701 33.066211
orig_coords dest_coords \
0 33.1272465294,-117.31149401 33.1240797535,-117.317765251
1 33.1240797535,-117.317765251 33.1940372963,-117.384670988
2 33.1940372963,-117.384670988 33.1939537368,-117.384869599
3 33.1939537368,-117.384869599 33.0662106372,-117.305700994
google_driving_url \
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
google_walking_url \
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
driving_result \
0 {'status': 'OK', 'rows': [{'elements': [{'dura...
1 {'status': 'OK', 'rows': [{'elements': [{'dura...
2 {'status': 'OK', 'rows': [{'elements': [{'dura...
3 {'status': 'OK', 'rows': [{'elements': [{'dura...
walking_result google_driving_time \
0 {'status': 'OK', 'rows': [{'elements': [{'dura... 6.0
1 {'status': 'OK', 'rows': [{'elements': [{'dura... 14.0
2 {'status': 'OK', 'rows': [{'elements': [{'dura... 4.0
3 {'status': 'OK', 'rows': [{'elements': [{'dura... 20.0
google_walking_time
0 34.0
1 138.0
2 0.0
3 210.0
id_ orig_name orig_idx dest_name \
0 1470000152 Balboa Park 147.0 San Diego Zoo
1 1520000148 San Diego Zoo 152.0 La Jolla
2 14800004630 La Jolla 148.0 Santee Lakes
3 463000004545 Santee Lakes 4630.0 Lake Murray
4 454500004544 Lake Murray 4545.0 Mt. Helix
5 454400001325 Mt. Helix 4544.0 Thick-billed Kingbird
6 132500001326 Thick-billed Kingbird 1325.0 Lesser Sand-Plover
dest_idx orig_coord0 orig_coord1 dest_coord0 dest_coord1 \
0 152.0 -117.149728 32.731555 -117.149702 32.735282
1 148.0 -117.149702 32.735282 -117.278276 32.846365
2 4630.0 -117.278276 32.846365 -117.007609 32.859233
3 4545.0 -117.007609 32.859233 -117.040921 32.786321
4 4544.0 -117.040921 32.786321 -116.983382 32.767076
5 1325.0 -116.983382 32.767076 -117.041650 32.593981
6 1326.0 -117.041650 32.593981 -117.119820 32.590290
orig_coords dest_coords \
0 32.7315550071,-117.149728475 32.7352824821,-117.149702137
1 32.7352824821,-117.149702137 32.8463650161,-117.278276206
2 32.8463650161,-117.278276206 32.8592330195,-117.007609184
3 32.8592330195,-117.007609184 32.7863213707,-117.040921149
4 32.7863213707,-117.040921149 32.7670760417,-116.983381925
5 32.7670760417,-116.983381925 32.5939813907,-117.041649505
6 32.5939813907,-117.041649505 32.5902903393,-117.119820333
google_driving_url \
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
4 https://maps.googleapis.com/maps/api/distancem...
5 https://maps.googleapis.com/maps/api/distancem...
6 https://maps.googleapis.com/maps/api/distancem...
google_walking_url \
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
4 https://maps.googleapis.com/maps/api/distancem...
5 https://maps.googleapis.com/maps/api/distancem...
6 https://maps.googleapis.com/maps/api/distancem...
driving_result \
0 {'status': 'OK', 'rows': [{'elements': [{'dura...
1 {'status': 'OK', 'rows': [{'elements': [{'dura...
2 {'status': 'OK', 'rows': [{'elements': [{'dura...
3 {'status': 'OK', 'rows': [{'elements': [{'dura...
4 {'status': 'OK', 'rows': [{'elements': [{'dura...
5 {'status': 'OK', 'rows': [{'elements': [{'dura...
6 {'status': 'OK', 'rows': [{'elements': [{'dura...
walking_result google_driving_time \
0 {'status': 'OK', 'rows': [{'elements': [{'dura... 7.0
1 {'status': 'OK', 'rows': [{'elements': [{'dura... 25.0
2 {'status': 'OK', 'rows': [{'elements': [{'dura... 31.0
3 {'status': 'OK', 'rows': [{'elements': [{'dura... 22.0
4 {'status': 'OK', 'rows': [{'elements': [{'dura... 17.0
5 {'status': 'OK', 'rows': [{'elements': [{'dura... 21.0
6 {'status': 'OK', 'rows': [{'elements': [{'dura... 14.0
google_walking_time
0 9.0
1 269.0
2 482.0
3 156.0
4 117.0
5 347.0
6 98.0
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:53: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
Out[3191]:
( user_id full_trip_id \
0 gordon_lee01 CALIFORNIA-SAN-DIEGO-1-3
trip_location_ids default county \
0 ['CALIFORNIA-SAN-DIEGO-1-3-0', 'CALIFORNIA-SAN... True SAN DIEGO
state details n_days
0 California ["{'address': '15500 San Pasqual Valley Rd, Es... 3.0 ,
trip_locations_id full_day default county state \
0 CALIFORNIA-SAN-DIEGO-1-3-0 True True SAN DIEGO California
1 CALIFORNIA-SAN-DIEGO-1-3-1 True True SAN DIEGO California
2 CALIFORNIA-SAN-DIEGO-1-3-2 True True SAN DIEGO California
details event_type
0 [{'address': '15500 San Pasqual Valley Rd, Esc... event_type
1 [{'address': '1 Legoland Dr, Carlsbad, CA 9200... event_type
2 [{'address': '625 Pan American Rd E, San Diego... event_type ,
google_time_spent_txt type name city \
147 2 hours Feature Balboa Park San Diego
152 None Feature San Diego Zoo San Diego
148 None Feature La Jolla San Diego
4630 None Feature Santee Lakes Santee
4545 None Feature Lake Murray La Mesa
4544 None Feature Mt. Helix La Mesa
1325 None Feature Thick-billed Kingbird Chula Vista
1326 None Feature Lesser Sand-Plover Chula Vista
state coord0 coord1 poi_rank \
147 California -117.149728 32.731555 1
152 California -117.149702 32.735282 6
148 California -117.278276 32.846365 2
4630 California -117.007609 32.859233 1
4545 California -117.040921 32.786321 2
4544 California -116.983382 32.767076 1
1325 California -117.041650 32.593981 1
1326 California -117.119820 32.590290 2
img_url rating \
147 http://mw2.google.com/mw-panoramio/photos/smal... 4.5
152 http://mw2.google.com/mw-panoramio/photos/smal... 4.5
148 http://mw2.google.com/mw-panoramio/photos/smal... -999.0
4630 http://mw2.google.com/mw-panoramio/photos/smal... 4.5
4545 http://mw2.google.com/mw-panoramio/photos/smal... 4.5
4544 http://mw2.google.com/mw-panoramio/photos/smal... NaN
1325 None NaN
1326 None NaN
... google_fast_min \
147 ... 60.0
152 ... None
148 ... None
4630 ... None
4545 ... None
4544 ... None
1325 ... None
1326 ... None
tripadvisor_fast_min tripadvisor_normal_min adjusted_normal_time_spent \
147 180 300 120.0
152 90 120 120.0
148 15 15 15.0
4630 15 15 15.0
4545 15 15 15.0
4544 None None 15.0
1325 None None 15.0
1326 None None 15.0
adjusted_fast_time_spent county theme_park museum stadium \
147 60.0 SAN DIEGO False False False
152 90 SAN DIEGO False False False
148 15 SAN DIEGO False False False
4630 15 SAN DIEGO False False False
4545 15 SAN DIEGO False False False
4544 15 SAN DIEGO False False False
1325 15 SAN DIEGO False False False
1326 15 SAN DIEGO False False False
address
147 625 Pan American Rd E, San Diego, CA 92101, USA
152 1849-1863 Zoo Pl, San Diego, CA 92101, USA
148 701-817 Coast Blvd, La Jolla, CA 92037, USA
4630 10051-10057 Pebble Beach Dr, Santee, CA 92071,...
4545 Lake Murray Bike Path, La Mesa, CA 91942, USA
4544 4905 Mt Helix Dr, La Mesa, CA 91941, USA
1325 1720 Melrose Ave, Chula Vista, CA 91911, USA
1326 711 Basswood Ave, Imperial Beach, CA 91932, USA
[8 rows x 26 columns],
id_ orig_name orig_idx dest_name \
0 225900002260 San Diego Zoo Safari Park 2259.0 Meerkat
1 226000003486 Meerkat 2260.0 Stone
2 348600003487 Stone 3486.0 Stone Brewery
3 348700004951 Stone Brewery 3487.0 Lake Poway
4 495100004953 Lake Poway 4951.0 Potato Chip Rock
5 495300004952 Potato Chip Rock 4953.0 Mt. Woodson
0 287000002871 Legoland 2870.0 Carlsbad Flower Fields
1 287100002089 Carlsbad Flower Fields 2871.0 Oceanside Pier
2 208900002090 Oceanside Pier 2089.0 Pier
3 209000002872 Pier 2090.0 Encinitas
0 1470000152 Balboa Park 147.0 San Diego Zoo
1 1520000148 San Diego Zoo 152.0 La Jolla
2 14800004630 La Jolla 148.0 Santee Lakes
3 463000004545 Santee Lakes 4630.0 Lake Murray
4 454500004544 Lake Murray 4545.0 Mt. Helix
5 454400001325 Mt. Helix 4544.0 Thick-billed Kingbird
6 132500001326 Thick-billed Kingbird 1325.0 Lesser Sand-Plover
dest_idx orig_coord0 orig_coord1 dest_coord0 dest_coord1 \
0 2260.0 -117.000133 33.098961 -116.999868 33.099392
1 3486.0 -116.999868 33.099392 -117.119734 33.116416
2 3487.0 -117.119734 33.116416 -117.119966 33.116212
3 4951.0 -117.119966 33.116212 -117.009919 33.005854
4 4953.0 -117.009919 33.005854 -116.974187 33.009181
5 4952.0 -116.974187 33.009181 -116.973133 33.009056
0 2871.0 -117.311494 33.127247 -117.317765 33.124080
1 2089.0 -117.317765 33.124080 -117.384671 33.194037
2 2090.0 -117.384671 33.194037 -117.384870 33.193954
3 2872.0 -117.384870 33.193954 -117.305701 33.066211
0 152.0 -117.149728 32.731555 -117.149702 32.735282
1 148.0 -117.149702 32.735282 -117.278276 32.846365
2 4630.0 -117.278276 32.846365 -117.007609 32.859233
3 4545.0 -117.007609 32.859233 -117.040921 32.786321
4 4544.0 -117.040921 32.786321 -116.983382 32.767076
5 1325.0 -116.983382 32.767076 -117.041650 32.593981
6 1326.0 -117.041650 32.593981 -117.119820 32.590290
orig_coords dest_coords \
0 33.0989612714,-117.000132992 33.0993917904,-116.999867776
1 33.0993917904,-116.999867776 33.1164156674,-117.119734333
2 33.1164156674,-117.119734333 33.1162121945,-117.119966167
3 33.1162121945,-117.119966167 33.0058541256,-117.009919223
4 33.0058541256,-117.009919223 33.0091805065,-116.97418726
5 33.0091805065,-116.97418726 33.0090558461,-116.973133362
0 33.1272465294,-117.31149401 33.1240797535,-117.317765251
1 33.1240797535,-117.317765251 33.1940372963,-117.384670988
2 33.1940372963,-117.384670988 33.1939537368,-117.384869599
3 33.1939537368,-117.384869599 33.0662106372,-117.305700994
0 32.7315550071,-117.149728475 32.7352824821,-117.149702137
1 32.7352824821,-117.149702137 32.8463650161,-117.278276206
2 32.8463650161,-117.278276206 32.8592330195,-117.007609184
3 32.8592330195,-117.007609184 32.7863213707,-117.040921149
4 32.7863213707,-117.040921149 32.7670760417,-116.983381925
5 32.7670760417,-116.983381925 32.5939813907,-117.041649505
6 32.5939813907,-117.041649505 32.5902903393,-117.119820333
google_driving_url \
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
4 https://maps.googleapis.com/maps/api/distancem...
5 https://maps.googleapis.com/maps/api/distancem...
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
4 https://maps.googleapis.com/maps/api/distancem...
5 https://maps.googleapis.com/maps/api/distancem...
6 https://maps.googleapis.com/maps/api/distancem...
google_walking_url \
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
4 https://maps.googleapis.com/maps/api/distancem...
5 https://maps.googleapis.com/maps/api/distancem...
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
4 https://maps.googleapis.com/maps/api/distancem...
5 https://maps.googleapis.com/maps/api/distancem...
6 https://maps.googleapis.com/maps/api/distancem...
driving_result \
0 {'status': 'OK', 'rows': [{'elements': [{'dura...
1 {'status': 'OK', 'rows': [{'elements': [{'dura...
2 {'status': 'OK', 'rows': [{'elements': [{'dura...
3 {'status': 'OK', 'rows': [{'elements': [{'dura...
4 {'status': 'OK', 'rows': [{'elements': [{'dura...
5 {'status': 'OK', 'rows': [{'elements': [{'dura...
0 {'status': 'OK', 'rows': [{'elements': [{'dura...
1 {'status': 'OK', 'rows': [{'elements': [{'dura...
2 {'status': 'OK', 'rows': [{'elements': [{'dura...
3 {'status': 'OK', 'rows': [{'elements': [{'dura...
0 {'status': 'OK', 'rows': [{'elements': [{'dura...
1 {'status': 'OK', 'rows': [{'elements': [{'dura...
2 {'status': 'OK', 'rows': [{'elements': [{'dura...
3 {'status': 'OK', 'rows': [{'elements': [{'dura...
4 {'status': 'OK', 'rows': [{'elements': [{'dura...
5 {'status': 'OK', 'rows': [{'elements': [{'dura...
6 {'status': 'OK', 'rows': [{'elements': [{'dura...
walking_result google_driving_time \
0 {'status': 'OK', 'rows': [{'elements': [{'dura... 3.0
1 {'status': 'OK', 'rows': [{'elements': [{'dura... 25.0
2 {'status': 'OK', 'rows': [{'elements': [{'dura... 0.0
3 {'status': 'OK', 'rows': [{'elements': [{'dura... 25.0
4 {'status': 'OK', 'rows': [{'elements': [{'dura... 25.0
5 {'status': 'OK', 'rows': [{'elements': [{'dura... 0.0
0 {'status': 'OK', 'rows': [{'elements': [{'dura... 6.0
1 {'status': 'OK', 'rows': [{'elements': [{'dura... 14.0
2 {'status': 'OK', 'rows': [{'elements': [{'dura... 4.0
3 {'status': 'OK', 'rows': [{'elements': [{'dura... 20.0
0 {'status': 'OK', 'rows': [{'elements': [{'dura... 7.0
1 {'status': 'OK', 'rows': [{'elements': [{'dura... 25.0
2 {'status': 'OK', 'rows': [{'elements': [{'dura... 31.0
3 {'status': 'OK', 'rows': [{'elements': [{'dura... 22.0
4 {'status': 'OK', 'rows': [{'elements': [{'dura... 17.0
5 {'status': 'OK', 'rows': [{'elements': [{'dura... 21.0
6 {'status': 'OK', 'rows': [{'elements': [{'dura... 14.0
google_walking_time
0 7.0
1 193.0
2 0.0
3 268.0
4 99.0
5 1.0
0 34.0
1 138.0
2 0.0
3 210.0
0 9.0
1 269.0
2 482.0
3 156.0
4 117.0
5 347.0
6 98.0 )
In [3210]:
full_trip_table.loc[0].values
Out[3210]:
array(['gordon_lee01', 'CALIFORNIA-SAN-DIEGO-1-3',
"['CALIFORNIA-SAN-DIEGO-1-3-0', 'CALIFORNIA-SAN-DIEGO-1-3-1', 'CALIFORNIA-SAN-DIEGO-1-3-2']",
True, 'SAN DIEGO', 'California',
'["{\'address\': \'15500 San Pasqual Valley Rd, Escondido, CA 92027, USA\', \'id\': 2259, \'day\': 0, \'name\': u\'San Diego Zoo Safari Park\'}", "{\'address\': \'Safari Walk, Escondido, CA 92027, USA\', \'id\': 2260, \'day\': 0, \'name\': u\'Meerkat\'}", "{\'address\': \'1999 Citracado Parkway, Escondido, CA 92029, USA\', \'id\': 3486, \'day\': 0, \'name\': u\'Stone\'}", "{\'address\': \'1999 Citracado Parkway, Escondido, CA 92029, USA\', \'id\': 3487, \'day\': 0, \'name\': u\'Stone Brewery\'}", "{\'address\': \'Mount Woodson Trail, Poway, CA 92064, USA\', \'id\': 4951, \'day\': 0, \'name\': u\'Lake Poway\'}", "{\'address\': \'17130 Mt Woodson Rd, Ramona, CA 92065, USA\', \'id\': 4953, \'day\': 0, \'name\': u\'Potato Chip Rock\'}", "{\'address\': \'17130 Mt Woodson Rd, Ramona, CA 92065, USA\', \'id\': 4952, \'day\': 0, \'name\': u\'Mt. Woodson\'}", "{\'address\': \'1 Legoland Dr, Carlsbad, CA 92008, USA\', \'id\': 2870, \'day\': 1, \'name\': u\'Legoland\'}", "{\'address\': \'5754-5780 Paseo Del Norte, Carlsbad, CA 92008, USA\', \'id\': 2871, \'day\': 1, \'name\': u\'Carlsbad Flower Fields\'}", "{\'address\': \'211-359 The Strand N, Oceanside, CA 92054, USA\', \'id\': 2089, \'day\': 1, \'name\': u\'Oceanside Pier\'}", "{\'address\': \'211-359 The Strand N, Oceanside, CA 92054, USA\', \'id\': 2090, \'day\': 1, \'name\': u\'Pier\'}", "{\'address\': \'1016-1024 Neptune Ave, Encinitas, CA 92024, USA\', \'id\': 2872, \'day\': 1, \'name\': u\'Encinitas\'}", "{\'address\': \'625 Pan American Rd E, San Diego, CA 92101, USA\', \'id\': 147, \'day\': 2, \'name\': u\'Balboa Park\'}", "{\'address\': \'1849-1863 Zoo Pl, San Diego, CA 92101, USA\', \'id\': 152, \'day\': 2, \'name\': u\'San Diego Zoo\'}", "{\'address\': \'701-817 Coast Blvd, La Jolla, CA 92037, USA\', \'id\': 148, \'day\': 2, \'name\': u\'La Jolla\'}", "{\'address\': \'10051-10057 Pebble Beach Dr, Santee, CA 92071, USA\', \'id\': 4630, \'day\': 2, \'name\': u\'Santee Lakes\'}", "{\'address\': \'Lake Murray Bike Path, La Mesa, CA 91942, USA\', \'id\': 4545, \'day\': 2, \'name\': u\'Lake Murray\'}", "{\'address\': \'4905 Mt Helix Dr, La Mesa, CA 91941, USA\', \'id\': 4544, \'day\': 2, \'name\': u\'Mt. Helix\'}", "{\'address\': \'1720 Melrose Ave, Chula Vista, CA 91911, USA\', \'id\': 1325, \'day\': 2, \'name\': u\'Thick-billed Kingbird\'}", "{\'address\': \'711 Basswood Ave, Imperial Beach, CA 91932, USA\', \'id\': 1326, \'day\': 2, \'name\': u\'Lesser Sand-Plover\'}"]',
3.0], dtype=object)
In [2477]:
day_trip_locations.to_sql('day_trip_locations', engine,if_exists='append')
In [2685]:
full_trip_table.to_csv('full_trip_table.csv')
In [2709]:
import psycopg2
engine = create_engine('postgresql://zoesh@localhost:5432/travel_with_friends')
full_trip_table = pd.read_csv('./full_trip_table.csv', index_col= 0)
full_trip_table.to_sql('full_trip_table', engine,if_exists='append')
new_trip_id = "ARIZONA-MOHAVE-1-1"
conn = psycopg2.connect("dbname='travel_with_friends' user='zoesh' host='localhost'")
cur = conn.cursor()
cur.execute("select details from full_trip_table where full_trip_id = '%s'" %(new_trip_id))
# a = eval(cur.fetchone()[0])
a = cur.fetchall()
print a[0][0]
["{'address': '1451 McCulloch Blvd N, Lake Havasu City, AZ 86403, USA', 'id': 4762, 'day': 0, 'name': u'London Bridge'}", "{'address': '1420 McCulloch Blvd N, Lake Havasu City, AZ 86403, USA', 'id': 4763, 'day': 0, 'name': u'Lake Havasu'}", "{'address': '2926-2932 S Casino Dr, Laughlin, NV 89029, USA', 'id': 5634, 'day': 0, 'name': u'Laughlin'}", "{'address': '2200 S Casino Dr, Laughlin, NV 89029, USA', 'id': 5635, 'day': 0, 'name': u'Pioneer'}", "{'address': '2168 S Casino Dr, Laughlin, NV 89029, USA', 'id': 5632, 'day': 0, 'name': u'Colorado Belle'}", "{'address': 'Arizona St, Bullhead City, AZ 86429, USA', 'id': 5633, 'day': 0, 'name': u'Davis Dam'}"]
In [ ]:
In [2391]:
#create database and use sqlalchemy to connect
from sqlalchemy import create_engine
engine = create_engine('postgresql://zoesh@localhost:5432/travel_with_friends')
full_trip_table.to_sql('full_trip_table', engine,if_exists='append')
In [2451]:
def extend_full_trip_details(full_trip_details):
details = {}
addresses = []
ids = []
days = []
names = []
for item in full_trip_details:
addresses.append(eval(item)['address'])
ids.append(eval(item)['id'])
days.append(eval(item)['day'])
names.append(eval(item)['name'])
details['addresses'] = addresses
details['ids'] = ids
details['days'] = days
details['names'] = names
return str(full_trip_details)
In [2507]:
# df_0, df_1, new_trip_df1 = search_cluster_events(location, n_days,day_trip_locations, full_trip_table)
full_trip_table, day_trip_locations, new_trip_df1,df_poi_travel_info = search_cluster_events(df6, df_counties_u, location, n_days,day_trip_locations, full_trip_table)
[2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 2 2 2 2 0 0 0]
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:51: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
In [2464]:
full_trip_table.to_sql?
In [ ]:
day_trip_locations
In [2260]:
#Day details table include features: day_detail_id, faull/half_day, default/custom, county, details
#full trip table details: user_id, full_trip_id, trip_locations_id, default/custom, county, details, total_days
day_trip_locations = pd.DataFrame(columns =['trip_locations_id','full_day', 'default', 'county', 'state','details'])
default = True
full_day = True
n_days = 3
i = 0
user_id = 'gordon_lee01'
full_trip_id = 'g001'
# def day_trip(day_trip_locations, default, full_day,n_days,i):
# if default:
# trip_locations_id = '-'.join([str(state.upper()), str(county.upper().replace(' ','-')),str(int(default)), str(n_days),str(i)])
# else:
# trip_locations_id = '-'.join(map(str, new_trip_df1.index.values))
# #details dict includes: id, name,address, day
# details = [str({'id': new_trip_df1.index[x],'name': new_trip_df1.name.values[x],'address':new_trip_df1.address.values[x], 'day': i}) \
# for x in range(new_trip_df1.shape[0])]
# return [trip_locations_id, full_day, default, county, state, details]
# def full_trip_table_row(user_id, full_trip_id, trip_location_ids, default, county, state, full_trip_details, n_days):
# full_trip_id = '-'.join([str(state.upper()), str(county.upper().replace(' ','-')),str(int(default)), str(n_days)])
# return [user_id]
In [2430]:
def day_trip(new_trip_df1, county, state, default, full_day,n_days,i):
if default:
trip_locations_id = '-'.join([str(state.upper()), str(county.upper().replace(' ','-')),str(int(default)), str(n_days),str(i)])
else:
trip_locations_id = '-'.join(map(str, new_trip_df1.index.values))
#details dict includes: id, name,address, day
details = [str({'id': new_trip_df1.index[x],'name': new_trip_df1.name.values[x],'address':new_trip_df1.address.values[x], 'day': i}) \
for x in range(new_trip_df1.shape[0])]
return [trip_locations_id, full_day, default, county, state, details]
In [2227]:
df_tmp = pd.DataFrame(day_trip(day_trip_locations, default, full_day,n_days,i)).T
# day_trip_locations.append(day_trip(day_trip_locations, default, full_day,n_days,i)).T
# day_trip_locations.loc[0] = day_trip(day_trip_locations, default, full_day,n_days,i)
In [2670]:
#Get the address from matching new_df_poi_travel_time and new_trip_df1
def df_addresses(new_trip_df1, new_df_poi_travel_time):
my_lst = []
for i in new_trip_df1.index.values:
temp_df = new_df_poi_travel_time[i == new_df_poi_travel_time.orig_idx.values]
if temp_df.shape[0]>0:
address = eval(temp_df.driving_result.values[0])['origin_addresses'][0]
my_lst.append(address)
else:
try:
temp_df = new_df_poi_travel_time[i == new_df_poi_travel_time.dest_idx.values]
address = eval(temp_df.driving_result.values[0])['destination_addresses'][0]
my_lst.append(address)
except:
print new_trip_df1, new_df_poi_travel_time
return my_lst
new_trip_df1['address'] = df_addresses(new_trip_df1, new_df_poi_travel_time)
In [1522]:
all_big = big.sort_values(['poi_rank', 'rating'], ascending=[True, False])
big_ = big.loc[big_ix].sort_values(['poi_rank', 'rating'], ascending=[True, False])
small_ = small.loc[small_ix].sort_values(['poi_rank', 'rating'], ascending=[True, False])
medium_ = med.loc[med_ix].sort_values(['poi_rank', 'rating'], ascending=[True, False])
In [2660]:
def create_trip_df(big_,medium_,small_):
full_day_time = 60*8
travel_time = 0
event_type = ''
if big_.shape[0] >= 1:
if (medium_.shape[0] < 2) or (big_.iloc[0].poi_rank <= medium_.iloc[0].poi_rank):
if small_.shape[0] >= 6:
trip_df = small_.iloc[0:6].append(big_.iloc[0])
else:
trip_df = small_.append(big_.iloc[0])
event_type = 'big'
else:
if small_.shape[0] >= 8:
trip_df = small_.iloc[0:8].append(medium_.iloc[0:2])
else:
trip_df = small_.append(medium_.iloc[0:2])
event_type = 'med'
elif medium_.shape[0] >= 2:
if small_.shape[0] >= 8:
trip_df = small_.iloc[0:8].append(medium_.iloc[0:2])
else:
trip_df = small_.append(medium_.iloc[0:2])
event_type = 'med'
else:
if small_.shape[0] >= 10:
trip_df = small_.iloc[0:10].append(medium_).sort_values(['poi_rank', 'rating'], ascending=[True, False])
else:
trip_df = small_.append(medium_).sort_values(['poi_rank', 'rating'], ascending=[True, False])
event_type = 'small'
return trip_df, event_type
big_.iloc[0].adjusted_normal_time_spent + sum(small_.iloc[0:4].adjusted_normal_time_spent) + travel_time < full_day_time
'''
Bsnsman Travel Problem for cloest distance
'''
def trip_df_cloest_distance(trip_df, event_type):
points = trip_df[['coord0','coord1']].values.tolist()
n, D = mk_matrix(points, distL2) # create the distance matrix
if len(points) >= 3:
if event_type == 'big':
tour = nearest_neighbor(n, trip_df.shape[0]-1, D) # create a greedy tour, visiting city 'i' first
z = length(tour, D)
z = localsearch(tour, z, D)
elif event_type == 'med':
tour = nearest_neighbor(n, trip_df.shape[0]-2, D) # create a greedy tour, visiting city 'i' first
z = length(tour, D)
z = localsearch(tour, z, D)
else:
tour = nearest_neighbor(n, 0, D) # create a greedy tour, visiting city 'i' first
z = length(tour, D)
z = localsearch(tour, z, D)
return tour
else:
return range(len(points))
tour = trip_df_cloest_distance(trip_df, event_type)
In [2646]:
def table_cloest_distance(trip_locations_id, event_type):
points = trip_df[['coord0','coord1']].values.tolist()
n, D = mk_matrix(points, distL2) # create the distance matrix
if len(points) >= 3:
if event_type == 'big':
tour = nearest_neighbor(n, trip_df.shape[0]-1, D) # create a greedy tour, visiting city 'i' first
z = length(tour, D)
z = localsearch(tour, z, D)
elif event_type == 'med':
tour = nearest_neighbor(n, trip_df.shape[0]-2, D) # create a greedy tour, visiting city 'i' first
z = length(tour, D)
z = localsearch(tour, z, D)
else:
tour = nearest_neighbor(n, 0, D) # create a greedy tour, visiting city 'i' first
z = length(tour, D)
z = localsearch(tour, z, D)
return tour
else:
return range(len(points))
Out[2646]:
10
In [2661]:
my_key = 'AIzaSyDJh9EWCA_v0_B3SvjzjUA3OSVYufPJeGE'
def google_driving_walking_time(tour,trip_df,event_type):
df_poi_travel_time = pd.DataFrame(columns =['id_','orig_name','orig_idx','dest_name','dest_idx','orig_coord0','orig_coord1',\
'dest_coord0','dest_coord1','orig_coords','dest_coords','google_driving_url',\
'google_walking_url','driving_result','walking_result','google_driving_time',\
'google_walking_time'])
# ids_, orig_names,orid_idxs,dest_names,dest_idxs,orig_coord0s,orig_coord1s,dest_coord0s,dest_coord1s = [],[],[],[],[],[],[],[],[]
# orig_coordss,dest_coordss,driving_urls,walking_urls,driving_results,walking_results,driving_times,walking_times = [],[],[],[],[],[],[],[]
for i in range(len(tour)-1):
id_ = str(trip_df.loc[trip_df.index[tour[i]]].name) + '0000'+str(trip_df.loc[trip_df.index[tour[i+1]]].name)
orig_name = trip_df.loc[trip_df.index[tour[i]]]['name']
orig_idx = trip_df.loc[trip_df.index[tour[i]]].name
dest_name = trip_df.loc[trip_df.index[tour[i+1]]]['name']
dest_idx = trip_df.loc[trip_df.index[tour[i+1]]].name
orig_coord0 = trip_df.loc[trip_df.index[tour[i]]]['coord0']
orig_coord1 = trip_df.loc[trip_df.index[tour[i]]]['coord1']
dest_coord0 = trip_df.loc[trip_df.index[tour[i+1]]]['coord0']
dest_coord1 = trip_df.loc[trip_df.index[tour[i+1]]]['coord1']
orig_coords = str(orig_coord1)+','+str(orig_coord0)
dest_coords = str(dest_coord1)+','+str(dest_coord0)
google_driving_url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins={0}&destinations={1}&mode=driving&language=en-EN&sensor=false&key={2}".\
format(orig_coords.replace(' ',''),dest_coords.replace(' ',''),my_key)
google_walking_url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins={0}&destinations={1}&mode=walking&language=en-EN&sensor=false&key={2}".\
format(orig_coords.replace(' ',''),dest_coords.replace(' ',''),my_key)
driving_result= simplejson.load(urllib.urlopen(google_driving_url))
walking_result= simplejson.load(urllib.urlopen(google_walking_url))
# try:
if driving_result['rows'][0]['elements'][0]['status'] == 'ZERO_RESULTS':
google_driving_url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins={0}&destinations={1}&mode=driving&language=en-EN&sensor=false&key={2}".\
format(orig_name.replace(' ','+').replace('-','+'),dest_name.replace(' ','+').replace('-','+'),my_key)
driving_result= simplejson.load(urllib.urlopen(google_driving_url))
if walking_result['rows'][0]['elements'][0]['status'] == 'ZERO_RESULTS':
google_walking_url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins={0}&destinations={1}&mode=walking&language=en-EN&sensor=false&key={2}".\
format(orig_name.replace(' ','+').replace('-','+'),dest_name.replace(' ','+').replace('-','+'),my_key)
walking_result= simplejson.load(urllib.urlopen(google_walking_url))
if (driving_result['rows'][0]['elements'][0]['status'] == 'NOT_FOUND') and (walking_result['rows'][0]['elements'][0]['status'] == 'NOT_FOUND'):
new_df = trip_df.drop(trip_df.iloc[tour[i+1]].name)
new_tour = trip_df_cloest_distance(new_df,event_type)
return google_driving_walking_time(new_tour,new_df, event_type)
try:
google_driving_time = driving_result['rows'][0]['elements'][0]['duration']['value']/60
except:
print driving_result
try:
google_walking_time = walking_result['rows'][0]['elements'][0]['duration']['value']/60
except:
google_walking_time = 9999
df_poi_travel_time.loc[len(df_poi_travel_time)]=[id_,orig_name,orig_idx,dest_name,dest_idx,orig_coord0,orig_coord1,dest_coord0,\
dest_coord1,orig_coords,dest_coords,google_driving_url,google_walking_url,\
str(driving_result),str(walking_result),google_driving_time,google_walking_time]
# except:
# print 'tour', i, tour
# print df_poi_travel_time.shape
# print 'google dirving and walking:', google_driving_time, google_walking_time
# print driving_result, walking_result, trip_df.iloc[tour[i+1]]['name'], trip_df.iloc[tour[i]]['name']
return tour, trip_df, df_poi_travel_time
In [2582]:
new_tour, new_trip_df, df_poi_travel_time = google_driving_walking_time(tour,trip_df,event_type)
In [2352]:
def remove_extra_events(trip_df, df_poi_travel_time):
if sum(trip_df.adjusted_normal_time_spent)+sum(df_poi_travel_time.google_driving_time) > 480:
new_trip_df = trip_df[:-1]
new_df_poi_travel_time = df_poi_travel_time[:-1]
return remove_extra_events(new_trip_df,new_df_poi_travel_time)
else:
return trip_df, df_poi_travel_time, sum(trip_df.adjusted_normal_time_spent)+sum(df_poi_travel_time.google_driving_time)
In [2351]:
tour = [6,2,1,3,4,0,5]
# print sum(trip_df.adjusted_normal_time_spent)+sum(df_poi_travel_time.google_driving_time)
# trip_df
trip_df = trip_df.iloc[tour]
remove_extra_events(trip_df, df_poi_travel_time)
Out[2351]:
( google_time_spent_txt type name city \
4395 None Feature Swamis Encinitas
2089 30 min Feature Oceanside Pier Oceanside
2871 45 min Feature Carlsbad Flower Fields Carlsbad
2090 None Feature Pier Oceanside
2872 None Feature Encinitas Carlsbad
2870 None Feature Legoland Carlsbad
state coord0 coord1 poi_rank \
4395 California -117.292231 33.034657 3
2089 California -117.384671 33.194037 2
2871 California -117.317765 33.124080 2
2090 California -117.384870 33.193954 3
2872 California -117.305701 33.066211 3
2870 California -117.311494 33.127247 1
img_url rating ... \
4395 None NaN ...
2089 http://mw2.google.com/mw-panoramio/photos/smal... 4.5 ...
2871 http://mw2.google.com/mw-panoramio/photos/smal... 4.5 ...
2090 http://mw2.google.com/mw-panoramio/photos/smal... 4.5 ...
2872 http://mw2.google.com/mw-panoramio/photos/smal... NaN ...
2870 http://mw2.google.com/mw-panoramio/photos/smal... NaN ...
google_normal_min google_fast_min tripadvisor_fast_min \
4395 None None None
2089 30 30 15
2871 45 30 15
2090 None None 15
2872 None None None
2870 None None None
tripadvisor_normal_min adjusted_normal_time_spent \
4395 None 15.0
2089 15 30.0
2871 15 45.0
2090 15 15.0
2872 None 15.0
2870 None 300.0
adjusted_fast_time_spent county theme_park museum stadium
4395 15 SAN DIEGO False False False
2089 30 SAN DIEGO False False False
2871 30 SAN DIEGO False False False
2090 15 SAN DIEGO False False False
2872 15 SAN DIEGO False False False
2870 180 SAN DIEGO False False False
[6 rows x 25 columns],
id_ orig_name orig_idx dest_name \
0 287000002871 Legoland 2870.0 Carlsbad Flower Fields
1 287100002089 Carlsbad Flower Fields 2871.0 Oceanside Pier
2 208900002090 Oceanside Pier 2089.0 Pier
3 209000002872 Pier 2090.0 Encinitas
4 287200004393 Encinitas 2872.0 Moonlight Beach
dest_idx orig_coord0 orig_coord1 dest_coord0 dest_coord1 \
0 2871.0 -117.311494 33.127247 -117.317765 33.124080
1 2089.0 -117.317765 33.124080 -117.384671 33.194037
2 2090.0 -117.384671 33.194037 -117.384870 33.193954
3 2872.0 -117.384870 33.193954 -117.305701 33.066211
4 4393.0 -117.305701 33.066211 -117.296921 33.047770
orig_coords dest_coords \
0 33.1272465294,-117.31149401 33.1240797535,-117.317765251
1 33.1240797535,-117.317765251 33.1940372963,-117.384670988
2 33.1940372963,-117.384670988 33.1939537368,-117.384869599
3 33.1939537368,-117.384869599 33.0662106372,-117.305700994
4 33.0662106372,-117.305700994 33.0477696,-117.296921413
google_driving_url \
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
4 https://maps.googleapis.com/maps/api/distancem...
google_walking_url \
0 https://maps.googleapis.com/maps/api/distancem...
1 https://maps.googleapis.com/maps/api/distancem...
2 https://maps.googleapis.com/maps/api/distancem...
3 https://maps.googleapis.com/maps/api/distancem...
4 https://maps.googleapis.com/maps/api/distancem...
driving_result \
0 {'status': 'OK', 'rows': [{'elements': [{'dura...
1 {'status': 'OK', 'rows': [{'elements': [{'dura...
2 {'status': 'OK', 'rows': [{'elements': [{'dura...
3 {'status': 'OK', 'rows': [{'elements': [{'dura...
4 {'status': 'OK', 'rows': [{'elements': [{'dura...
walking_result google_driving_time \
0 {'status': 'OK', 'rows': [{'elements': [{'dura... 6.0
1 {'status': 'OK', 'rows': [{'elements': [{'dura... 14.0
2 {'status': 'OK', 'rows': [{'elements': [{'dura... 4.0
3 {'status': 'OK', 'rows': [{'elements': [{'dura... 20.0
4 {'status': 'OK', 'rows': [{'elements': [{'dura... 7.0
google_walking_time
0 34.0
1 138.0
2 0.0
3 210.0
4 29.0 ,
471.0)
In [2019]:
new_trip_df1,new_df_poi_travel_time = remove_extra_events(new_tour, new_trip_df, df_poi_travel_time)
In [1993]:
sum(new_trip_df1.adjusted_normal_time_spent)+sum(new_df_poi_travel_time.google_driving_time)
Out[1993]:
467.0
In [ ]:
###Trip Table for user:
In [1994]:
###Next Steps: Add control from the users. funt1: allow to add events,(specific name or auto add)
### auto route to the most appropirate order
###funt2: allow to reorder the events. funt3: allow to delete the events.
###funt4: allow to switch a new event-next to the switch and x mark icon,check mark to confirm the new place and auto order
###New table for the trip info...features including trip id, event place, days, specific date, trip details. (trip tour, trip)
In [1984]:
def user_add_event():
Out[1984]:
id_
orig_name
orig_idx
dest_name
dest_idx
orig_coord0
orig_coord1
dest_coord0
dest_coord1
orig_coords
dest_coords
google_driving_url
google_walking_url
driving_result
walking_result
google_driving_time
google_walking_time
0
1470000152
Balboa Park
147.0
San Diego Zoo
152.0
-117.149728
32.731555
-117.149702
32.735282
32.7315550071,-117.149728475
32.7352824821,-117.149702137
https://maps.googleapis.com/maps/api/distancem...
https://maps.googleapis.com/maps/api/distancem...
{'status': 'OK', 'rows': [{'elements': [{'dura...
{'status': 'OK', 'rows': [{'elements': [{'dura...
7.0
9.0
1
1520000148
San Diego Zoo
152.0
La Jolla
148.0
-117.149702
32.735282
-117.278276
32.846365
32.7352824821,-117.149702137
32.8463650161,-117.278276206
https://maps.googleapis.com/maps/api/distancem...
https://maps.googleapis.com/maps/api/distancem...
{'status': 'OK', 'rows': [{'elements': [{'dura...
{'status': 'OK', 'rows': [{'elements': [{'dura...
25.0
269.0
2
14800004630
La Jolla
148.0
Santee Lakes
4630.0
-117.278276
32.846365
-117.007609
32.859233
32.8463650161,-117.278276206
32.8592330195,-117.007609184
https://maps.googleapis.com/maps/api/distancem...
https://maps.googleapis.com/maps/api/distancem...
{'status': 'OK', 'rows': [{'elements': [{'dura...
{'status': 'OK', 'rows': [{'elements': [{'dura...
31.0
482.0
3
463000004545
Santee Lakes
4630.0
Lake Murray
4545.0
-117.007609
32.859233
-117.040921
32.786321
32.8592330195,-117.007609184
32.7863213707,-117.040921149
https://maps.googleapis.com/maps/api/distancem...
https://maps.googleapis.com/maps/api/distancem...
{'status': 'OK', 'rows': [{'elements': [{'dura...
{'status': 'OK', 'rows': [{'elements': [{'dura...
22.0
156.0
4
454500004544
Lake Murray
4545.0
Mt. Helix
4544.0
-117.040921
32.786321
-116.983382
32.767076
32.7863213707,-117.040921149
32.7670760417,-116.983381925
https://maps.googleapis.com/maps/api/distancem...
https://maps.googleapis.com/maps/api/distancem...
{'status': 'OK', 'rows': [{'elements': [{'dura...
{'status': 'OK', 'rows': [{'elements': [{'dura...
17.0
117.0
5
454400001325
Mt. Helix
4544.0
Thick-billed Kingbird
1325.0
-116.983382
32.767076
-117.041650
32.593981
32.7670760417,-116.983381925
32.5939813907,-117.041649505
https://maps.googleapis.com/maps/api/distancem...
https://maps.googleapis.com/maps/api/distancem...
{'status': 'OK', 'rows': [{'elements': [{'dura...
{'status': 'OK', 'rows': [{'elements': [{'dura...
21.0
347.0
6
132500001326
Thick-billed Kingbird
1325.0
Lesser Sand-Plover
1326.0
-117.041650
32.593981
-117.119820
32.590290
32.5939813907,-117.041649505
32.5902903393,-117.119820333
https://maps.googleapis.com/maps/api/distancem...
https://maps.googleapis.com/maps/api/distancem...
{'status': 'OK', 'rows': [{'elements': [{'dura...
{'status': 'OK', 'rows': [{'elements': [{'dura...
14.0
98.0
7
13260000149
Lesser Sand-Plover
1326.0
Hotel del Coronado
149.0
-117.119820
32.590290
-117.178596
32.680242
32.5902903393,-117.119820333
32.6802419866,-117.178595669
https://maps.googleapis.com/maps/api/distancem...
https://maps.googleapis.com/maps/api/distancem...
{'status': 'OK', 'rows': [{'elements': [{'dura...
{'status': 'OK', 'rows': [{'elements': [{'dura...
13.0
145.0
In [1449]:
import doctest
from itertools import permutations
def distance(point1, point2):
"""
Returns the Euclidean distance of two points in the Cartesian Plane.
>>> distance([3,4],[0,0])
5.0
>>> distance([3,6],[10,6])
7.0
"""
return ((point1[0] - point2[0])**2 + (point1[1] - point2[1])**2) ** 0.5
def total_distance(points):
"""
Returns the length of the path passing throught
all the points in the given order.
>>> total_distance([[1,2],[4,6]])
5.0
>>> total_distance([[3,6],[7,6],[12,6]])
9.0
"""
return sum([distance(point, points[index + 1]) for index, point in enumerate(points[:-1])])
def travelling_salesman(points, start=None):
"""
Finds the shortest route to visit all the cities by bruteforce.
Time complexity is O(N!), so never use on long lists.
>>> travelling_salesman([[0,0],[10,0],[6,0]])
([0, 0], [6, 0], [10, 0])
>>> travelling_salesman([[0,0],[6,0],[2,3],[3,7],[0.5,9],[3,5],[9,1]])
([0, 0], [6, 0], [9, 1], [2, 3], [3, 5], [3, 7], [0.5, 9])
"""
if start is None:
start = points[0]
return min([perm for perm in permutations(points) if perm[0] == start], key=total_distance)
def optimized_travelling_salesman(points, start=None):
"""
As solving the problem in the brute force way is too slow,
this function implements a simple heuristic: always
go to the nearest city.
Even if this algoritmh is extremely simple, it works pretty well
giving a solution only about 25% longer than the optimal one (cit. Wikipedia),
and runs very fast in O(N^2) time complexity.
>>> optimized_travelling_salesman([[i,j] for i in range(5) for j in range(5)])
[[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [1, 4], [1, 3], [1, 2], [1, 1], [1, 0], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [3, 4], [3, 3], [3, 2], [3, 1], [3, 0], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4]]
>>> optimized_travelling_salesman([[0,0],[10,0],[6,0]])
[[0, 0], [6, 0], [10, 0]]
"""
if start is None:
start = points[0]
must_visit = points
path = [start]
must_visit.remove(start)
while must_visit:
nearest = min(must_visit, key=lambda x: distance(path[-1], x))
path.append(nearest)
must_visit.remove(nearest)
return path
In [1476]:
points = trip_df[['coord0','coord1']].values.tolist()
# print total_distance(travelling_salesman(points)),
# print total_distance(optimized_travelling_salesman(points))
print points
[[-117.29692141333341, 33.047769600024424], [-117.38467098803415, 33.194037296336944], [-117.3177652511278, 33.124079753475236], [-117.38486959870514, 33.19395373677801], [-117.31149400962188, 33.127246529430074]]
In [1489]:
coord = [(4,0),(5,6),(8,3),(4,4),(4,1),(4,10),(4,7),(6,8),(8,1)]
n, D = mk_matrix(points, distL2) # create the distance matrix
instance = "toy problem"
from time import clock
init = clock()
def report_sol(obj, s=""):
print "cpu:%g\tobj:%g\ttour:%s" % \
(clock(), obj, s)
print "*** travelling salesman problem ***"
print
# random construction
print "random construction + local search:"
tour = randtour(n) # create a random tour
z = length(tour, D) # calculate its length
print "random:", tour, z, ' --> ',
z = localsearch(tour, z, D) # local search starting from the random tour
print tour, z
print
# greedy construction
print "greedy construction with nearest neighbor + local search:"
for i in range(n):
tour = nearest_neighbor(n, i, D) # create a greedy tour, visiting city 'i' first
z = length(tour, D)
print "nneigh:", tour, z, ' --> ',
z = localsearch(tour, z, D)
print tour, z
print
# multi-start local search
print "random start local search:"
niter = 100
tour,z = multistart_localsearch(niter, n, D, report_sol)
# assert z == length(tour, D)
# print z, length(tour,D)
print "best found solution (%d iterations): z = %g" % (niter, z)
print tour
*** travelling salesman problem ***
random construction + local search:
random: [4, 0, 1, 3, 2] 2.85549119882 --> [4, 0, 3, 1, 2] 2.85544475855
greedy construction with nearest neighbor + local search:
nneigh: [0, 2, 4, 1, 3] 2.85602263912 --> [0, 4, 2, 1, 3] 2.85544475855
nneigh: [1, 3, 2, 4, 0] 2.85549119882 --> [1, 3, 0, 4, 2] 2.85544475855
nneigh: [2, 4, 0, 1, 3] 2.85549119882 --> [2, 4, 0, 3, 1] 2.85544475855
nneigh: [3, 1, 2, 4, 0] 2.85544475855 --> [3, 1, 2, 4, 0] 2.85544475855
nneigh: [4, 2, 0, 1, 3] 2.8560825409 --> [4, 2, 1, 3, 0] 2.85544475855
random start local search:
cpu:4520.08 obj:2.85544 tour:[3, 1, 2, 4, 0]
best found solution (100 iterations): z = 2.85544
[3, 1, 2, 4, 0]
In [1486]:
import math
import random
def distL2((x1,y1), (x2,y2)):
"""Compute the L2-norm (Euclidean) distance between two points.
The distance is rounded to the closest integer, for compatibility
with the TSPLIB convention.
The two points are located on coordinates (x1,y1) and (x2,y2),
sent as parameters"""
xdiff = x2 - x1
ydiff = y2 - y1
return math.sqrt(xdiff*xdiff + ydiff*ydiff) + .5
def distL1((x1,y1), (x2,y2)):
"""Compute the L1-norm (Manhattan) distance between two points.
The distance is rounded to the closest integer, for compatibility
with the TSPLIB convention.
The two points are located on coordinates (x1,y1) and (x2,y2),
sent as parameters"""
return abs(x2-x1) + abs(y2-y1)+.5
def mk_matrix(coord, dist):
"""Compute a distance matrix for a set of points.
Uses function 'dist' to calculate distance between
any two points. Parameters:
-coord -- list of tuples with coordinates of all points, [(x1,y1),...,(xn,yn)]
-dist -- distance function
"""
n = len(coord)
D = {} # dictionary to hold n times n matrix
for i in range(n-1):
for j in range(i+1,n):
[x1,y1] = coord[i]
[x2,y2] = coord[j]
D[i,j] = dist((x1,y1), (x2,y2))
D[j,i] = D[i,j]
return n,D
def read_tsplib(filename):
"basic function for reading a TSP problem on the TSPLIB format"
"NOTE: only works for 2D euclidean or manhattan distances"
f = open(filename, 'r');
line = f.readline()
while line.find("EDGE_WEIGHT_TYPE") == -1:
line = f.readline()
if line.find("EUC_2D") != -1:
dist = distL2
elif line.find("MAN_2D") != -1:
dist = distL1
else:
print "cannot deal with non-euclidean or non-manhattan distances"
raise Exception
while line.find("NODE_COORD_SECTION") == -1:
line = f.readline()
xy_positions = []
while 1:
line = f.readline()
if line.find("EOF") != -1: break
(i,x,y) = line.split()
x = float(x)
y = float(y)
xy_positions.append((x,y))
n,D = mk_matrix(xy_positions, dist)
return n, xy_positions, D
def mk_closest(D, n):
"""Compute a sorted list of the distances for each of the nodes.
For each node, the entry is in the form [(d1,i1), (d2,i2), ...]
where each tuple is a pair (distance,node).
"""
C = []
for i in range(n):
dlist = [(D[i,j], j) for j in range(n) if j != i]
dlist.sort()
C.append(dlist)
return C
def length(tour, D):
"""Calculate the length of a tour according to distance matrix 'D'."""
z = D[tour[-1], tour[0]] # edge from last to first city of the tour
for i in range(1,len(tour)):
z += D[tour[i], tour[i-1]] # add length of edge from city i-1 to i
return z
def randtour(n):
"""Construct a random tour of size 'n'."""
sol = range(n) # set solution equal to [0,1,...,n-1]
random.shuffle(sol) # place it in a random order
return sol
def nearest(last, unvisited, D):
"""Return the index of the node which is closest to 'last'."""
near = unvisited[0]
min_dist = D[last, near]
for i in unvisited[1:]:
if D[last,i] < min_dist:
near = i
min_dist = D[last, near]
return near
def nearest_neighbor(n, i, D):
"""Return tour starting from city 'i', using the Nearest Neighbor.
Uses the Nearest Neighbor heuristic to construct a solution:
- start visiting city i
- while there are unvisited cities, follow to the closest one
- return to city i
"""
unvisited = range(n)
unvisited.remove(i)
last = i
tour = [i]
while unvisited != []:
next = nearest(last, unvisited, D)
tour.append(next)
unvisited.remove(next)
last = next
return tour
def exchange_cost(tour, i, j, D):
"""Calculate the cost of exchanging two arcs in a tour.
Determine the variation in the tour length if
arcs (i,i+1) and (j,j+1) are removed,
and replaced by (i,j) and (i+1,j+1)
(note the exception for the last arc).
Parameters:
-t -- a tour
-i -- position of the first arc
-j>i -- position of the second arc
"""
n = len(tour)
a,b = tour[i],tour[(i+1)%n]
c,d = tour[j],tour[(j+1)%n]
return (D[a,c] + D[b,d]) - (D[a,b] + D[c,d])
def exchange(tour, tinv, i, j):
"""Exchange arcs (i,i+1) and (j,j+1) with (i,j) and (i+1,j+1).
For the given tour 't', remove the arcs (i,i+1) and (j,j+1) and
insert (i,j) and (i+1,j+1).
This is done by inverting the sublist of cities between i and j.
"""
n = len(tour)
if i>j:
i,j = j,i
assert i>=0 and i<j-1 and j<n
path = tour[i+1:j+1]
path.reverse()
tour[i+1:j+1] = path
for k in range(i+1,j+1):
tinv[tour[k]] = k
def improve(tour, z, D, C):
"""Try to improve tour 't' by exchanging arcs; return improved tour length.
If possible, make a series of local improvements on the solution 'tour',
using a breadth first strategy, until reaching a local optimum.
"""
n = len(tour)
tinv = [0 for i in tour]
for k in range(n):
tinv[tour[k]] = k # position of each city in 't'
for i in range(n):
a,b = tour[i],tour[(i+1)%n]
dist_ab = D[a,b]
improved = False
for dist_ac,c in C[a]:
if dist_ac >= dist_ab:
break
j = tinv[c]
d = tour[(j+1)%n]
dist_cd = D[c,d]
dist_bd = D[b,d]
delta = (dist_ac + dist_bd) - (dist_ab + dist_cd)
if delta < 0: # exchange decreases length
exchange(tour, tinv, i, j);
z += delta
improved = True
break
if improved:
continue
for dist_bd,d in C[b]:
if dist_bd >= dist_ab:
break
j = tinv[d]-1
if j==-1:
j=n-1
c = tour[j]
dist_cd = D[c,d]
dist_ac = D[a,c]
delta = (dist_ac + dist_bd) - (dist_ab + dist_cd)
if delta < 0: # exchange decreases length
exchange(tour, tinv, i, j);
z += delta
break
return z
def localsearch(tour, z, D, C=None):
"""Obtain a local optimum starting from solution t; return solution length.
Parameters:
tour -- initial tour
z -- length of the initial tour
D -- distance matrix
"""
n = len(tour)
if C == None:
C = mk_closest(D, n) # create a sorted list of distances to each node
while 1:
newz = improve(tour, z, D, C)
if newz < z:
z = newz
else:
break
return z
def multistart_localsearch(k, n, D, report=None):
"""Do k iterations of local search, starting from random solutions.
Parameters:
-k -- number of iterations
-D -- distance matrix
-report -- if not None, call it to print verbose output
Returns best solution and its cost.
"""
C = mk_closest(D, n) # create a sorted list of distances to each node
bestt=None
bestz=None
for i in range(0,k):
tour = randtour(n)
z = length(tour, D)
z = localsearch(tour, z, D, C)
if z < bestz or bestz == None:
bestz = z
bestt = list(tour)
if report:
report(z, tour)
return bestt, bestz
In [3177]:
###Next Steps: Add control from the users. funt1: allow to add events,(specific name or auto add)
### auto route to the most appropirate order
###funt2: allow to reorder the events. funt3: allow to delete the events.
###funt4: allow to switch a new event-next to the switch and x mark icon,check mark to confirm the new place and auto order
###New table for the trip info...features including trip id, event place, days, specific date, trip details. (trip tour, trip)
def ajax_available_events(county, state):
conn = psycopg2.connect("dbname='travel_with_friends' user='zoesh' host='localhost'")
cur = conn.cursor()
cur.execute("select name from poi_details where county='%s' and state='%s'" %(county,state))
poi_lst = [item[0] for item in cur.fetchall()]
conn.close()
return poi_lst
def add_events(trip_locations_id, event_name, full_day = True, unseen_event = False):
conn = psycopg2.connect("dbname='travel_with_friends' user='zoesh' host='localhost'")
cur = conn.cursor()
cur.execute("select * from day_trip_locations where trip_locations_id='%s'" %(trip_locations_id))
# cur.execute("select * from day_trip_locations")
(index, trip_locations_id, full_day, default, county, state, detail) = cur.fetchone()
if unseen_event:
index += 1
trip_locations_id = '-'.join([str(eval(i)['id']) for i in eval(detail)])+'-'+event_name.replace(' ','-')
cur.execute("select details from day_trip_locations where trip_locations_id='%s'" %(trip_locations_id))
a = cur.fetchone()
if bool(a):
conn.close()
return trip_locations_id, a[-1]
else:
cur.execute("select max(index) from day_trip_locations")
index = cur.fetchone()[0]+1
detail = list(eval(detail))
new_event = "{'address': 'None', 'id': 'None', 'day': 0, 'name': u'%s'}"%(event_name)
detail.append(new_event)
#get the right format of detail: change from list to string and remove brackets and convert quote type
new_detail = str(detail).replace('"','').replace('[','').replace(']','').replace("'",'"')
cur.execute("INSERT INTO day_trip_locations VALUES (%i, '%s',%s,%s,'%s','%s','%s');" %(index, trip_locations_id, full_day, False, county, state, new_detail))
conn.commit()
conn.close()
return trip_locations_id, detail
else:
tour = trip_df_cloest_distance(trip_df, event_type)
return None
# trip_locations_id = '-'.join([str(state.upper()), str(county.upper().replace(' ','-')),str(int(default)), str(n_days),str(i)])
# return None
In [2957]:
def day_trip(new_trip_df1, county, state, default, full_day,n_days,i):
if default:
trip_locations_id = '-'.join([str(state.upper()), str(county.upper().replace(' ','-')),str(int(default)), str(n_days),str(i)])
else:
trip_locations_id = '-'.join(map(str, new_trip_df1.index.values))
#details dict includes: id, name,address, day
details = [str({'id': new_trip_df1.index[x],'name': new_trip_df1.name.values[x],'address':new_trip_df1.address.values[x], 'day': i}) \
for x in range(new_trip_df1.shape[0])]
return [trip_locations_id, full_day, default, county, state, details]
In [2829]:
trip_locations_id = 'CALIFORNIA-SAN-DIEGO-1-3-0'
"select * from day_trip_locations where trip_locations_id='%s'" %(trip_locations_id)
Out[2829]:
"select * from day_trip_locations where trip_locations_id='CALIFORNIA-SAN-DIEGO-1-3-0'"
In [ ]:
city = item[0]
price = item[1]
info = item[2]
query = "INSERT INTO day_trip_locations (info, city, price) VALUES (%s, %s, %s);"
data = (info, city, price)
cursor.execute(query, data)
conn.commit()
In [3274]:
baseUrl = "http://www.tripadvisor.com"
citySearchUrl = baseUrl+"/Search?q="+urlCity+"%2C+"+urlState+"&sub-search=SEARCH&geo=&returnTo=__2F__#&ssrc=g&o=0"
In [3291]:
baseurl = 'https://www.tripadvisor.com/Search?geo=&q='
name = "Buck's Pocket State Park"
search_name = '+'.join(name.replace("'", ' ').split())
print search_name
state = 'Alabama'
search_url = baseurl+search_name+'+'+state
print search_url
Buck+s+Pocket+State+Park
https://www.tripadvisor.com/Search?geo=&q=Buck+s+Pocket+State+Park+Alabama
In [3277]:
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
r = requests.get(baseurl,headers=headers)
s = BS(r.text, 'html.parser')
In [3289]:
s.find('div',{'class': 'result ATTRACTIONS'}).find('div', {'class': 'thumbnail'})['onclick'].split("'")[-2]
Out[3289]:
u'/Attraction_Review-g30437-d4427252-Reviews-Blue_Springs_State_Park-Clio_Alabama.html?t=1'
In [ ]:
https://www.tripadvisor.com/Attraction_Review-g30437-d4427252-Reviews-Blue_Springs_State_Park-Clio_Alabama.html?t=1
In [3377]:
state_list = [
('AK', 'Alaska'),
('AL', 'Alabama'),
('AZ', 'Arizona'),
('AR', 'Arkansas'),
('CA', 'California'),
('CO', 'Colorado'),
('CT', 'Connecticut'),
('DE', 'Delaware'),
('FL', 'Florida'),
('GA', 'Georgia'),
('HI', 'Hawaii'),
('ID', 'Idaho'),
('IL', 'Illinois'),
('IN', 'Indiana'),
('IA', 'Iowa'),
('KS', 'Kansas'),
('KY', 'Kentucky'),
('LA', 'Louisiana'),
('ME', 'Maine'),
('MD', 'Maryland'),
('MA', 'Massachusetts'),
('MI', 'Michigan'),
('MN', 'Minnesota'),
('MS', 'Mississippi'),
('MO', 'Missouri'),
('MT', 'Montana'),
('NE', 'Nebraska'),
('NV', 'Nevada'),
('NH', 'New Hampshire'),
('NJ', 'New Jersey'),
('NM', 'New Mexico'),
('NY', 'New York'),
('NC', 'North Carolina'),
('ND', 'North Dakota'),
('OH', 'Ohio'),
('OK', 'Oklahoma'),
('OR', 'Oregon'),
('PA', 'Pennsylvania'),
('RI', 'Rhode Island'),
('SC', 'South Carolina'),
('SD', 'South Dakota'),
('TN', 'Tennessee'),
('TX', 'Texas'),
('UT', 'Utah'),
('VT', 'Vermont'),
('VA', 'Virginia'),
('WA', 'Washington'),
('DC', 'Washington D.C.'),
('WV', 'West Virginia'),
('WI', 'Wisconsin'),
('WY', 'Wyoming')
]
data = []
for state in state_list:
wiki_state_parks = 'https://en.wikipedia.org/wiki/List_of_%s_state_parks' %(state[1])
r = requests.get(wiki_state_parks,headers=headers)
s = BS(r.text, 'html.parser')
tables = s.find_all('table', attrs={'class':'wikitable'})
# print table
# table_body = table.find('tbody')
for table in tables:
rows = table.find_all('tr')
for row in rows:
cols = row.find_all('td')
if not cols:
continue
head_name = row.find('th')
cols = [ele.text.strip() for ele in cols]
temp = [ele for ele in cols if ele][:3]
temp.append(state)
if head_name:
new_temp = [head_name.text.strip()]
new_temp.extend(temp)
data.append(new_temp)
else:
data.append(temp)
# Get rid of empty values
In [3380]:
df_state_park = pd.DataFrame(columns = ['name','counties','state_short','state_long'])
In [3393]:
# for i,v in enumerate(data[:3075]):
# df_state_park.loc[i] = [v[0],v[1],v[-1][0],v[-1][1]]
# for i,v in enumerate(data[3083:]):
# df_state_park.loc[len(df_state_park)] = [v[0],v[1],v[-1][0],v[-1][1]]
df_state_park
df_state_park.to_csv('state_park_wiki_info.csv',encoding='utf-8')
# data[3074:3176]
In [3411]:
baseurl = 'https://www.tripadvisor.com/Search?geo=&q='
df_state_park['tripadvisor_url'] = baseurl + '+'.join(df_state_park.name) +"+"+df_state_park.state_long
# name = "Buck's Pocket State Park"
search_name = [baseurl + '+'.join(v['name'].replace("'", ' ').split())+'+'+v['state_long'] for i,v in df_state_park.iterrows()]
# print search_name
# search_url = baseurl+search_name+'+'+state
# print search_url
In [3419]:
df_state_park.to_csv('state_park_wiki_info_url.csv',encoding='utf-8')
In [3466]:
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
for baseurl in df_state_park['tripadvisor_url'].values[1869:]:
time.sleep(10)
r = requests.get(baseurl,headers=headers)
if r.status_code != 200:
print 'WARNING: ',baseurl
s = BS(r.text, 'html.parser')
try:
a = s.find('div',{'class': 'result ATTRACTIONS'}).find('div', {'class': 'thumbnail'})['onclick'].split("'")[-2]
poi_urls.append((a, baseurl))
except:
print baseurl
poi_urls.append((None, baseurl))
# break
https://www.tripadvisor.com/Search?geo=&q=Old+Dutch+Parsonage+New+Jersey
https://www.tripadvisor.com/Search?geo=&q=Port+Mercer+Canal+House+New+Jersey
https://www.tripadvisor.com/Search?geo=&q=Steuben+House+New+Jersey
https://www.tripadvisor.com/Search?geo=&q=Wallace+House+New+Jersey
https://www.tripadvisor.com/Search?geo=&q=Washington+s+Crossing+Site+New+Jersey
https://www.tripadvisor.com/Search?geo=&q=Lock+32+State+Canal+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Oak+Orchard+State+Marine+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Ogden+Mills+&+Ruth+Livingston+Mills+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Old+Croton+Aqueduct+State+Historic+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Old+Erie+Canal+State+Historic+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Oquaga+Creek+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Orient+Beach+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Peebles+Island+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Pinnacle+State+Park+and+Golf+Course+New+York
https://www.tripadvisor.com/Search?geo=&q=Pixley+Falls+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Point+Au+Roche+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Reservoir+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Riverbank+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Robert+Moses+State+Park+(Long+Island)+New+York
https://www.tripadvisor.com/Search?geo=&q=Robert+Moses+State+Park+(Thousand+Islands)+New+York
https://www.tripadvisor.com/Search?geo=&q=Robert+V.+Riddell+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Robert+H.+Treman+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Robert+G.+Wehle+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Roberto+Clemente+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Rock+Island+Lighthouse+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Rockefeller+State+Park+Preserve+New+York
https://www.tripadvisor.com/Search?geo=&q=Rockland+Lake+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=St.+Lawrence+State+Park+Golf+Course+New+York
https://www.tripadvisor.com/Search?geo=&q=Sampson+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Sandy+Island+Beach+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Saratoga+Lake+State+Boat+Launch+New+York
https://www.tripadvisor.com/Search?geo=&q=Saratoga+Spa+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Schodack+Island+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Schunnemunk+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Selkirk+Shores+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Seneca+Lake+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Shadmoor+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Silver+Lake+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Sonnenberg+Gardens+&+Mansion+State+Historic+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Southwick+Beach+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=State+Park+at+the+Fair+New+York
https://www.tripadvisor.com/Search?geo=&q=Sterling+Forest+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Stony+Brook+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Storm+King+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Strawberry+Island+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Sunken+Meadow+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Taconic+State+Park+-+Copake+Falls+Area+New+York
https://www.tripadvisor.com/Search?geo=&q=Taconic+State+Park+-+Rudd+Pond+Area+New+York
https://www.tripadvisor.com/Search?geo=&q=Tallman+Mountain+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Taughannock+Falls+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Thompson+s+Lake+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Trail+View+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Two+Rivers+State+Park+Recreation+Area+New+York
https://www.tripadvisor.com/Search?geo=&q=Valley+Stream+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Verona+Beach+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Walkway+Over+the+Hudson+State+Historic+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Waterson+Point+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Watkins+Glen+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Wellesley+Island+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Westcott+Beach+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Whetstone+Gulf+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Whirlpool+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Wildwood+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Wilson-Tuscarora+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Wonder+Lake+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Woodlawn+Beach+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Empire+–+Fulton+Ferry+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Frenchman+Island+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Hunts+Pond+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Bay+Tree+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Carolina+Beach+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Carvers+Creek+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Chimney+Rock+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Cliffs+of+the+Neuse+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Crowders+Mountain+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Dismal+Swamp+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Elk+Knob+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Eno+River+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Fort+Macon+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Goose+Creek+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Gorges+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Grandfather+Mountain+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Hammocks+Beach+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Hanging+Rock+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Haw+River+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Jockey+s+Ridge+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Jones+Lake+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Lake+James+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Lake+Norman+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Lake+Waccamaw+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Lumber+River+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Mayo+River+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Medoc+Mountain+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Merchants+Millpond+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Morrow+Mountain+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Mount+Mitchell+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=New+River+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Pettigrew+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Pilot+Mountain+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Raven+Rock+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Singletary+Lake+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=South+Mountains+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Stone+Mountain+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=William+B.+Umstead+State+Park+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Falls+Lake+State+Recreation+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Fort+Fisher+State+Recreation+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Jordan+Lake+State+Recreation+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Kerr+Lake+State+Recreation+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Baldhead+Island+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Bear+Paw+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Beech+Creek+Bog+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Bullhead+Mountain+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Bushy+Lake+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Chowan+Swamp+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Hemlock+Bluffs+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Lea+Island+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Lower+Haw+River+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Masonboro+Island+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Mitchells+Millpond+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Mount+Jefferson+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Occoneechee+Mountain+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Pineola+Bog+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Run+Hill+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Sandy+Run+Savannas+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Sugar+Mountain+Bog+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Theodore+Roosevelt+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Bay+Tree+State+Lake+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Charles+B.+Aycock+Birthplace[19][20]+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=James+Iredell+House[19][20]+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Frenchglen+Hotel+State+Heritage+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Kam+Wah+Chung+State+Heritage+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Hilgard+Junction+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Wallowa+Lake+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Iwetemlaykin+State+Heritage+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Casey+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Prospect+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Joseph+H.+Stewart+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=The+Cove+Palisades+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Jasper+Point+Campground+Oregon
https://www.tripadvisor.com/Search?geo=&q=Prineville+Reservoir+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Heritage+Landing+(Deschutes)+Oregon
https://www.tripadvisor.com/Search?geo=&q=White+River+Falls+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Deschutes+River+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Cline+Falls+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Fort+Rock+State+Natural+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=La+Pine+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Pilot+Butte+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Tumalo+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Peter+Skene+Ogden+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Smith+Rock+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Booth+State+Scenic+Corridor+Oregon
https://www.tripadvisor.com/Search?geo=&q=Chandler+State+Wayside+Oregon
https://www.tripadvisor.com/Search?geo=&q=Geisel+Monument+State+Heritage+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Humbug+Mountain+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Otter+Point+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Paradise+Point+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Port+Orford+Heads+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Cape+Blanco+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Bandon+State+Natural+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Coquille+Myrtle+Grove+State+Natural+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Face+Rock+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Hoffman+Memorial+State+Wayside+Oregon
https://www.tripadvisor.com/Search?geo=&q=Seven+Devils+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Bullards+Beach+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Alfred+A.+Loeb+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Cape+Sebastian+State+Scenic+Corridor+Oregon
https://www.tripadvisor.com/Search?geo=&q=Crissey+Field+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=McVay+Rock+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Pistol+River+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Samuel+H.+Boardman+State+Scenic+Corridor+Oregon
https://www.tripadvisor.com/Search?geo=&q=Winchuck+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Harris+Beach+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Alderwood+State+Wayside+Oregon
https://www.tripadvisor.com/Search?geo=&q=Elijah+Bristow+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Washburne+State+Wayside+Oregon
https://www.tripadvisor.com/Search?geo=&q=Maples+Rest+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Mongold+Day-Use+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=North+Santiam+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Detroit+Lake+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Cape+Arago+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Golden+and+Silver+Falls+State+Natural+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Shore+Acres+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=William+M.+Tugman+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Sunset+Bay+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Illinois+River+Forks+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=TouVelle+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Tub+Springs+State+Wayside+Oregon
https://www.tripadvisor.com/Search?geo=&q=Wolf+Creek+Inn+State+Heritage+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Valley+of+the+Rogue+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Bald+Peak+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Molalla+River+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Champoeg+State+Heritage+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Beaver+Creek+State+Natural+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Bolon+Island+Tideways+State+Scenic+Corridor+Oregon
https://www.tripadvisor.com/Search?geo=&q=Darlingtonia+State+Natural+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Governor+Patterson+Memorial+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Umpqua+Lighthouse+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Beachside+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Carl+G.+Washburne+Memorial+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Heceta+Head+Lighthouse+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Muriel+O.+Ponsler+Memorial+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Neptune+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Smelt+Sands+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Tokatee+Klootchman+State+Natural+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Stonefield+Beach+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=W.+B.+Nelson+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Yachats+Ocean+Road+State+Natural+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Yachats+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Jessie+M.+Honeyman+Memorial+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Erratic+Rock+State+Natural+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Holman+State+Wayside+Oregon
https://www.tripadvisor.com/Search?geo=&q=Maud+Williamson+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Sarah+Helmick+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Willamette+Mission+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Bonnie+Lure+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Mary+S.+Young+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Milo+McIver+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Tryon+Creek+State+Natural+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Banks–Vernonia+State+Trail+Oregon
https://www.tripadvisor.com/Search?geo=&q=Ainsworth+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Benson+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Bridal+Veil+Falls+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Crown+Point+State+Scenic+Corridor+Oregon
https://www.tripadvisor.com/Search?geo=&q=Dabney+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=George+W.+Joseph+State+Natural+Area+(accessible+from+Guy+W.+Talbot+State+Park)+Oregon
https://www.tripadvisor.com/Search?geo=&q=Guy+W.+Talbot+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Historic+Columbia+River+Highway+State+Trail+Oregon
https://www.tripadvisor.com/Search?geo=&q=John+B.+Yeon+State+Scenic+Corridor+Oregon
https://www.tripadvisor.com/Search?geo=&q=Koberg+Beach+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Lewis+and+Clark+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Mayer+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Memaloose+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Portland+Women+s+Forum+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Seneca+Fouts+Memorial+State+Natural+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Shepperd+s+Dell+State+Natural+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Sheridan+State+Scenic+Corridor+Oregon
https://www.tripadvisor.com/Search?geo=&q=Starvation+Creek+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Viento+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Vinzenz+Lausmann+Memorial+State+Natural+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Wygant+State+Natural+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Rooster+Rock+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Bradley+State+Scenic+Viewpoint+Oregon
https://www.tripadvisor.com/Search?geo=&q=Del+Rey+Beach+State+Recreation+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Fort+Stevens+State+Park+Oregon
https://www.tripadvisor.com/Search?geo=&q=Ellmaker+State+Wayside+Oregon
https://www.tripadvisor.com/Search?geo=&q=Pete+French+Round+Barn+State+Heritage+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Allegheny+River+State+Park[3]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Blue+Marsh+State+Park[2][3]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Brandywine+Battlefield+State+Park[3][22]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Bushy+Run+Battlefield+State+Park[3][24]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Colerain+State+Park[3]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Conrad+Weiser+Memorial+Park[3]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Crooked+Creek+State+Park[2][3][28]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Curwensville+State+Park[2][3][30]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Drake+Well+State+Park[3][32]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Fort+Necessity+State+Park[3][33]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=George+W.+Childs+State+Park[3][9][35][36]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Hemlock+State+Forest+Park[38]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Independence+Mall+State+Park[3][4][40]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Moosic+Lake+State+Park[3]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Snyder-Middleswarth+State+Park[3][42][d]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Valley+Forge+State+Park[3][7]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Voneida+State+Forest+Park[3][46]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Braddock+Grave+State+Park[47]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Hairy+John+s+State+Forest+Park[3]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Beavertail+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Blackstone+River+Bikeway+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Brenton+Point+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Burlingame+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Colt+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Fishermen+s+Memorial+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Fort+Adams+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Fort+Wetherill+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Goddard+Memorial+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Haines+Memorial+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Lincoln+Woods+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Pulaski+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Rocky+Point+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Snake+Den+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=World+War+II+Memorial+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Charlestown+Breachway+State+Beach+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=East+Beach+State+Beach+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=East+Matunuck+State+Beach+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Misquamicut+State+Beach+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Roger+Wheeler+State+Beach+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Salty+Brine+State+Beach+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Scarborough+State+Beach+Complex+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Arcadia+Management+Area+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Beach+Pond+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=East+Bay+Bike+Path+State+Park+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=George+Washington+State+Campground+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=John+H.+Chafee+Nature+Preserve+Rhode+Island
https://www.tripadvisor.com/Search?geo=&q=Abilene+State+Park+Texas
https://www.tripadvisor.com/Search?geo=&q=Atlanta+State+Park+Texas
https://www.tripadvisor.com/Search?geo=&q=Balmorhea+State+Park+Texas
https://www.tripadvisor.com/Search?geo=&q=Bastrop+State+Park+Texas
https://www.tripadvisor.com/Search?geo=&q=Anasazi+State+Park+Museum+Utah
https://www.tripadvisor.com/Search?geo=&q=Antelope+Island+State+Park+Utah
https://www.tripadvisor.com/Search?geo=&q=Bear+Lake+State+Park+Utah
https://www.tripadvisor.com/Search?geo=&q=Camp+Floyd+/+Stagecoach+Inn+State+Park+and+Museum+Utah
https://www.tripadvisor.com/Search?geo=&q=Coral+Pink+Sand+Dunes+State+Park+Utah
https://www.tripadvisor.com/Search?geo=&q=Dead+Horse+Point+State+Park+Utah
https://www.tripadvisor.com/Search?geo=&q=Camp+Wooten+Retreat+Center+Washington
https://www.tripadvisor.com/Search?geo=&q=Lake+Easton+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Lake+Isabella+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Lake+Sammamish+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Lake+Sylvia+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Lake+Wenatchee+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Larrabee+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Leadbetter+Point+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Lewis+and+Clark+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Lewis+and+Clark+Trail+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Lime+Kiln+Point+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Lincoln+Rock+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Lyons+Ferry+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Loomis+Lake+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Manchester+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Maryhill+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Matia+Island+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=McMicken+Island+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Millersylvania+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Moran+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Mount+Pilchuck+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Mount+Spokane+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Mystery+Bay+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Nolte+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Obstruction+Pass+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Ocean+City+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Olallie+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Olmstead+Place+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Pacific+Beach+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Pacific+Pines+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Palouse+Falls+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Paradise+Point+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Patos+Island+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Peace+Arch+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Pearrygin+Lake+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Penrose+Point+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Peshastin+Pinnacles+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Pleasant+Harbor+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Posey+Island+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Potholes+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Potlatch+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Rainbow+Falls+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Rasar+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Reed+Island+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Riverside+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Rockport+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Rothschild+House+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Sacajawea+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Saddlebag+Island+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Saint+Edward+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Saltwater+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Scenic+Beach+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Schafer+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Seaquest+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Sequim+Bay+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Shine+Tidelands+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Skagit+Island+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Skull+Island+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=South+Whidbey+Island+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Spencer+Spit+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Spring+Creek+Hatchery+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Squak+Mountain+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Squilchuck+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Steamboat+Rock+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Steptoe+Battlefield+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Steptoe+Butte+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Stretch+Point+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Stuart+Island+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Sucia+Island+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Sun+Lakes-Dry+Falls+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Tolmie+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Triton+Cove+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Turn+Island+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Twanoh+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Twenty-Five+Mile+Creek+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Twin+Harbors+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Wallace+Falls+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Wenatchee+Confluence+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Westhaven+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Westport+Light+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Yakima+Sportsman+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Central+Ferry+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Chief+Timothy+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Crow+Butte+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Damon+Point+Washington
https://www.tripadvisor.com/Search?geo=&q=Fay+Bainbridge+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Fort+Okanogan+Washington
https://www.tripadvisor.com/Search?geo=&q=Fort+Ward+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Griffin+Bay+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Hanging+Gardens+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Mukilteo+Lighthouse+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Osoyoos+Lake+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Upright+Channel+State+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Wenberg+County+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=West+Hylebos+Wetlands+Park+Washington
https://www.tripadvisor.com/Search?geo=&q=Audra+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Babcock+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Beartown+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Beech+Fork+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Cabell+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Berkeley+Springs+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Blackwater+Falls+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Blennerhassett+Island+Historical+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Bluestone+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Cacapon+Resort+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Camp+Creek+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Canaan+Valley+Resort+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Carnifex+Ferry+Battlefield+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Cass+Scenic+Railroad+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Cathedral+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Cedar+Creek+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Chief+Logan+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Droop+Mountain+Battlefield+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Fairfax+Stone+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Preston+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Greenbrier+River+Trail+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Pocahontas+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Hawks+Nest+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Holly+River+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Little+Beaver+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Lost+River+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Moncove+Lake+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=North+Bend+Rail+Trail+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Harrison+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Ritchie+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Wood+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=North+Bend+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Pinnacle+Rock+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Pipestem+Resort+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Summers+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Prickett+s+Fort+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Stonewall+Jackson+Lake+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Tomlinson+Run+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Tu-Endi-Wei+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Twin+Falls+Resort+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Tygart+Lake+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Valley+Falls+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Taylor+West+Virginia
In [3452]:
# poi_urls.append(('https://www.tripadvisor.com/Search?geo=&q=Reynolds+Wayside+Campground+California', baseurl))
poi_urls.append((None, baseurl))
In [3463]:
df_state_park['tripadvisor_url'] = [item.replace(' ','+') for item in df_state_park['tripadvisor_url'].values]
In [3464]:
df_state_park['tripadvisor_url'][1869]
Out[3464]:
u'https://www.tripadvisor.com/Search?geo=&q=Long+Pond+Ironworks+Historic+District+New+Jersey'
In [3501]:
df_poi_urls2 = pd.DataFrame(columns = ['tripadvisor_poi_url','search_url'])
In [3507]:
for i in poi_urls:
df_poi_urls2.loc[len(df_poi_urls2)] = i
In [3508]:
df_poi_urls2.to_csv('updated_df_poi_urls2',encoding='utf-8')
In [3499]:
for i, item in enumerate(poi_urls):
if ('Connecticut' in item[1]) or ('Fish+&+Wildlife+Area+Illinois'in item[1]) or ('Resort' in item[1])\
or ('Maine' in item[1]):
print 'skip', item[1]
continue
if not item[0]:
r = requests.get(item[1],headers=headers)
if r.status_code != 200:
print 'WARNING: ',baseurl
s = BS(r.text, 'html.parser')
# time.sleep(10)
try:
a = s.find('div',{'class': 'result ATTRACTIONS'}).find('div', {'class': 'thumbnail'})['onclick'].split("'")[-2]
poi_urls[i] = (a, item[1])
except:
print item[1]
skip https://www.tripadvisor.com/Search?geo=&q=Lakepoint+Resort+State+Park+Alabama
skip https://www.tripadvisor.com/Search?geo=&q=DeGray+Lake+Resort+State+Park+Arkansas
skip https://www.tripadvisor.com/Search?geo=&q=Above+All+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Air+Line+State+Park+Trail+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Beaver+Brook+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Becket+Hill+State+Park+Reserve+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Beckley+Furnace+Industrial+Monument+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Bennett+s+Pond+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Bigelow+Hollow+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Black+Rock+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Bluff+Point+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Bolton+Notch+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Brainard+Homestead+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Burr+Pond+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Camp+Columbia+State+Park/State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Campbell+Falls+State+Park+Reserve+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Chatfield+Hollow+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Collis+P.+Huntington+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Connecticut+Valley+Railroad+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Dart+Island+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Day+Pond+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Dennis+Hill+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Devil+s+Hopyard+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Dinosaur+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Eagle+Landing+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Farm+River+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Farmington+Canal+State+Park+Trail+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Fort+Griswold+Battlefield+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Fort+Trumbull+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Gardner+Lake+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Gay+City+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=George+Dudley+Seymour+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=George+Waldo+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Gillette+Castle+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Haddam+Island+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Haddam+Meadows+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Haley+Farm+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Hammonasset+Beach+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Harkness+Memorial+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Haystack+Mountain+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Higganum+Reservoir+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Hop+River+State+Park+Trail+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Hopemead+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Hopeville+Pond+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Horse+Guard+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Housatonic+Meadows+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Humaston+Brook+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Hurd+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Indian+Well+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=John+A.+Minetto+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Kent+Falls+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Kettletown+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Killingly+Pond+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Lake+Waramaug+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Lamentation+Mountain+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Larkin+State+Park+Trail+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Lovers+Leap+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Macedonia+Brook+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Machimoodus+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Mansfield+Hollow+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Mashamoquet+Brook+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Mianus+River+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Millers+Pond+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Minnie+Island+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Mohawk+Forest/Mohawk+Mountain+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Mono+Pond+State+Park+Reserve+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Moosup+Valley+State+Park+Trail+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Mooween+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Mount+Bushnell+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Mount+Riga+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Mount+Tom+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Old+Furnace+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Osbornedale+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Penwood+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Platt+Hill+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Pomeroy+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Putnam+Memorial+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Quaddick+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Quinebaug+Lake+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Quinnipiac+River+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=River+Highlands+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Rocky+Glen+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Rocky+Neck+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Ross+Pond+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Salt+Rock+State+Campground+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Satan+s+Kingdom+State+Recreation+Area+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Scantic+River+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Selden+Neck+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Seth+Low+Pierrepont+State+Park+Reserve+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Sherwood+Island+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Silver+Sands+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Sleeping+Giant+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Southford+Falls+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Squantz+Pond+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Stillwater+Pond+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Stoddard+Hill+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Stratton+Brook+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Sunnybrook+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Sunrise+Resort+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Talcott+Mountain+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Tri-Mountain+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Trout+Brook+Valley+State+Park+Reserve+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Wadsworth+Falls+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=West+Rock+Ridge+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Wharton+Brook+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Whittemore+Glen+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Windsor+Locks+Canal+State+Park+Trail+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Windsor+Meadows+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Wooster+Mountain+State+Park+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Algonquin+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=American+Legion+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Camp+Columbia+State+Park/State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Centennial+Watershed+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Cockaponset+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Enders+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Housatonic+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=James+L.+Goodwin+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Massacoe+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Mattatuck+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Meshomasic+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Mohawk+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Mohegan+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Nassahegon+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Natchaug+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Nathan+Hale+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Naugatuck+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Nehantic+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Nepaug+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Nipmuck+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Nye-Holman+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Pachaug+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Paugnut+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Paugussett+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Peoples+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Pootatuck+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Quaddick+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Salmon+River+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Shenipsit+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Topsmead+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Tunxis+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Wyantenock+State+Forest+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Burlington+Trout+Hatchery+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Quinebaug+Valley+Trout+Hatchery+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Franklin+Wildlife+Management+Area+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Sessions+Woods+Wildlife+Management+Area+Connecticut
skip https://www.tripadvisor.com/Search?geo=&q=Anderson+Lake+State+Fish+&+Wildlife+Area+Illinois
skip https://www.tripadvisor.com/Search?geo=&q=Baldwin+Lake+State+Fish+&+Wildlife+Area+Illinois
skip https://www.tripadvisor.com/Search?geo=&q=Heidecke+Lake+State+Fish+&+Wildlife+Area+Illinois
skip https://www.tripadvisor.com/Search?geo=&q=Horseshoe+Lake+State+Fish+&+Wildlife+Area+Illinois
skip https://www.tripadvisor.com/Search?geo=&q=Kaskaskia+River+State+Fish+&+Wildlife+Area+Illinois
skip https://www.tripadvisor.com/Search?geo=&q=LaSalle+Lake+State+Fish+&+Wildlife+Area+Illinois
skip https://www.tripadvisor.com/Search?geo=&q=Marshall+State+Fish+&+Wildlife+Area+Illinois
https://www.tripadvisor.com/Search?geo=&q=Newton+Lake+State+Fish+and+Wildlife+Area+Illinois
https://www.tripadvisor.com/Search?geo=&q=Sam+Parr+State+Fish+and+Wildlife+Area+Illinois
skip https://www.tripadvisor.com/Search?geo=&q=Silver+Springs+State+Fish+&+Wildlife+Area+Illinois
skip https://www.tripadvisor.com/Search?geo=&q=Ten+Mile+Creek+State+Fish+&+Wildlife+Area+Illinois
https://www.tripadvisor.com/Search?geo=&q=Woodford+State+Fish+and+Wildlife+Area+Illinois
https://www.tripadvisor.com/Search?geo=&q=O+Bannon+Woods+Indiana
https://www.tripadvisor.com/Search?geo=&q=Brushy+Creek+State+Recreation+Area+Iowa
https://www.tripadvisor.com/Search?geo=&q=Fairport+State+Recreation+Area+Iowa
skip https://www.tripadvisor.com/Search?geo=&q=Honey+Creek+Resort+State+Park+Iowa
https://www.tripadvisor.com/Search?geo=&q=Lower+Gar+State+Recreation+Area+Iowa
https://www.tripadvisor.com/Search?geo=&q=Pleasant+Creek+State+Recreation+Area+Iowa
https://www.tripadvisor.com/Search?geo=&q=Wilson+Island+State+Recreation+Area+Iowa
skip https://www.tripadvisor.com/Search?geo=&q=Barren+River+Lake+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Buckhorn+Lake+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Carter+Caves+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Cumberland+Falls+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=General+Butler+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Greenbo+Lake+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Jenny+Wiley+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Kenlake+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Kentucky+Dam+Village+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Lake+Barkley+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Lake+Cumberland+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Natural+Bridge+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Pennyrile+Forest+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Pine+Mountain+State+Resort+Park+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Rough+River+Dam+State+Resort+Park+Kentucky
https://www.tripadvisor.com/Search?geo=&q=Butler-Turpin+State+Historic+House+Kentucky
skip https://www.tripadvisor.com/Search?geo=&q=Allagash+Wilderness+Waterway+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Androscoggin+Riverlands+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Aroostook+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Baxter+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Birch+Point+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Bradbury+Mountain+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Camden+Hills+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Cobscook+Bay+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Crescent+Beach+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Damariscotta+Lake+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Ferry+Beach+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Fort+Point+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Grafton+Notch+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Holbrook+Island+Sanctuary+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Lake+St.+George+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Lamoine+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Lily+Bay+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Mackworth+Island+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Moose+Point+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Mount+Blue+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Mount+Kineo+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Owls+Head+Light+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Peacock+Beach+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Peaks-Kenny+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Penobscot+River+Corridor+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Popham+Beach+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Quoddy+Head+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Range+Ponds+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Rangeley+Lake+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Reid+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Roque+Bluffs+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Sebago+Lake+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Shackford+Head+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Swan+Lake+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Two+Lights+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Vaughan+Woods+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Warren+Island+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Wolfe+s+Neck+Woods+State+Park+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Bible+Point+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Colburn+House+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Colonial+Pemaquid+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Eagle+Island+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Fort+Baldwin+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Fort+Edgecomb+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Fort+Halifax+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Fort+Kent+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Fort+Knox+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Fort+McClary+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Fort+O+Brien+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Fort+Popham+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Fort+Pownall+Maine
skip https://www.tripadvisor.com/Search?geo=&q=John+Paul+Jones+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Katahdin+Iron+Works+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Storer+Garrison+State+Historic+Site+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Whaleback+Shell+Midden+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Bald+Mountain+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Bigelow+Preserve+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Bradley+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Chains+of+Ponds+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Chamberlain+Lake+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Cutler+Coast+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Day+s+Academy+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Dead+River+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Deboullie+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Dodge+Point+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Donnell+Pond+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Duck+Lake+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Eagle+Lake+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Four+Ponds+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Gero+Island+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Great+Heath+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Holeb+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Kennebec+Highlands+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Little+Moose+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Machias+River+Corridor+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Mahoosuc+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Moosehead+Lake+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Mount+Abram+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Nahmakanta+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Pineland+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Richardson+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Rocky+Lake+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Round+Pond+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Salmon+Brook+Lake+Bog+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Scraggly+Lake+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Scopan+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Seboeis+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Seboomook+Unit+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Telos+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Tumbledown+Maine
skip https://www.tripadvisor.com/Search?geo=&q=Wassataquoik+Maine
https://www.tripadvisor.com/Search?geo=&q=Camp+Nihan+Environmental+Education+Camp+Massachusetts
skip https://www.tripadvisor.com/Search?geo=&q=Connecticut+River+Greenway+State+Park+Massachusetts
https://www.tripadvisor.com/Search?geo=&q=Freetown-Fall+River+State+Forest+Massachusetts
https://www.tripadvisor.com/Search?geo=&q=Monroe+State+Forest+Massachusetts
https://www.tripadvisor.com/Search?geo=&q=Rumney+Marsh+Reservation+Massachusetts
https://www.tripadvisor.com/Search?geo=&q=Winthrop+Shore+Reservation+Massachusetts
https://www.tripadvisor.com/Search?geo=&q=Abram+S.+Hewitt+State+Forest+New Jersey
https://www.tripadvisor.com/Search?geo=&q=Clarke+House+New Jersey
https://www.tripadvisor.com/Search?geo=&q=Craig+House+New Jersey
https://www.tripadvisor.com/Search?geo=&q=Hancock+House+New Jersey
https://www.tripadvisor.com/Search?geo=&q=Indian+King+Tavern+New Jersey
https://www.tripadvisor.com/Search?geo=&q=Old+Dutch+Parsonage+New+Jersey
https://www.tripadvisor.com/Search?geo=&q=Steuben+House+New+Jersey
https://www.tripadvisor.com/Search?geo=&q=Wallace+House+New+Jersey
https://www.tripadvisor.com/Search?geo=&q=Washington+s+Crossing+Site+New+Jersey
https://www.tripadvisor.com/Search?geo=&q=Lock+32+State+Canal+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Ogden+Mills+&+Ruth+Livingston+Mills+State+Park+New+York
https://www.tripadvisor.com/Search?geo=&q=Pineola+Bog+State+Natural+Area+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Bay+Tree+State+Lake+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=Charles+B.+Aycock+Birthplace[19][20]+North+Carolina
https://www.tripadvisor.com/Search?geo=&q=James+Iredell+House[19][20]+North+Carolina
skip https://www.tripadvisor.com/Search?geo=&q=Indian+Hills+State+Recreation+Area+and+Resort+North+Dakota
https://www.tripadvisor.com/Search?geo=&q=Frenchglen+Hotel+State+Heritage+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Kam+Wah+Chung+State+Heritage+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Hilgard+Junction+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Golden+and+Silver+Falls+State+Natural+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Tub+Springs+State+Wayside+Oregon
https://www.tripadvisor.com/Search?geo=&q=Wolf+Creek+Inn+State+Heritage+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Yachats+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Holman+State+Wayside+Oregon
https://www.tripadvisor.com/Search?geo=&q=Bonnie+Lure+State+Recreation+Area+Oregon
https://www.tripadvisor.com/Search?geo=&q=Ellmaker+State+Wayside+Oregon
https://www.tripadvisor.com/Search?geo=&q=Pete+French+Round+Barn+State+Heritage+Site+Oregon
https://www.tripadvisor.com/Search?geo=&q=Conrad+Weiser+Memorial+Park[3]+Pennsylvania
https://www.tripadvisor.com/Search?geo=&q=Camp+Wooten+Retreat+Center+Washington
https://www.tripadvisor.com/Search?geo=&q=Cabell+West+Virginia
skip https://www.tripadvisor.com/Search?geo=&q=Cacapon+Resort+West+Virginia
skip https://www.tripadvisor.com/Search?geo=&q=Canaan+Valley+Resort+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Cedar+Creek+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Chief+Logan+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Fairfax+Stone+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=North+Bend+West+Virginia
https://www.tripadvisor.com/Search?geo=&q=Pinnacle+Rock+West+Virginia
skip https://www.tripadvisor.com/Search?geo=&q=Pipestem+Resort+West+Virginia
skip https://www.tripadvisor.com/Search?geo=&q=Twin+Falls+Resort+West+Virginia
In [3604]:
from bs4 import BeautifulSoup as BS
from googleplaces import GooglePlaces, types, lang
import requests
from geopy.geocoders import Nominatim
import json
import pandas as pd
from pymongo import MongoClient
from pymongo.errors import DuplicateKeyError, CollectionInvalid
import datetime as dt
import time
import pickle
db_cilent = MongoClient()
db = db_cilent['zoeshrm']
# table = db['TripAdvisor']
table = db['TripAdvisor_state_park']
# state_park_urls = df_poi_urls2.tripadvisor_poi_url
# state_park_urls_u = state_park_urls.drop_duplicates()
def state_park_details(poi_url):
try:
r = requests.get(poi_url)
except:
print 'poi_url', poi_url
print 'too fast, take 5 min break'
# time.sleep(5*60)
# r = requests.get(poi_url)
if r.status_code != 200:
print 'WARNING: ', poi_url, r.status_code
else:
s = BS(r.text, 'html.parser')
try:
table.insert({'url':poi_url,
'html': s.decode('utf8')
})
# print poi_url, 'ok'
except:
print 'DUPS!'
print 'poi_url', poi_url
print 'too fast, take 5 min break'
time.sleep(5*60)
r = requests.get(poi_url)
for url in state_park_urls_u.loc[572:1500]:
new_url = 'https://www.tripadvisor.com'+url
state_park_details(new_url)
/Users/zoesh/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:34: DeprecationWarning: insert is deprecated. Use insert_one or insert_many instead.
In [3603]:
state_park_urls_u.loc[572] = '/Attraction_Review-g1900178-d1632680-Reviews-Holts_Landing_State_Park-Millville_Delaware.html'
In [3586]:
'https://www.tripadvisor.com/Attraction_Review-g1900178-d1632680-Reviews-Holts_Landing_State_Park-Millville_Delaware.html' in state_park_urls_u.loc[570:590].values
Out[3586]:
True
In [3596]:
state_park_urls_u.loc[572] = '/Attraction_Review-g1900178-d1632680-Reviews-Holts_Landing_State_Park-Millville_Delaware.html'
In [3601]:
for url in state_park_urls_u.loc[572:573]:
new_url = 'https://www.tripadvisor.com'+url
print new_url
https://www.tripadvisor.com/Attraction_Review-g1900178-d1632680-Reviews-Holts_Landing_State_Park-Millville_Delaware.html
https://www.tripadvisor.com/Attraction_Review-g34013-d2230529-Reviews-Killens_Pond_State_Park-Felton_Delaware.html?t=1
In [3600]:
new_url
Out[3600]:
'https://www.tripadvisor.coml'
In [15]:
from bs4 import BeautifulSoup as BS
import requests
from requests.utils import quote
user_agent = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3'
headers = { 'User-Agent' : user_agent }
poi_name = 'Golden Gate Bridge'
googleUrl = "https://www.google.com/search?tbm=isch&q=" + quote(poi_name, safe='');
response = requests.get(googleUrl, headers=headers)
soup = BS(response.text, 'html.parser')
soup.select("[data-src]")[1]['data-src']
# Document doc1 = Jsoup.connect(googleUrl).userAgent(ua).timeout(10 * 1000).get();
# Element media = doc1.select("[data-src]").first();
# String finUrl = media.attr("abs:data-src");
# def main():
# activities = []
# soup = dl_page_src(base_url + location_url)
# # get the lazy loaded image list
# image_list = get_image_list(soup)
# # get last element in the pagenation (i.e.: total number of pages)
# page_count = int(soup.select('.pagination a')[-1].text.strip())
# for page_no in range(page_count):
# # our formula to compute the next url to download:
# # [page_no * 30]
# # page 1: base_url + location_url
# # page 2: base_url + 'oa' + [page_no * 30] + '-' + location_url
# # etc ...
# page_results = soup.select('#FILTERED_LIST .attraction_element')
# # loop over all elements and extract the useful data
# for result in page_results:
# title = result.select('.property_title a')[0].text.strip()
# rating_obj = result.select('.rate_no')
# pattern = re.compile('\srate_no\sno(\d{2})"')
# matches = pattern.search(str(rating_obj))
# if matches:
# print(matches.group(1))
# rating = matches.group(1)
# total_reviews = result.select('.rating .more a')[0].text.strip().replace(' reviews', '')
# else:
# rating = '0'
# total_reviews = '0'
# popularity = result.select('.popRanking')[0].text.strip()
# review_url = ta_url + result.select('a.photo_link')[0]['href']
# # get image url
# lazy_load_obj = result.select('.photo_booking a img')
# if lazy_load_obj[0].has_attr('id'):
# lazy_load_id = lazy_load_obj[0]['id']
# image_obj = [x['data'] for x in image_list if x['id'] == lazy_load_id]
# image_url = image_obj[0]
# else:
# image_url = 'static/images/generic.jpg'
# activities.append({
# 'title': title,
# 'rating': rating,
# 'reviews': total_reviews,
# 'popularity': popularity,
# 'review_url': review_url,
# 'image_url': image_url
# })
# # compute the url for the next page
# next_page = base_url + 'oa' + str((page_no + 1) * 30) + '-' + location_url
# time.sleep(15)
# dl_page_src(next_page)
# with open('tripadvisor.html', encoding='utf-8') as page_src:
# source = page_src.read()
# soup = BeautifulSoup(source, 'html.parser')
# # get the lazy loaded image list
# image_list = get_image_list(soup)
# with open('activities.json', 'w', encoding='utf-8') as output:
# output.write(json.dumps(activities, indent=4))
# def dl_page_src(url):
# print(url)
# response = requests.get(url, headers=headers)
# s = BS(response.text, 'html.parser')
# return s
Out[15]:
u'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSWqyDltGxZstf-vMZnKpx4unJKREKmxsYQdfRlCvhCIMbLijPAMw'
In [ ]:
Content source: kennethcc2005/travel_with_friends
Similar notebooks: