【发布时间】:2020-08-28 16:49:40
【问题描述】:
我想通过点击歌曲来抓取以下网站上的每一页: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'))```
【问题讨论】:
-
也许您可以将每个标题保存到一个文件中。这样,您知道您可以拥有一个文件,您甚至可以在解析站点一次后多次使用该文件。也许添加更多您可以获得的信息。
标签: python selenium selenium-webdriver web-scraping selenium-chromedriver