404: [33mGET / search? Q = books HTTP / 1.1 [0m "404 - - PullRequest
0 голосов
/ 14 июля 2020

Я новичок в веб-парсинге и создании API, столкнулся с ошибкой при парсинге веб-сайта электронной коммерции. Ниже мой код python, пожалуйста, проведите меня через то же самое, я получаю «Запрошенный URL не найден на сервере». при работе на локальном хосте.

from flask import Flask , request , jsonify
from bs4 import BeautifulSoup
import requests

app = Flask(__name__)


@app.route('/',methods=['GET'])
def API():
    if request.method == 'GET':
        uri = 'https://www.flipkart.com'
        query = str(request.args['query'])
        print(query)
        if " " in query:
            query = str(query).replace(" ","+")
        else:
            pass

        search = '/search?q=' + query

        ready_uri = uri + search
        print(ready_uri)
        content = requests.get(ready_uri).content
        soup = BeautifulSoup(content, 'html.parser')
        quotes_links = soup.find_all('a', {'class': '_3O0U0u'})
        l = []
        for i in quotes_links:
            d = {}
            quote_url = uri + i.get('href')
            quote_content = requests.get(quote_url).content
            quote_soup = BeautifulSoup(quote_content, 'html.parser')
            d['quote'] = quote_soup.find('p', {'class': '_3wU53n'}).text
            d['author'] = quote_soup.find('p', {'class': '_1vC4OE _2rQ-NK'}).text
            l.append(d)


        return jsonify(l)


if __name__ == '__main__':
    app.run()

Ошибка:

[33mGET /search?q=books HTTP/1.1[0m" 404 -

1 Ответ

0 голосов
/ 14 июля 2020

Как получить строку запроса на Flask?

Кажется, вы неправильно получаете аргумент запроса.

query = str(request.args['query'])

Когда это должно быть :

query = str(request.args.get('query'))

Это возвращает 200, но с пустыми данными. Я бы посоветовал посмотреть на элемент, который вы очищаете:

quotes_links = soup.find_all('a', {'class': '_3O0U0u'})

Как только вы получите правильный элемент с супом, вы должны начать видеть возвращаемые данные.

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