• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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(keywordstart_pageend_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=9995debug=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 %}

답변 1

답변을 작성해보세요.

0

말씀하신 오류는 end for 를 endfor 로 붙여서 end if 를 endif 로 붙여서 써서 나오는 오류로 보입니다.