簡體   English   中英

創建列表時如何避免覆蓋數據? 硒網絡驅動程序,Python

[英]How to avoid overwriting data when creating a list? Selenium Webdriver, Python

我想通過單擊歌曲來抓取以下網站上的每個頁面: https ://www.top40.nl/top40/2020/week-34(對於每年和周數),然后移動到“歌曲信息”然后抓取表中列出的所有數據。 對於這個問題,我到目前為止只抓取了標題。

這是我使用的網址: url = 'https://www.top40.nl/top40/'

但是,當我打印歌曲列表時,它只會返回網站上的最后一個標題。 因此,我相信我正在覆蓋。

希望有人能解釋我犯了哪些錯誤,如果有更簡單的方法可以在每一頁上刮桌子,很高興聽到。

請在下面找到我的python代碼:

for year in range(2015,2016):
    for week in range(1,2):
        page_url = url+str(year) + '/' + 'week-' + str(week)
        driver.get(page_url)
        lists = driver.find_elements_by_xpath("//a[@data-linktype='title']")
        
        
        links = []
        for l in lists:
            print(l.get_attribute('href'))
            links.append(l.get_attribute('href'))
        
        for link in links:
            driver.get(link)
            
            driver.find_element_by_xpath("//a[@href='#songinfo']").click()
            
            songs = driver.find_elements_by_xpath(""".//*[@id="songinfo"]/table/tbody/tr[2]/td""")
            songs_list = []
            for s in songs: 
                print(s.get_attribute('innerHTML'))
                songs_list.append(s.get_attribute('innerHTML'))```

songs_list = [] for link in links循環中的for link in links ,因此每次新迭代都會將其設置為一個空列表(然后您附加到這個新的空列表)。 結束所有循環后,您只能看到創建的songs_list

最簡單的解決方法是將songs_list = []行放在所有 for 循環之外,例如:

songs_list = []
for year in range(2015,2016):
    for week in range(1,2):
        # etc

暫無
暫無

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

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