2016-01-03 5 views
1

Я пытаюсь очистить счетчик комментариев с веб-страницы. Код представлен ниже.Очистка раздела комментариев веб-страницы

Когда я прошу распечатать letters, выход представляет собой пустой список. Почему это происходит?

import urllib2 
from bs4 import BeautifulSoup 
r2 = urllib2.urlopen("http://www.ign.com/articles/2016/01/03/steam-surpasses-12-million-concurrent-users").read() 

soup2 = BeautifulSoup(r2) 
letters = soup2.find_all("div",class_="fyre-comment-count") 
print letters 

ответ

-2

Ваш код очень близко, почти справа. Вы просто пропустили несколько вещей. Проверьте код ниже.

import urlparse 
from bs4 import BeautifulSoup 
import urllib2 
r2 = urllib2.urlopen("http://www.ign.com/articles/2016/01/03/steam-surpasses-12-million-concurrent-users").read() 
soup = BeautifulSoup(r2, 'html.parser') 
for line in soup.find_all("div",class_="fyre-comment-count"): 
    comments = ''.join(line.find_all(text=True)) 
    print (comments) 
3

Список пуст, потому что не нет комментариев на этой странице. div#livefyre-comment пуст, и div.fyre-comment-count не существует.

В заголовке страницы есть подозрительный тег script, потянув за JavaScript с http://cdn.livefyre.com/Livefyre.js. Я не знаю, что такое Livefyre, но я полагаю, что он отвлекает комментарии от базы данных где-то и вставляет их в div#livefyre-comment или его окрестности div.article-comments. Предположительно, div.fyre-comment-count также появится где-то в DOM после завершения сценария.

Такое решение ... все чаще встречается на веб-сайтах. Чтобы увидеть, что действительно выглядит веб-страница , просмотрите ее с помощью JavaScript и файлов cookie (и будьте готовы к случайной «внутренней внутренней ошибке сервера» с сайтов, которые никогда не предполагали, что такое хулиганство было возможно).

Я не знаю достаточно о скрипинге экрана, чтобы сообщить вам, куда идти отсюда. Вы могли бы скомпоновать URL-адрес, чтобы получать комментарии (и их счет) непосредственно из Livefyre. Я бы начал с изучения функций JavaScript, которые они предоставляют, и атрибута data-settingsdiv#livefyre-comment, который выглядит как словарь JSON, полный соответствующих параметров.

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