2017-01-26 4 views
0

У меня возникают проблемы соскабливания информации с определенной страницы.BeautifulSoup не может сломать определенную страницу, вместо этого обрывает корневую страницу

Я хочу, чтобы собрать данные из URL http://csgo-stats.com/epsilon-/, но благодаря тому, как веб-сайт обрабатывает вещи BeautifulSoup только сбор данных из корневой страницы, иначе http://csgo-stats.com

Есть ли редирект происходит Thats отключающих вверх BS? Я могу видеть в HTML, что BS выводит, что его пытается загрузить свои данные, но BS захватывает слишком быстро

<main class="site-content" id="content"> 
     <div class="loading-spinner" data-request="epsilon-" id="load"> 
      Loading 
     </div> 

Вот код Im работает с только в случае его необходимости:

from urllib.request import urlopen 
from bs4 import BeautifulSoup 

url = "http://csgo-stats.com/Epsilon-/" 
soup = BeautifulSoup(urlopen(url)) 
print(soup.prettify()) 

Любой совет? Благодаря!

+0

Попробуйте это тот, который эмулирует браузер и должен выполнить javascript отлично: http://phantomjs.org/ – tim

+0

Или вы могли бы просто [использовать API Steam напрямую] (http://stackoverflow.com/q/27752856/344286) –

+0

Просто чтобы вы знали, нет необходимости редактировать благодарность в свой вопрос после того, как вы получили ответ. Если вы обнаружили что-то существенное, на которое не распространяется существующий ответ, вы можете сами создать свой собственный ответ. – halfer

ответ

0

Проблема в том, что urllib.request не обрабатывает Javascript. Попробуйте посетить страницу с отключенным Javascript. Еще на JavaScript-включен соскоба: Web-scraping JavaScript page with Python

Это всегда лучше, чтобы избежать соскоб, если API предусмотрен (Getting CS:GO player stats)

+0

Я действительно не знал о паровом API, если честно. Используя эту проблему, я обойду всю свою проблему. Спасибо, что дали мне знать! Я выбрал ваш ответ как решение, как его самое легкое и точно то, что мне нужно, без лишних хлопот. Благодаря! –

0

В то время как большинство библиотек контента HTTP (красивый суп, запросы, ...) хотел бы получить вам это не так, как выглядит страница, когда она отображается в браузере. Это связано с тем, как сегодня создается HTML-код, и потому, что большая часть рендеринга страницы происходит позже, когда все JavaScript на странице делает это. Именно поэтому вы не видите «окончательный» контент.

Теперь, если вы хотите собрать контент таким образом, как браузер отобразит его после воспроизведения музыки JavaScript, вам понадобится библиотека другого типа (python), а эта библиотека - Selenium.

Больше на Selenium на: http://www.seleniumhq.org/

Просто, чтобы предупредить вас, что селен является довольно большой зверь с большим количеством волосатых концов, но учить его стоит (не только для соскабливания)

+0

Я обязательно посмотрю на это. спасибо –

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

  • Нет связанных вопросов^_^