Загрузка панды в виде сохраненных файлов вместо ссылок - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь добавить изображение в каждый эпизод для очистки подкаста. RSS-канал очень полезен, но, похоже, уникальную ссылку для каждого эпизода нельзя использовать, так как это не фактическая ссылка, так как там нет .jpg и т. Д.

<img src="http://feeds.feedburner.com/~r/CriminalShow/~4/sr-KhpKmTO0"

Таким образом, любые запросы на получение src = не работают по понятным причинам. Мне удалось вытащить изображение каждого соответствующего эпизода из другой части их сайта, используя этот код:

import requests
import pandas as pd

resp = requests.get("https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=1000000&page=1").json()
df = pd.DataFrame(resp['posts'], columns=['image'])
df['image'] = df['image'].apply(pd.Series)['large'].replace({'"': '\'','""': '\'','"""': '\'' }, regex=True)
df.to_csv("RSS-alt-img.csv",encoding='utf-8',index='false')

Как мне заставить панд фактически загружать эти файлы в локальную папку, чтобы я мог ссылаться на локальные файлы в остальной части кода? Все, что я могу найти в Интернете, это о том, как чистить ссылки и т. Д.

Я знаю, что одной из проблем будет то, что на выходе не будет частей для каждого выхода.

1 Ответ

1 голос
/ 19 июня 2019

Я импортировал регулярное выражение, чтобы вы могли упорядоченно сохранить имя файла.

Попробуйте следующее:

import requests
import pandas as pd
import urllib.request
import re


resp = requests.get("https://thisiscriminal.com/wp-json/criminal/v1/episodes?posts=1000000&page=1").json()
df = pd.DataFrame(resp['posts'], columns=['image'])
df['image'] = df['image'].apply(pd.Series)['large'].replace({'"': '\'','""': '\'','"""': '\'' }, regex=True)
Regex_Pattern = r"([^\/]+$)"

for index, row in df.iterrows():
    match = re.findall(Regex_Pattern, row['image'])
    myfilename = ''.join(match)
    print(row['image'])
    print(myfilename)
    urllib.request.urlretrieve(row['image'], myfilename)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...