用硒滴下刮痧

时间:2018-03-11 19:40:38

标签: python selenium web-scraping

我正试图从这个网页上抓取数据:

https://www.premierleague.com/players/4330/player/stats?co=1&se=79

特别是每个季节的四个中间数字(外观,干净的床单......)(见下拉列表)。然而,到目前为止,我只得到所有季节的数字汇总。我使用硒,因为单独的美味汤无法做到,但硒似乎也没有这样做。这是代码的相关部分(它是for循环,从csv文件中获取URL):

Interface A {}

class B implements A{ String name;}
calass C implements A{ String lastName;}

打印的树只有“全季节”数字,虽然铬的加载页面仅显示2017/2018赛季。有谁知道为什么?加载下拉列表后可以明显地进行抓取,但在加载下拉列表之前仍然会给出相关的值。

下拉列表如下所示:

enter image description here

1 个答案:

答案 0 :(得分:0)

您获取网址的时间<{1}} ,这意味着您可能只会看到服务器发送到浏览器的确切内容 - 否更多也不少。该初始源包含以下HTML代码段:

page_source

直到片刻之后,在下载并执行了一些JavaScript后,它才会更改为以下内容:

<span class="stat">
  Appearances
  <span class="allStatContainer statappearances" data-stat="appearances">230</span>
</span>

为了获得这些数据,您需要等待它。这意味着您需要等待必要的JavaScript已执行的某些迹象。如果你能找到(1)在之后一直出现并且(2)是一个恒定的,可预测的值,你可以使用Selenium的WebDriverWait()来等待它。然后,您就会知道获取所需数据是安全的。

在您的情况下,您似乎要等到&#34;按季节过滤&#34;下拉列表已经出现并填充,其目标按钮显示&#34; 2017/18&#34;季节:

<span class="stat">
  Appearances
  <span class="allStatContainer statappearances" data-stat="appearances">30</span>
</span>