2016-02-28 5 views

ответ

4

Пока не доступен через публичный API.

3

Единственный способ, которым я нашел, - систематически очищать постоянные ссылки, используя автоматизацию браузера, такую ​​как Seleniuim (с некоторой логикой обработки форматирования, например, 5,6 тыс. Точек против 10246 просмотров) и выделения соответствующего элемента. Простой запрос GET не дает желаемого DOM из-за отсутствия обнаруженного javascript.

В питона:

from bs4 import BeautifulSoup 
from selenium import webdriver 

def insertViews(posts): 
    driver = webdriver.PhantomJS('<path-to-phantomjs-driver-ignoring-escapes>') 
    views_span_dom_path = '._9jphp > span' 

    for post in posts: 
     post_type = post.get('Type') 
     link = post.get('Link') 
     views = post.get('Views') 

     if post_type == 'video': 
      driver.get(link) 
      html = driver.page_source 

      soup = BeautifulSoup(html, "lxml") 
      views_string_results = soup.select(views_span_dom_path) 
      if len(views_string_results) > 0: 
       views_string = views_string_results[0].get_text() 
      if 'k' in views_string: 
       views = float(views_string.replace('k', '')) * 1000 
      elif ',' in views_string: 
       views = float(views_string.replace(',', '')) 
      elif 'k' not in views_string and ',' not in views_string: 
       views = float(views_string) 
     else: 
      views = None 

     post['Views'] = views 
    driver.quit() 
    return posts 

Драйвер PhantomJS можно скачать here.

Смежные вопросы