Я выполняю обход с python и использую колбу
Однако я подтвердил, что получил параметр post из формы html, но после этого он продолжает давать сбой в def
app = Flask(__name__)
@app.route('/search', methods = ['POST'])
def search():
if request.method == 'POST':
keyword = request.form['keyword']
#keyword = request.args.get('keyword')
driver.get('https://manage.searchad.naver.com/customers/1625985/tool/keyword-planner')
driver.find_element_by_xpath('//*[@id="wrap"]/div/div/div[1]/div[1]/div/div/div/div[2]/div[1]/div[1]/div[2]/form/div[1]/div/div/textarea').send_keys(keyword)
driver.find_element_by_xpath('//*[@id="wrap"]/div/div/div[1]/div[1]/div/div/div/div[2]/div[1]/div[1]/div[2]/form/div[4]/div/div/ul/li/button/span').click()
try:
title = WebDriverWait(driver, 10) \
.until(EC.presence_of_element_located((By.CSS_SELECTOR, "td.text-left.txt-l > span > span")))
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
datas = []
data = {'title': '', 'month_search_pc': '', 'month_search_mobile': '', 'month_avg_click_pc': '', 'month_avg_click_mobile': '', 'month_avg_rate_pc': '', 'month_avg_rate_mobile': '', 'competition_degree': '', 'adv_cnt': ''}
@app.route('/')
def get_data() -> 'html':
global datas, data
i = 0
for n in soup.find('tbody', attrs={'has-data'}).findAll('tr'):
i += 1-1
data['title'] = n.find('td', attrs={'class': ['text-left', 'txt-l']}).get_text()
data['month_search_pc'] = n.select('td:nth-child(3)')[i].text
data['month_search_mobile'] = n.select('td:nth-child(4)')[i].text
data['month_avg_click_pc'] = n.select('td:nth-child(5)')[i].text
data['month_avg_click_mobile'] = n.select('td:nth-child(6)')[i].text
data['month_avg_rate_pc'] = n.select('td:nth-child(7)')[i].text
data['month_avg_rate_mobile'] = n.select('td:nth-child(8)')[i].text
data['competition_degree'] = n.select('td:nth-child(9)')[i].text
data['adv_cnt'] = n.select('td:nth-child(10)')[i].text
datas.append(dict(data))
return render_template('shop_click_anal.html', result = datas)
if __name__ == '__main__':
app.run(debug=True)
finally:
print('data-end')
else :
print('None')
driver.get('https://manage.searchad.naver.com/customers/1625985/tool/keyword-planner')
try:
@app.route('/')
def get_data1() -> 'html':
return render_template('shop_click_anal.html')
if __name__ == '__main__':
app.run(debug=True)
finally:
print('data-end')
это мой журнал ошибок
AssertionError AssertionError: Функция настройки была вызвана после обработки первого запроса.Обычно это указывает на ошибку в приложении, когда модуль не был импортирован и декораторы или другие функции были вызваны слишком поздно.Чтобы это исправить, убедитесь, что импортировали все ваши модули представления, модели баз данных и все, что связано, в центральном месте, прежде чем приложение начнет обслуживать запросы.
Здесь всегда есть ошибка.
def get_data() -> 'html':