首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据HTML从统计页面中提取玩家的信息?

如何根据HTML从统计页面中提取玩家的信息?
EN

Stack Overflow用户
提问于 2018-08-08 02:23:14
回答 2查看 232关注 0票数 2

我正在尝试为一个使用selenium的网站抓取一些信息,下面是到网站http://www.ultimatetennisstatistics.com/playerProfile?playerId=4742的链接,我试图获取的信息是在玩家‘统计信息’下面,我的代码现在打开玩家的配置文件,然后打开玩家的统计页面,我试图找到一种方法来提取下面的玩家统计页面中的信息,到目前为止我的代码是我的代码

代码语言:javascript
复制
from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.ultimatetennisstatistics.com/playerProfile?playerId=4742")
soup = BeautifulSoup(driver.page_source,"lxml")
try:
dropdown = driver.find_element_by_xpath('//*[@id="playerPills"]/li[9]/a')
dropdown.click()


bm = driver.find_element_by_id('statisticsPill')
bm.click()

for i in soup.select('#statistics table.table tr'):
    print(i)
    data1 = [x.get_text(strip=True) for x in i.select("th,td")]
    print(data1)

except ValueError:
      print("error")

我发球

代码语言:javascript
复制
                            <th class="pct-data text-right"><i class="fa fa-percent"></i></th>
                            <th class="raw-data text-right" style="display: none;"><i class="fa fa-hashtag"></i></th>
                        </tr>
                        </thead>
                        <tbody>
                        <tr>
                            <td>Ace %</td>



                            <th class="text-right pct-data">23.4%</th>
                            <th class="raw-data text-right" style="display: none;">12942 / 55377</th>


                        </tr>
                        <tr>
                            <td>Double Fault %</td>



                            <th class="text-right pct-data">4.2%</th>
                            <th class="raw-data text-right" style="display: 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-08 06:08:54

要从Statistics页面提取播放机的信息,可以使用以下解决方案:

  • 代码块: 从20).until(EC.element_to_be_clickable((By.XPATH,从selenium.webdriver.support.ui导入from驱动程序从selenium.webdriver.common.by导入WebDriverWait从selenium.webdriver.support导入selenium.webdriver.support expected_conditions as EC options = webdriver.ChromeOptions() options.add_argument(“启动-最大化”)options.add_argument(‘禁用-infobars’)selenium.webdriver.support driver.get("http://www.ultimatetennisstatistics.com/playerProfile?playerId=4742") WebDriverWait(驱动程序,20).until(EC.element_to_be_clickable((By.XPATH,)"//ul@id='playerPills'//a@class='dropdown-toggle'"))).click() WebDriverWait(驱动程序,20).until(EC.element_to_be_clickable((By.XPATH,"//ul@class='dropdown-menu'//a@id='statisticsPill'"))).click() statistics_items =WebDriverWait(驱动程序,10).until(EC.visibility_of_any_elements_located((By.XPATH,)( "//table@class='table -.format-.format-class‘//tbody/tr/td“)( statistics_value =WebDriverWait(驱动程序,statistics_items”/table@class=’table-凝缩表-悬浮表-条形表//tbody//tr/tr//Th1“),以拉链为单位(statistics_items,statistics_value):print( {}'.format(item.text ),( value.text))
  • 控制台输出: 王牌% 4.0%双失误率2.1% 1发球68.7% 1发球赢% 71.8%第二发球赢得57.3%破发点66.3%发球局赢得% 67.2%服务游戏赢得% 85.6% Ace对% 7.2% 1 Srv有双重失误。回报赢得百分之3.4%的第二Srv。34.2%的破发点赢得% 55.3%的回击点赢得% 44.9%的回击游戏获得42.4%的优势33.3%的游戏总破发点比率1.29总分赢得% 2.31局赢得% 1.33局赢得% 54.4%的比赛赢得% 59.7%的比赛时间77.2%
票数 2
EN

Stack Overflow用户

发布于 2018-08-08 06:18:21

问题是这条线的位置-

代码语言:javascript
复制
soup = BeautifulSoup(driver.page_source,"lxml")

它应该出现在你点击“统计”选项卡之后。因为只有表装载和汤才能解析它。

最后的代码-

代码语言:javascript
复制
from selenium import webdriver
from bs4 import BeautifulSoup
import time

driver = webdriver.Chrome(executable_path=r'//path/chromedriver.exe')
driver.get("http://www.ultimatetennisstatistics.com/playerProfile?playerId=4742")

try:
   dropdown = driver.find_element_by_xpath('//*[@id="playerPills"]/li[9]/a')
   dropdown.click()
   bm = driver.find_element_by_id('statisticsPill')
   bm.click()
   driver.maximize_window()
   soup = BeautifulSoup(driver.page_source,"lxml")
   for i in soup.select('#statisticsOverview table tr'):
     print(i.text)
     data1 = [x.get_text(strip=True) for x in i.select("th,td")]
     print(data1)

except ValueError:
      print("error")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51737769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档