запросы в Flask возвращают 404

#python #flask #python-requests

#python #фляжка #python-запросы

Вопрос:

Я создаю свое первое приложение, в котором оно получает в ответ кучу URL-адресов, но когда я запускаю его через Flask, только один URL получает <response [200]>, а остальные получают [404]. Функция работает сама по себе, и проблема возникает только тогда, когда она выполняется через flask.

Я вижу, что URL-адреса передаются при использовании print, но после печати URL-адреса при печати ответа возвращается 404.

Примеры URL-адресов:

 https://www.crimestoppervic.com.au/

https://bennichomes.com.au/
 

Функция:

 def get_page_response(url):
        response = requests.get(url)
        return response
 

Фляжка:

 @app.route('/', methods=['GET', 'POST'])
def index():
    form = URLForm()
    if form.validate_on_submit():
        session['urls'] = form.urls.data
        urls = session.get('urls', None)
        lines = set(l for l in urls.split("n") if l)
        response_list = []
        for url in lines:
            response = get_page_response(url)
            response_list.append(response)

        return render_template('index.html', title='Homepage', form=form, response_list=response_list)
    return render_template('index.html', title='Homepage', form=form)
 

HTML — шаблон:

 {% extends "base.html" %}

{% block content %}

<form action="" method="post">
    {{ form.hidden_tag() }}
    {{ form.urls.label }}<br>
    {{ form.urls(rows='20',cols='100') }}</p><br>
    {{ form.submit() }}

    {% for x in response_list %}
        <p>{{ x }}</p>
    {% endfor %}

{% endblock %}
 

Формы:

 from flask_wtf import FlaskForm
from wtforms import TextAreaField, SubmitField
from wtforms.validators import DataRequired

class URLForm(FlaskForm):
    urls = TextAreaField('URLs', validators=[DataRequired()])
    submit = SubmitField('Submit')
 

Комментарии:

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

2. Можете ли вы поделиться ценностью form.urls.data и lines ? Вы уверены, что в urls.split("n") результате будут получены допустимые URL-адреса?

3. Я добавил URL-адреса и значения

Ответ №1:

В случае, если у кого-то еще есть такая же проблема, ответом было удаление символа r в списке.

 lines = set(l for l in urls.split("n") if l)
print(lines) #this will show you that inside the list items have r

lines = [i.replace("r", "") for i in lines] #remove r from each item