Я Иcпользую связку Selenium и PhantomJs илиChrome
Он предварительно рендерит страницу dв браузере,что позволяет парсить любые динамические страницы.
Пример парсинга Ютуба
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.youtube.com/results?search_query=" + "guitar+lessons")
results = driver.find_elements_by_xpath('//div[@class="yt-lockup-content"]')
print(len(results))
for result in results:
video = result.find_element_by_xpath('.//h3/a')
title = video.get_attribute('title')
url = video.get_attribute('href')
print("{} ({})".format(title, url))
driver.quit()
Результат:
Guitar Lessons for Beginners in 21 days #1 | How to play guitar for beginners (https://www.youtube.com/watch?v=orp7WHibnaU)
GuitarLessons.com (https://www.youtube.com/user/guitarlessonscom)
Play TEN guitar songs with two EASY chords | Beginners first guitar lesson (https://www.youtube.com/watch?v=Jg-BRpn38L8)
....more