Получение ошибки «Сообщение об исключении: 400 Bad Request: браузер (или прокси) отправил запрос, который этот сервер не может понять» - PullRequest
0 голосов
/ 21 июня 2020

Я получаю «Сообщение об исключении: 400 Плохой запрос: браузер (или прокси) отправил запрос, который этот сервер не может понять». ошибка при выполнении этого кода. Я не получаю сообщения об ошибке, почему он запрашивает блокировку исключения. Пожалуйста, помогите!

Вот мой Python flask код внизу

import os
from flask import Flask, render_template, request, jsonify
from flask_cors import CORS, cross_origin
import requests
from bs4 import BeautifulSoup as bs
from urllib.request import urlopen as uReq

app = Flask(__name__)


@app.route('/', methods=['GET'])  
@cross_origin() 
def homePage():
   return render_template("index.html")

@app.route('/review', methods=['POST', 'GET'])  # route to show the review comments in a web UI
@cross_origin()
def index():
   if request.method == 'POST':
       try:
         searchString = request.form['content'].replace(" ", "") 
         flipkart_url = "https://www.flipkart.com/search?q=" + searchString
         uClient = uReq(flipkart_url) 
         flipkartPage = uClient.read() 
         uClient.close()
         flipkart_html = bs(flipkartPage, "html.parser") 
         bigboxes = flipkart_html.findAll("div", {"class": "bhgxx2 col-12-12"}) 
         del bigboxes[0:3]
         box = bigboxes[0]
         productLink = "https://www.flipkart.com" + box.div.div.div.a['href'] 
         prodRes = requests.get(productLink)
         prodRes.encoding = 'utf-8' 
         prod_html = bs(prodRes.text, "html.parser")
         commentboxes = prod_html.find_all('div', {'class': "_3nrCtb"}) 
   
         filename = searchString + ".csv"
         fw = open(filename, "w")
         headers = "Product, Customer Name, Rating, Heading, Comment \n"
         fw.write(headers)
        
         reviews = []
         for commentbox in commentboxes:
             try:
                 # name.encode(encoding='utf-8')
                 name = commentbox.div.div.find_all('p', {'class': '_3LYOAd _3sxSiS'})[0].text
             except:
                 name = 'No Name'
             try:
                 # rating.encode(encoding='utf-8')
                 rating = commentbox.div.div.div.div.text
             except:
                 rating = 'No Rating'
             try:
                 # commentHead.encode(encoding='utf-8')
                 commentHead = commentbox.div.div.div.p.text
             except:
                 commentHead = 'No Comment Heading'
             try:
                 comtag = commentbox.div.div.find_all('div', {'class': ''})
                 # custComment.encode(encoding='utf-8')
                 custComment = comtag[0].div.text
             except Exception as e:
                 print("Exception while creating dictionary: ", e)

             mydict = {"Product": searchString, "Name": name, "Rating": rating, "CommentHead": commentHead,"Comment": custComment}
             reviews.append(mydict)
         return render_template('results.html', reviews=reviews[0:(len(reviews) - 1)])

      except Exception as e:
         print('The Exception message is: ', e)
         return 'something is wrong'

   else:
     return render_template('index.html')
if __name__ == "__main__":
   #app.run(host='0.0.0.0', port=5000)
   #app.run(host='0.0.0.0', port=port) #for sever
   app.run(host='127.0.0.1', port=8001, debug=True)

вот мой HTML файл кода внизу

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
</head>
<title>Welcome to Review Scrapper</title>
<link rel="stylesheet" href="../static/css/fonts/all.css">
<link rel="stylesheet" type="text/css" href="../static/css/main.css">

<nav id='navbar'>
 <text class="logo">Review Scrapper</text>
 <a href='#content'>Home</a>
 <a href='https://github.com/rs301378'>Github</a>
 <a href='https://www.linkedin.com/in/rohit-sharma-52b369158/'>Portfolio</a>
</nav>

<body>

<div class="content">

    <form action="/review" method="POST">
        <input class="search-box-input" type="text" id="content" placeholder="Search anything...">
        <button class="search-box-button" type="submit" value="Search">Search</button>
    </form>

  </div>

 <footer>
  Made with <i class='fas fa-heart'></i> by Rohit Sharma
 </footer>
 </body>
 </html>

1 Ответ

0 голосов
/ 21 июня 2020

Ваша flask деталь в порядке. Проблема в вашей форме html. Доступ к каждому входу в форме html осуществляется по имени атрибута. Если вы вызываете form.request["content"], вы хотите получить значение ввода с именем content. Ваш вход не имеет даже имени атрибута (просто идентификатор с содержимым имени, но это не так).

Измените свой <input> элемент (добавьте name="content"):

<input name="content" class="search-box-input" type="text" id="content" placeholder="Search anything...">
...