我在从特定页面抓取信息时遇到了麻烦。
我想从网址 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())
答案 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/
只是为了警告你,硒是一种非常大的野兽,有许多毛茸茸的末端,但学习它是值得的(不仅仅是为了刮痧)