创建列表时如何避免数据被覆盖?硒网络驱动程序,Python

我想通过点击歌曲来抓取以下网站上的每一页:https://www.top40.nl/top40/2020/week-34(每年和周数),然后移动到“songinfo”,然后抓取表中列出的所有数据。对于这个问题,我到目前为止只刮了标题。

这是我使用的网址: 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'))```


摇曳的蔷薇
浏览 113回答 1
1回答

12345678_0001

该行songs_list = []位于for link in links循环内部,因此每次新的迭代都会将其设置为空列表(然后附加到这个新的空列表)。结束所有循环后,您只能看到songs_list创建的循环。最简单的解决方法是将行放在songs_list = []所有 for 循环之外,例如:songs_list = []for year in range(2015,2016):    for week in range(1,2):        # etc
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python