【发布时间】:2022-01-02 07:29:27
【问题描述】:
我想得到轮数(14、15、16、17 等),然后只刮数字,没有“.ROUND”。我写了一个基本版本和一个更好的版本,但它们不起作用。我没有收到错误,但我收到了>>>>(没有任何文字)。怎么办?
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 20)
Values_PremierLeague = []
driver.get("https://www.betexplorer.com/soccer/england/premier-league/fixtures/")
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "th.h-text-left")))
for PremierLeague in driver.find_elements(By.CLASS_NAME, "th.h-text-left"):
PremierLeague_text = PremierLeague.text
Values_PremierLeague.append(tuple([PremierLeague_text]))
print(PremierLeague_text)
driver.close
或
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import re
wait = WebDriverWait(driver, 20)
Values_PremierLeague = []
driver.get("https://www.betexplorer.com/soccer/england/premier-league/fixtures/")
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".table-main__datetime")))
for PremierLeague in driver.find_elements(By.XPATH, "//*[@class='h-text-left' and contains(text(),'Round')]"):
PremierLeague_text = PremierLeague.text
number = re.findall(r'\d+', s)
Values_PremierLeague.append(tuple([number]))
print(number)
driver.close
更新
CREATE TABLE "BASE_Giornate" (
"ID_Round" INTEGER,
"Number_Round" INTEGER,
"Id_Tournment" INTEGER,
PRIMARY KEY("ID_Giornata" AUTOINCREMENT)
);
而且代码已经在工作了
sqlite_insert_query_PremierLeague = 'INSERT INTO BASE_Giornate (Number_Round) VALUES (?);'
cursor.executemany(sqlite_insert_query_PremierLeague, Values_PremierLeague)
count_squadre_PremierLeague = cursor.rowcount
con.commit()
【问题讨论】:
-
所以第一个你不小心使用了类名而不是css选择器。 s 应该是第二个中的premier_League_text。
-
@ArundeepChohan 是的。第一个错误的类名,并且在任何情况下都没有通过消除“.ROUND”来刮取数字的设置。第二个应该可以工作,但是有问题。你能帮助我吗?谢谢
标签: python python-3.x selenium selenium-webdriver web-scraping