我想通过点击歌曲来抓取以下网站上的每一页: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 回答
![?](http://img1.sycdn.imooc.com/54584f850001c0bc02200220-100-100.jpg)
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
添加回答
举报
0/150
提交
取消