我如何讓這個 for 回圈在仍然使用范圍的同時不重復這個串列以前的輸出。這個 for 回圈重復前一個數字的輸出。每次轉到下一個數字時。而不是從 0-20 一次。它是 0-1,0-2,0-3,0-4 ......等等。我希望它從 0 到 20 一次而不是自我復制。
import time
from selenium import webdriver
import selenium
from selenium.webdriver.chrome import service
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd
#class scraperdata():
ser= Service("C:\Program Files (x86)\chromedriver.exe")
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(options=options,service=ser)
driver.get('https://soundcloud.com/jujubucks')
print(driver.title)
wait = WebDriverWait(driver,30)
wait.until(EC.element_to_be_clickable((By.ID,"onetrust-accept-btn-handler"))).click()
try:
song_list = []
i = 1
for _ in range(20):
song_contents = driver.find_element(By.XPATH, "//li[@class='soundList__item'][{}]".format(i))
driver.execute_script("arguments[0].scrollIntoView(true);",song_contents)
search = song_contents.find_element(By.XPATH, ".//a[contains(@class,'soundTitle__username')]/span").text
search_song = song_contents.find_element(By.XPATH, ".//a[contains(@class,'soundTitle__title')]/span").text
search_date = song_contents.find_element(By.XPATH, ".//time[contains(@class,'relativeTime')]/span").text
search_plays = song_contents.find_element(By.XPATH, ".//span[contains(@class,'sc-ministats-small')]/span").text
i =1
if _ == Exception:
break
option ={
'Artist': search,
'Song_title': search_song,
'Date': search_date,
'Streams': search_plays
}
song_list.append(option)
df = pd.DataFrame(song_list)
print(df)
except Exception:
pass
driver.quit()
輸出
Stream Juju Bucks music | Listen to songs, albums, playlists for free on SoundCloud
Artist Song_title Date Streams
0 Juju Bucks Squad Too Deep Ft. Cool Prince (Outro) Posted 1 year ago 31 plays
Artist Song_title Date Streams
0 Juju Bucks Squad Too Deep Ft. Cool Prince (Outro) Posted 1 year ago 31 plays
1 Juju Bucks Tropikana ft. P-Dogg Amazing Posted 1 year ago 48 plays
Artist Song_title Date Streams
0 Juju Bucks Squad Too Deep Ft. Cool Prince (Outro) Posted 1 year ago 31 plays
1 Juju Bucks Tropikana ft. P-Dogg Amazing Posted 1 year ago 48 plays
2 Juju Bucks Party Ka Mngani Ft. X-Poll Posted 1 year ago 72 plays
Artist Song_title Date Streams
0 Juju Bucks Squad Too Deep Ft. Cool Prince (Outro) Posted 1 year ago 31 plays
1 Juju Bucks Tropikana ft. P-Dogg Amazing Posted 1 year ago 48 plays
2 Juju Bucks Party Ka Mngani Ft. X-Poll Posted 1 year ago 72 plays
3 Juju Bucks Joy Ft. Black Sushi & Gavin Bowden Posted 1 year ago 122 plays
uj5u.com熱心網友回復:
for 回圈的范圍很好。問題是,對于回圈的每次迭代,您都將一個新專案附加到song_list,它位于回圈范圍之外。將song_list = []進入回圈,使列印陳述句的作業,你所希望的方式。
但是,當回圈結束時,您將不再跟蹤所有歌曲。您可能根本不想在回圈內列印。在回圈外列印一次。
uj5u.com熱心網友回復:
您應該將資料幀分配移到 for 回圈之外:
for _ in range(20):
…
song_list.append(option)
df = pd.DataFrame(song_list)
print(df)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/340878.html
