BeautifulSoup无法刮取某些页面,而是刮擦根页面

时间:2017-01-26 19:16:04

标签: python web web-scraping beautifulsoup

我在从特定页面抓取信息时遇到了麻烦。

我想从网址 http://csgo-stats.com/epsilon-/ 收集数据,但由于网站处理的方式,BeautifulSoup只从根页面收集数据,又名 {{3} }

是否有重定向导致BS绊倒?我可以在HTML中看到BS输出它试图加载我的数据但是BS捕获的速度太快

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

以下是我正在使用的代码,以防万一:

from urllib.request import urlopen
from bs4 import BeautifulSoup

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

2 个答案:

答案 0 :(得分:0)

问题是urllib.request不处理Javascript。尝试访问禁用Javascript的页面。有关启用javascript的抓取功能的更多信息:Web-scraping JavaScript page with Python

如果提供API(Getting CS:GO player stats

,最好避免抓取

答案 1 :(得分:0)

虽然大多数http内容库(美丽的汤,请求......)都会让您获得页面源,但这并不是页面在浏览器中呈现后的外观。这与今天构建HTML代码的方式有关,这是因为当页面上的所有JavaScript都能正常工作时,大部分页面呈现都会发生。这正是您没有看到“最终”内容的原因。

现在,如果您希望以播放所有JavaScript音乐后浏览器呈现方式收集内容,那么您需要另一种(python)库,该库是Selenium。

有关Selenium的更多信息:http://www.seleniumhq.org/

只是为了警告你,硒是一种非常大的野兽,有许多毛茸茸的末端,但学习它是值得的(不仅仅是为了刮痧)