我正在使用python BS4
来抓取https://skinup.gg网站。我试图从网站上按顺序获得乘数类。
我试图通过从div历史课中获取所有数据来获取信息。然而,它只返回[]
,我很难理解如何获得乘数。
我想知道是否因为 div标签类值不断变化。这引出了我的第二个问题:他们如何在html标签中拥有动态值?是通过Javascript
完成的吗?
请原谅我的语法。
这是我的代码:
import urllib.request
import requests
from bs4 import BeautifulSoup
import urllib
page = requests.g et("https://skinup.gg/"
soup = BeautifulSoup(page.content, "html.parser")
print(soup.find_all('div', attrs={'class': 'win'}))
相关网站代码:
<div class="history"><div class="win" style="">
<time class="date">23:05</time>
<span class="multiplier">2.19</span>
</div><div class="win" style="">
<time class="date">23:04</time>
<span class="multiplier">2.62</span>
</div><div class="lose" style="">
<time class="date">23:04</time>
<span class="multiplier">1.75</span>
</div><div class="lose" style="">
<time class="date">23:04</time>
<span class="multiplier">1.00</span>
</div><div class="lose" style="">
<time class="date">23:04</time>
<span class="multiplier">1.21</span>
</div><div style="">
<time class="date">23:03</time>
<span class="multiplier">1.82</span>
</div><div class="lose" style="">
<time class="date">23:03</time>
<span class="multiplier">1.00</span>
</div><div class="win" style="">
<time class="date">23:03</time>
<span class="multiplier">2.91</span>
</div><div class="lose" style="">
<time class="date">23:02</time>
<span class="multiplier">1.01</span>
</div><div class="win" style="">
<time class="date">23:02</time>
<span class="multiplier">1184.44</span>
</div><div class="win" style="">
<time class="date">23:01</time>
<span class="multiplier">36.81</span>
</div><div class="lose" style="">
<time class="date">22:59</time>
<span class="multiplier">1.38</span>
</div><div class="win" style="">
<time class="date">22:59</time>
<span class="multiplier">2.42</span>
</div><div class="win" style="">
<time class="date">22:59</time>
<span class="multiplier">8.00</span>
</div><div class="win" style="">
<time class="date">22:58</time>
<span class="multiplier">3.42</span>
</div><div class="win" style="">
<time class="date">22:57</time>
<span class="multiplier">2.04</span>
</div><div class="lose" style="">
<time class="date">22:57</time>
<span class="multiplier">1.17</span>
</div><div class="lose" style="">
<time class="date">22:57</time>
<span class="multiplier">1.24</span>
</div><div class="lose" style="">
<time class="date">22:57</time>
<span class="multiplier">1.11</span>
</div><div class="lose" style="">
<time class="date">22:56</time>
<span class="multiplier">1.53</span>
</div>
</div>
答案 0 :(得分:2)
首先,这应该会引发语法错误:
page = requests.g et("https://skinup.gg/"
将其更改为:
page = requests.get("https://skinup.gg/")
我建议使用lxml而不是html.parser,它更快更轻。
现在,回答你的问题,
具有win作为类属性的div段位于具有历史类属性的div段下。所以首先搜索历史,然后在获得的列表中搜索<em> win 。
但是,当我运行你的脚本并交叉检查你链接的网站的页面源时,没有带有win class属性的div段。
你能提一下,从哪里获得相关网站代码?
答案 1 :(得分:1)
对于相关网站,您需要使用selenium来获取所需的数据。
答案 2 :(得分:1)
正如t.m.adam所提到的,urllib或者请求无法获取动态页面源
但是当您看到与chrome开发人员工具链接的页面时,您可以看到在round.multiplier> 2时生成div win类。
这些是由使用wss协议的'socketcluster /'接收的。
所以你应该使用python wss模块来实现你的目标。