Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';找不到<;分区ng视图>;来自NBA统计网站,使用BeautifulSoup Python_Python_Selenium_Web Scraping_Beautifulsoup_Python Requests - Fatal编程技术网

Can';找不到<;分区ng视图>;来自NBA统计网站,使用BeautifulSoup Python

Can';找不到<;分区ng视图>;来自NBA统计网站,使用BeautifulSoup Python,python,selenium,web-scraping,beautifulsoup,python-requests,Python,Selenium,Web Scraping,Beautifulsoup,Python Requests,我正在努力清理这个NBA网站https://stats.nba.com/team/1610612738/。我想做的是提取球员的名字,号码,位置和每个球员的所有信息。问题是我找不到或我的代码找不到,这是表所在位置的父级 到目前为止,我的代码是: from selenium import webdriver from bs4 import BeautifulSoup def get_Player(): driver = webdriver.PhantomJS(executable_path

我正在努力清理这个NBA网站
https://stats.nba.com/team/1610612738/
。我想做的是提取球员的名字,号码,位置和每个球员的所有信息。问题是我找不到或我的代码找不到
,这是
表所在位置的父级

到目前为止,我的代码是:

from selenium import webdriver
from bs4 import BeautifulSoup

def get_Player():
    driver = webdriver.PhantomJS(executable_path=r'D:\Documents\Python\Web Scraping\phantomjs.exe')

    url = 'https://stats.nba.com/team/1610612738/'

    driver.get(url)

    data = driver.page_source.encode('utf-8')

    soup = BeautifulSoup(data, 'lxml')

    div1 = soup.find('div', class_="columns / small-12 / section-view-overlay")
    print(div1.find_all('div'))

get_Player()

为什么要查找所有的
div
,如果只想提取播放器的名称,可以使用此
css选择器

td.player a
代码

all_player = driver.find_elements_by_css_selector('td.player a')
for playername in all_player:
   print(playername.text)

为什么要查找所有的
div
,如果只想提取播放器的名称,可以使用此
css选择器

td.player a
代码

all_player = driver.find_elements_by_css_selector('td.player a')
for playername in all_player:
   print(playername.text)

find_all
函数始终返回一个列表,
findChildren()
是返回标记对象的所有子对象

替换您的代码:

div1 = soup.find('div', class_="columns / small-12 / section-view-overlay")
print(div1.find_all('div')) 
致:

更新:

from selenium import webdriver

from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def get_Player():
    driver = webdriver.PhantomJS(executable_path=r'D:\Documents\Python\Web Scraping\phantomjs.exe')

    url = 'https://stats.nba.com/team/1610612738/'

    driver.get(url)

    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "nba-stat-table__overflow")))

    data = driver.page_source.encode('utf-8')

    soup = BeautifulSoup(data, 'lxml')

    div = soup.find('div', {'class':"nba-stat-table__overflow"})
    for tr in div.find("tbody").find_all("tr"):
        for td in tr.findChildren():
            print(td.text)

get_Player()
O/p:


find_all
函数始终返回一个列表,
findChildren()
是返回标记对象的所有子对象

替换您的代码:

div1 = soup.find('div', class_="columns / small-12 / section-view-overlay")
print(div1.find_all('div')) 
致:

更新:

from selenium import webdriver

from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def get_Player():
    driver = webdriver.PhantomJS(executable_path=r'D:\Documents\Python\Web Scraping\phantomjs.exe')

    url = 'https://stats.nba.com/team/1610612738/'

    driver.get(url)

    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "nba-stat-table__overflow")))

    data = driver.page_source.encode('utf-8')

    soup = BeautifulSoup(data, 'lxml')

    div = soup.find('div', {'class':"nba-stat-table__overflow"})
    for tr in div.find("tbody").find_all("tr"):
        for td in tr.findChildren():
            print(td.text)

get_Player()
O/p:


使用页面用于获取该内容的json响应端点。处理起来更容易、更好,而且不需要硒。您可以在“网络”选项卡中找到它

import requests
import pandas as pd

r = requests.get('https://stats.nba.com/stats/commonteamroster?LeagueID=00&Season=2018-19&TeamID=1610612738',  headers = {'User-Agent' : 'Mozilla/5.0'}).json()
players_info = r['resultSets'][0]
df = pd.DataFrame(players_info['rowSet'], columns = players_info['headers'])
print(df.head())

使用页面用于获取该内容的json响应端点。处理起来更容易、更好,而且不需要硒。您可以在“网络”选项卡中找到它

import requests
import pandas as pd

r = requests.get('https://stats.nba.com/stats/commonteamroster?LeagueID=00&Season=2018-19&TeamID=1610612738',  headers = {'User-Agent' : 'Mozilla/5.0'}).json()
players_info = r['resultSets'][0]
df = pd.DataFrame(players_info['rowSet'], columns = players_info['headers'])
print(df.head())

函数中的最后两行显示,当您打印所有div时,没有一个,因此我看不到该div的孩子。我尝试使用您的代码,但没有成功。谢谢函数中的最后两行显示,当您打印所有div时,没有一个,因此我看不到该div的孩子。我尝试使用您的代码,但没有成功。谢谢,你没工作。我得到一个
属性错误:“NoneType”对象没有属性“find”
。当我只打印
div
时,输出是
None
。代码工作得很好,我还尝试使用Chrome代替PhantomJS,但它也工作得很好,不起作用。我得到一个
属性错误:“NoneType”对象没有属性“find”
。当我只打印
div
时,输出是
None
。代码工作得很好,我还尝试使用Chrome代替PhantomJS,它也工作得很好。greatHello,如何将:“转换为”。我对URL“”也有同样的问题。很多人都很感激你。请考虑打开一个新的问题来解释你所尝试的和你陷入困境的原因。我现在不太了解这里,所以你更可能通过这种方式得到一个快速的答案。您好,您如何将:“转换为”。我对URL“”也有同样的问题。很多人都很感激你。请考虑打开一个新的问题来解释你所尝试的和你陷入困境的原因。我目前在这里不多,所以你更有可能通过这种方式得到一个快速的答案。