Использование Flask и Python У меня есть сайт, работающий на localhost, который позволяет пользователю выбрать определенный месяц для загрузки отчет для. Исходя из выбранного месяца, я буду импортировать импортированный файл веб-скрепок, который извлекает данные с другого сайта (требуется вход в систему). В моем скрипте scarping используется Mechanize.Невозможно выполнить скрипт веб-скребка python успешно после того, как пользователь отправит форму на веб-сайт, созданный с помощью Flask со второго раза.
Вот часть кода, где мой веб-соскоб файл (webscrap.py) импортируется после того, как кнопка загрузки нажата (выбор делается на office.html):
@app.route('/office/', methods=['GET','POST'])
def office():
form=reportDownload()
if request.method=='POST':
import webscrap
return render_template('office.html', success=True)
elif request.method=='GET':
return render_template('office.html', form=form)
В render_template методе , success = True передается как аргумент, так что мой скрипт office.html отобразит сообщение об успешном завершении, если нет (когда это запрос GET), он отобразит форму для выбора пользователя. Вот мой сценарий для office.html:
{% extends "layout.html" %}
{% block content %}
<h2>Office</h2>
{% if success %}
<p>Report was downloaded successfully!</p>
{% else %}
<form action="{{ url_for('office') }}" method="POST">
<table width="70%" align="center" cellpadding="20">
<tr>
<td align="right"><p>Download report for: </p></td>
<td align="center"><p>Location</p>
{{form.location}}</td>
<td align="center"><p>Month</p>
{{form.month}} </td>
<td align="center"><p>Year</p>
{{form.year}} </td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td align="center">{{form.submit}} </td>
</tr>
</table>
</form>
{% endif %}
{% endblock %}
У меня есть проблема, когда я хочу сделать дополнительные загрузки, то есть после загрузки в первый раз, я возвращаюсь на страницу офиса и скачать отчет снова. Во второй попытке сообщение об успешности отображается, но ничего не загружается.
В моем веб-соскоб сценарий, используя механизацию и cookiejar, у меня есть несколько строк кода в начале:
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
и я приступаю с веб выскабливание.
При запуске файла соскабливания в сети на моем терминале (или командной строке) скрипт выполняется без каких-либо проблем, даже если я запустил его второй или третий раз. Поэтому я думаю, что это может быть проблемой с кодами сайта.
Любые предложения будут оценены! Я пробовал различные способы решения проблемы, такие как использование прямого перенаправления, или попытки очистить файлы cookie в cookiejar. До сих пор никто не работал, или я могу использовать методы неправильно.
Спасибо заранее!
Большое спасибо @cuducos, это работает сейчас! :) и спасибо за объяснение проблемы и решения так ясно! – ctyneg