这就是我的routes.py看起来的样子。基本上它是一个爬虫,可以抓取页面中的所有YouTube视频链接。此代码可以很好地独立运行(不在烧瓶中)。但是,当我尝试通过烧瓶使其工作时,它会抛出500内部服务器错误。任何形式的帮助将不胜感激。
ApplicationContext applicationContext = new FileSystemXmlApplicationContext(
"src/main/webapp/WEB-INF/spring/root-context.xml");
GoogleAuthorization helper = (GoogleAuthorization)applicationContext.getBean("helper");
堆栈跟踪在
之下from flask import Flask, render_template
from BeautifulSoup import BeautifulSoup
import requests
app = Flask(__name__)
@app.route("/")
def main():
url="https://www.youtube.com/user/EminemVEVO/videos"
source_code=requests.get(url)
text_source_code=source_code.text
final_code=BeautifulSoup(text_source_code)
video_url=final_code.findAll('a',{'class':'yt-uix-sessionlink yt-uix-tile-link spf-link yt-ui-ellipsis yt-ui-ellipsis-2'})
for i in video_url:
if "/watch?v=" in i.get('href'):
j= i.get('href')
j=j.replace("/watch?v=","")
print "http://youtube.com"+j
if __name__ == '__main__':
app.run()
答案 0 :(得分:1)
您的main()
方法已路由至'/'
,但未返回任何值。您将youtube URL打印到控制台,但没有任何内容被发送回客户端。 Flask不喜欢这样,很可能这不是你想要的。
将URL列表返回给用户:
@app.route("/")
def main():
...
data_to_return = []
for i in video_url:
if "/watch?v=" in i.get('href'):
j= i.get('href')
j=j.replace("/watch?v=","")
data_to_return.append("http://youtube.com"+j)
return '\n'.join(data_to_return)