Ошибка при попытке очистить ссылки для скачивания с python - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь очистить все ссылки для скачивания с сайта. У меня есть список ссылок, но я получаю сообщение об ошибке.

список выглядит так:

[<a href='example.com/one'>, <a href='example.com/two'>, <a href='example.com/three'>]

, когда я пытаюсь печатать только ссылки, я могу это сделать.

for x in range(len(content)):
    print(content[x])

но когда я пытаюсь выполнить это, это не работает.

for x in range(len(content)):
    content[x] = url + content[x]['href']
    v = s.get(content[x], headers=headers)
    content = BeautifulSoup(v.content, 'lxml')
    temp = content.find_all('a', {'class':'download-link'})
    print(temp[2]['href'])
  File "app.py", line 31, in <module>
    content[x] = url + content[x]['href']
  File "C:\Users\dead\Anaconda3\lib\site-packages\bs4\element.py", line 1016, in __getitem__
    return self.attrs[key]
KeyError: 1

1 Ответ

0 голосов
/ 17 января 2020

Вы изменяете значение содержимого во время вашего l oop, и новое значение не является списком с len (new_content) == len (content). Я не уверен, почему вы обновляете контент, но вы должны либо остановить его, либо обновить его должным образом, например:

for x in range(len(content)):
    content[x] = url + content[x]['href']
    v = s.get(content[x], headers=headers)
    content = BeautifulSoup(v.content, 'lxml')
    content = content.find_all('a', {'class':'download-link'})
    print(content[2]['href'])

или:

for x in range(len(content)):
    content[x] = url + content[x]['href']
    v = s.get(content[x], headers=headers)
...