为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

摇曳的蔷薇 2023-06-27 17:28:18
我想通过点击歌曲来抓取以下网站上的每一页: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'))```
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

该行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


查看完整回答
反对 回复 2023-06-27
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信