Magi, где Вы откопали этот сайт? Он у меня уже минут 20 ни через Python, ни из браузера не открывается (даже через VPN)... Видоизменил код. По логике вещей, должно получиться то, что Вы хотите на выходе:
#!/usr/bin/env python
#coding=utf-8
# подключаемые библиотеки:
from urllib2 import urlopen #работа с сетью
from bs4 import BeautifulSoup #работа с DOM
import argparse #парсирование аргументов из командной строки и работа с системой
# Простейший целевой парсер web-ресурса на языке Python
# Функционал: парсирует ответы ресурса www.lookupbyisbn.com,
# выдергивая Название книги, автора(ов) и год выпуска
# Дополнительно: понимает один URL в виде аргумента командной строки
# Зависимости: пакет python-beautifulsoup
# Работа проверялась под KUbuntu 18.04, Python 2.7.15rc1
#Сама функция парсирования:
def pars_by_url(url):
response = urlopen(url) #выполняем запрос на сервер
html = response.read() #читаем полученный ответ
soup = BeautifulSoup(html,"lxml") #по сути, интерпретируем ответ, формируя коллекцию DOM-элементов
OurCell = soup.find_all('li')[4] #находим все теги <li></li> и вытягиваем 4ый элемент полученной коллекции
#текст гиперссылки (она там одна) в данной ячейке - это название книги
Book_name = OurCell.find_all('a')[0]
Book = Book_name.string.strip()
#содержимое тега <u></u> в данной ячейке - это авторы
try:
Book_author = OurCell.find_all('u')[0]
Author = Book_author.string.strip()
except:
Author = "[Автор не указан]"
#содержимое второго по счету тега <i></i> - это год издания
try:
Book_year = OurCell.find_all('i')[1]
Year = Book_year.string.strip()
Year = Year[0:4]
except:
Year = "[год не указан]"
#принудительно приводим все к типу "строка":
Book = str(Book)
Author = str(Author)
Year = str(Year)
print Book + " " + Author + " " + Year + ".pdf"
#Сама программа (разбираем аргументы, и вызываем парсер):
def main():
callWith=argparse.ArgumentParser() #контейнер для приема аргументов из командной строки
callWith.add_argument('--url', help='URL парсируемой страницы') #единственный принимаемый аргумент - URL, куда осуществляется навигация
args = callWith.parse_args() #вытаскиваем аргумент из командной строки
try:
if (args.url == None): #если аргуент не задан. В примере - навигация на строку по-умолчанию
pars_by_url("http://www.lookupbyisbn.com/Search/Book/9781405135221/1/")
else: #если аргумент задан. Воспринимаем его за URL и не проверяя, что не правильно, отсылаем в работу
pars_by_url(args.url)
except:
print "Ошибка выполнения"
#вызов главной процедуры
if __name__ == '__main__':
main()
Выхлоп на выходе, если не передавать никакие параметры:
The Handbook of Clinical Linguistics [Автор не указан] 2008.pdf