Всегда полезно посмотреть, что на самом деле делает ваш скрипт, быстрый способ сделать это - распечатать результаты на определенных этапах.
Например, используя ваш код:
for elem in browser.find_elements_by_link_text('More'):
print("elem's href attribute: {}".format(elem.get_attribute("href")))
Вы заметите, что первый пустой. Мы должны проверить это, прежде чем пытаться получить запросы на его получение:
for elem in browser.find_elements_by_link_text('More'):
if elem.get_attribute("href"):
print("Trying to get {}".format(elem.get_attribute("href")))
page = requests.get(elem.get_attribute("href"))
soup=BeautifulSoup(page.content,'html.parser')
print(soup.find_all('p')[0].get_text())
Обратите внимание, что пустая elem.get_attribute("href")
возвращает пустую строку Unicode, u''
- но питоны считают пустую строку ложной, поэтому этот if
работает.
Который отлично работает на моей машине. Надеюсь, это поможет!