簡體   English   中英

使用硒在 Python 上進行網頁抓取時找不到 div 類

[英]Can't find div class while webscraping on Python using selenium

我先說我見過類似的問題,但沒有一個解決方案對我有用

所以我在我的 html 頁面中尋找一個特定的類,但我總是得到一個 None 返回值。 我在這里看到了一些描述相同問題的帖子,但沒有一個解決方案對我有用。 這是我的嘗試 - 我正在尋找帶有姓名的球員標簽,即“Chase Young”

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
import requests

url = "https://www.nfl.com/draft/tracker/prospects/allPositions?
college=allColleges&page=1&status=ALL&year=2020"

soup = BeautifulSoup(url.content, 'lxml')
match = soup.find('div', class_ = 'css-gu7inl')
print(match)
# Prints None

我嘗試了另一種方法來查找匹配項,仍然返回 None:

match = soup.find("div", {"class": "css-gu7inl"} # Print match is None

看起來 html 文件不包含所有網頁,所以我嘗試使用 selenium,因為我在類似帖子中看到了推薦,但仍然沒有得到任何結果:

driver = webdriver.Chrome("chromedriver")
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'lxml')
items=soup.select(".css-gu7inl")
print(items) # Empty list

我在這里做錯了什么?

數據由java腳本呈現,因此Induce WebDriverWait ()並使用visibility_of_all_elements_located ()等待元素可見

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

url='https://www.nfl.com/draft/tracker/prospects/allPositions?college=allColleges&page=1&status=ALL&year=2020'
driver = webdriver.Chrome()
driver.get(url)
WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,'.css-gu7inl')))
soup = BeautifulSoup(driver.page_source, 'lxml')
items=soup.select(".css-gu7inl")
Players=[item.select_one('a.css-1fwlqa').text for item in items]
print(Players) 

輸出

['chase young', 'jeff okudah', 'derrick brown', 'isaiah simmons', 'joe burrow', "k'lavon chaisson", 'jedrick wills', 'tua tagovailoa', 'ceedee lamb', 'jerry jeudy', "d'andre swift", 'c.j. henderson', 'mekhi becton', 'mekhi becton', 'patrick queen', 'henry ruggs iii', 'henry ruggs iii', 'javon kinlaw', 'laviska shenault jr.', 'yetur gross-matos']

代碼 1 可幫助您查看來自服務器的響應。 此響應包含服務器發送的 HTML 代碼。 使用另一個代碼分析此代碼的響應(來自服務器的 HTML 代碼)並分離您想要的類。

==================================================

import requests #CODE1
from requests_toolbelt.utils import dump

resp = requests.get('http://kanoon.ir/')
data = dump.dump_all(resp)
print(data.decode('utf-8')) 

================================================== =

代碼輸出: HTML 代碼:

< GET / HTTP/1.1

< Host: kanoon.ir

< User-Agent: python-requests/2.23.0

< Accept-Encoding: gzip, deflate

< Accept: */*

< Connection: keep-alive

< 
     ...

================================================== =

您為第二部分(用於分析和 HTML 代碼分離)編寫的代碼取決於您的創造力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM