Веб-сайт, с которого я пытаюсь очистить медиа-ссылки (для аддона Kodi), не имеет большого количества маркеров классов и т. Д., Но каждая ссылка имеет своего рода уникальный макет.
Я создал базовый аддон Kodi из другого рабочего, но у меня возникают проблемы с тем, что Python / BeautifulSoup очищает ссылки.Другие аддоны используют заголовки классов и т. Д., Но сайт, который я пытаюсь почистить, не очень-то использует это.
Я перепробовал все виды форумов без удачи, большинство KodiФорумы аддонов старые и не очень активные.Руководства, на которые я смотрел, очень быстро переходят от шага 1 к шагу 1000, и примеры, которые он дает, не актуальны.Я посмотрел на 30 или около того разных аддонов, думая, что это должно помочь, но я не могу разобраться.
Ссылки на медиа, названия эпизодов, описания и изображения, которые я пытаюсь почистить, перечислены в www.thisiscriminal.com / episodes
Полный аддон, который я сделал до сих пор, находится в Github-хранилище
Я могу видеть в источникеони четко изложены (см. код)
Мне просто нужно иметь возможность анализировать веб-сайт, находить приведенные ниже биты для каждого эпизода, заполнять их ссылками на странице дополнения коди и затем перечислять следующийодин под.Любая помощь будет принята с благодарностью.Я потратил около 3 дней подряд, пытаясь это сделать, и очень и очень рад, и раздражен тем, что выпал из той степени, которую я получил в 2002 году.
КОД ВЕБ-САЙТА, КОТОРЫЙ Я ДОЛЖЕН ТЯНУТЬ
(episode image)
<img width="300" height="300" ...
https://thisiscriminal.com/wp-content/uploads/2019/05/Cecilia_art.png" ../>
(episode title)
<h3><a href="https://thisiscriminal.com/episode-115-cecilia-5-24-19/">Cecilia</a></h3>
(episode number)
<h4>Episode #115</h4>
(episode link)
<p><a href="https://dts.podtrac.com/redirect.mp3/dovetail.prxu.org/criminal/a91a9494-fb45-48c5-ad4c-2615bfefd81b/Episode_115_Cecilia_Part_1.mp3"
(episode description)
</header>When Cecilia....</article>
КОД
import requests
import re
from bs4 import BeautifulSoup
def get_soup(url):
"""
@param: url of site to be scraped
"""
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
print "type: ", type(soup)
return soup
get_soup("https://thisiscriminal.com/episodes")
def get_playable_podcast(soup):
"""
@param: parsed html page
"""
subjects = []
for content in soup.find_all('a'):
try:
link = content.find('<p><a href="https://dts.podtrac.com/redirect.mp3/dovetail.prxu.org/criminal/')
link = link.get('href')
print "\n\nLink: ", link
title = content.find('<h4>Episode ')
title = title.get_text()
desc = content.find('div', {'class': 'summary'})
desc = desc.get_text()
thumbnail = content.find('img')
thumbnail = thumbnail.get('src')
except AttributeError:
continue
item = {
'url': link,
'title': title,
'desc': desc,
'thumbnail': thumbnail
}
#needto check that item is not null here
subjects.append(item)
return subjects
2019-06-09 00: 05: 35.719 T: 1916360240 ОШИБКА: Элемент управления 55 в окне 10502 был задан для фокусировки, но он не может 2019-06-0900: 05: 41.312 T: 1165988576 ОШИБКА: ИСКЛЮЧЕНО Сгенерировано (PythonToCppException): -> Обратный вызов / скрипт Python возвратил следующую ошибку <- - ПРИМЕЧАНИЕ: ОТКАЗ ОТ ЭТОГО МОЖЕТ ПРИВЕСТИ К УТЕЧКАМ ПАМЯТИ!Тип ошибки: ошибка Содержание: кодек «ascii» не может декодировать байт 0xa0 в позиции 0: порядковый номер не находится в диапазоне (128) Трассировка (последний последний вызов): файл »/home/osmc/.kodi/addons/plugin.audio.abcradionational / addon.py ", строка 44, в desc = soup.get_text (). replace ('\ xa0', '') .replace ('\ n', '') UnicodeDecodeError: кодек ascii не можетдекодировать байт 0xa0 в позиции 0: порядковый номер не находится в диапазоне (128) -> Отчет об ошибке конца скрипта Python <- 2019-06-09 00: 05: 41.636 T: 1130349280 ОШИБКА: GetDirectory - Ошибка при получении плагина: // плагин.audio.abcradionational / 2019-06-09 00: 05: 41.636 T: 1916360240 ОШИБКА: CGUIMediaWindow :: GetDirectory (плагин: //plugin.audio.abcradionational/) завершилась неудачно </p>