Получение определенного файла из запрошенного iframe - PullRequest
0 голосов
/ 05 июля 2018

Я хочу получить ссылку на файл из аниме, которое я смотрю с сайта.

`import requests
from bs4 import BeautifulSoup
import re

page = requests.get("http://naruto-tube.org/shippuuden-sub-219")
soup = BeautifulSoup(page.content, "html.parser")
inner_content = requests.get(soup.find("iframe")["src"])

print(inner_content.text)`

вывод - исходный код с сайта filehoster (ани-стрим). Тем не менее, моя проблема сейчас заключается в том, как получить строку «file: xxxxxxx» для печати, а не весь исходный код?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы можете Beautiful Soup проанализировать исходный код iframe и найти элементы скрипта, но оттуда вы по своему усмотрению. Строка file: "xxxxx", находится в коде JavaScript, поэтому вам нужно найти вызов функции (в данном случае playerInstance.setup()) и решить, какая из двух таких строк «file:» вам нужна, и удалить ее. нежелательный синтаксис JS вокруг URL.

Регулярные выражения помогут в этом, и вам, вероятно, лучше просто искать строки в HTML-коде iframe. Вы уже импортировали re, поэтому я заменил вашу последнюю строку на:

lines = re.findall("file: .*$", inner_content.text, re.MULTILINE)
print( '\n'.join(lines) )

... чтобы получить список строк с "file:" в них. Вы можете (и должны) использовать более подходящее RE, чтобы найти только тот, который имеет "http:// и разрешает только пробелы перед "file:" в строках. (У Python, Java и моего текстового редактора разные представления о том, что находится в RE, поэтому мне приходится каждый раз писать одну и ту же документацию. Вы тоже можете это сделать - в конце концов, это ваша проблема.)

Функция questions.get () не работает для получения байтов. Попробуйте подход urlretrieve Вишну Киран - возможно, это сработает. Использование URL-адреса в окне браузера, по-видимому, дает правильное видео, поэтому, возможно, вам придется настроить пользовательский агент и / или файлы cookie, которые вам придется подделать.

0 голосов
/ 05 июля 2018

Если источник iframe не является основным доменом веб-сайта (naruto-tube.org), к его содержимому нельзя получить доступ посредством скрапинга.

Вам придется использовать другой веб-сайт, или вам потребуется получить URL-адрес в Iframe и использовать некоторые библиотеки, например запросы, для вызова URL-адреса.

Обратите внимание, что вы также должны передать все параметры в URL, если они есть, чтобы получить какой-либо результат. Вот так

import urllib
urllib.urlretrieve ("url from the Iframe", "mp4.mp4")
...