Python Flask использует html пост-параметр - PullRequest
1 голос
/ 08 мая 2019

Я выполняю обход с 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':

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...