Здесь вы новичок в программировании, так что простите за глупые вопросы. Я пытался придумать, как использовать Python для парсинга веб-страниц, и многие видео с YouTube и другие вопросы вроде приводят меня туда, мне трудно связать ответ с моим фактическим кодом .

Мой код на данный момент:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import csv
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup as soup
import pandas as pd

url = "https://racing.hkjc.com/racing/information/English/Racing/LocalResults.aspx?RaceDate=2021/02/06&Racecourse=ST&RaceNo=1"
driver = webdriver.Chrome()
driver.get(url)

html = driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML")

soup_level1=soup(driver.page_source, 'lxml')


race_soup = soup_level1.find("tbody", class_="f_fs13")
print(race_soup.text.strip())

results_soup = soup_level1.find("tbody", class_="f_fs12")
print(results_soup.text.strip())


datalist = [] #empty list
x = 0 #counter
print('good')


driver.close()

Это сгенерирует проанализированные данные, но теперь я застрял в том, как переместить их из текста во фрейм данных с помощью pandas. Я уверен, что это просто, но все учебные материалы, которые я видел, мне не нравятся.

Кроме того, код до сих пор представляет собой просто копию и вставленные фрагменты с разных веб-сайтов, с которыми мне пришлось работать методом проб и ошибок. Я не уверен, что это избыточно, поэтому, если есть более аккуратный способ решить эту проблему, я также был бы признателен за эту обратную связь!

Заранее спасибо, Спенсер

0
Spencer Assiff 11 Фев 2021 в 13:24

1 ответ

Лучший ответ

Дайте это попробовать:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import csv
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup as soup
import pandas as pd

url = "https://racing.hkjc.com/racing/information/English/Racing/LocalResults.aspx?RaceDate=2021/02/06&Racecourse=ST&RaceNo=1"
driver = webdriver.Chrome()
driver.get(url)

html = driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML")
WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "f_fs13")))
htmlStr = driver.page_source

soup_level1 = soup(htmlStr, 'html.parser')

race_soup = soup_level1.find('tbody',{'class':'f_fs13'}).find_parent('table')
results_soup = soup_level1.find('tbody',{'class':'f_fs12'}).find_parent('table')

df1 = pd.read_html(str(race_soup))[0]
print(df1)

df2 = pd.read_html(str(results_soup))[0]
print(df2)



datalist = [] #empty list
x = 0 #counter
print('good')


driver.close()
0
chitown88 11 Фев 2021 в 12:17