-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
jinja2.exceptions.TemplateSyntaxError
20.06.23 19:32 작성 조회수 133
1
오류있어요
from flask import Flask
from flask import render_template
from flask import request
import requests
from bs4 import BeautifulSoup
import re
app = Flask(__name__)
def search_google(keyword, start_page, end_page=None):
url = "https://www.google.com/search?q={0}+magnet%3A%3Fxt%3D&oq={0}+magnet%3A%3Fxt%3D&start={1}".format(keyword, start_page)
header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36,gzip(gfe)"}
r = requests.get(url, headers=header)
bs = BeautifulSoup(r.text, "lxml")
links = bs.select("div.g > div.rc > div.r > a")
results = []
if end_page is None:
parse_text_1 = "검색결과 약"
parse_text_2 = "개"
text = bs.select("div#result-stats")[0].text
text = text[text.find(parse_text_1) + len(parse_text_1):]
text = text[:text.find(parse_text_2)]
counts = text.replace(",", "").strip()
print(counts)
end_page = int(int(counts) / 10)
if end_page > 10:
end_page = 10
for a in links:
href = a["href"]
text = a.select("h3")
if len(text) <= 0:
continue
title = text[0].text
try:
r = requests.get(href)
bs = BeautifulSoup(r.text, "lxml")
magnets = bs.find_all("a", href=re.compile(r'magnet:\?xt=*'))
if len(magnets) > 0:
magnet = magnets[0]["href"]
results.append({
"magnet": magnet,
"title": title
})
except:
pass
if start_page < end_page:
start_page += 10
results.extend(search_google(keyword, start_page, end_page=end_page))
return results
@app.route("/", methods=["GET", "POST"])
def index():
if "keyword" in request.form:
keyword = request.form["keyword"]
results = search_google(keyword, 0)
else:
results = []
if len(results) > 0:
return render_template("index.html", **{"magnets": results})
else:
return render_template("index.html")
if __name__ == "__main__":
app.run(host="0.0.0.0", port=9995, debug=True)
<form name="form" method="POST" action="/">
<input type="text" name="keyword" value="">
<input type="submit" value="검색">
</form>
{% if magnets|length > 0 %}
{% for m in magnets %}
<li><a href="{{m.magnet}}">{{m.title}}</a></li>
{% endfor %}
{% else %}
<p>검색 결과 없습니다.</p>
{% endfor %}
답변을 작성해보세요.
0
답변 1