Javascript 使用python从网站获取音频源链接
Javascript 使用python从网站获取音频源链接,javascript,python,html,asp.net,web-crawler,Javascript,Python,Html,Asp.net,Web Crawler,我正在写一个脚本,从一个网站获取音频源链接。通过抓取主页,可以获得可用链接的列表。但是当我抓取生成的链接时,我找不到源代码。(它应该位于标记的href内)
这是我的密码:
# -*- coding: utf-8 -*-
import urllib.request
from bs4 import BeautifulSoup
def getHTML(st):
with urllib.request.urlopen(site+'/',timeout=100) as response:
我正在写一个脚本,从一个网站获取音频源链接。通过抓取主页,可以获得可用链接的列表。但是当我抓取生成的链接时,我找不到源代码。(它应该位于标记的href内)
这是我的密码:
# -*- coding: utf-8 -*-
import urllib.request
from bs4 import BeautifulSoup
def getHTML(st):
with urllib.request.urlopen(site+'/',timeout=100) as response:
return response.read()
site = 'http://www.e-radio.gr'
soup = BeautifulSoup(getHTML(site), 'html.parser')
# Parse Main Page And get links
lst = list()
for a in soup.body.find_all('a', {'class' : 'erplayer'}):
item = a.get('href')
if site in item:
lst.append(item)
else:
lst.append(site + item)
print("\n".join(lst))
网站似乎没有正确加载,也没有使用urllib.request加载音频源。我还可以使用什么来代替urllib.request,以便它等待加载整个页面。我的想法是使用一些外部web浏览器来生成html,但我不知道如何做到这一点这有点棘手,但我们可以一步一步地实现这一点-首先按照iframe
链接获取播放器的html。然后,获取flash player链接并跟踪它。然后,提取到mp3
的链接并下载流。所有这些都在同一个web抓取会话下进行:
from urllib.parse import urljoin
import requests
from bs4 import BeautifulSoup
def download_file(session, link, path):
r = session.get(link, stream=True)
if r.status_code == 200:
with open(path, 'wb') as f:
for chunk in r:
f.write(chunk)
base_url = "http://www.e-radio.gr"
url = "http://www.e-radio.gr/Rainbow-89-Thessaloniki-i92/live"
with requests.Session() as session:
session.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36'}
response = session.get(url)
soup = BeautifulSoup(response.content, "html.parser")
frame = soup.find(id="playerControls1")
frame_url = urljoin(base_url, frame["src"])
response = session.get(frame_url)
soup = BeautifulSoup(response.content, "html.parser")
link = soup.select_one(".onerror a")['href']
flash_url = urljoin(response.url, link)
response = session.get(flash_url)
soup = BeautifulSoup(response.content, "html.parser")
mp3_link = soup.select_one("param[name=flashvars]")['value'].split("url=", 1)[-1]
print(mp3_link)
download_file(session, mp3_link, "download.mp3")
你能从需要链接的地方发布html吗?音频链接HTMLH网站链接在代码中。这是我所有的代码,你可以运行itRight,但是如果我们运行代码,我们会看到音频链接打印出来。问题是什么?现在我需要从每个链接中提取一个块,它不在从页面返回的html中,因为它应该是href,我在网站中找不到任何音频标记