【问题标题】:404: [33mGET /search?q=books HTTP/1.1[0m" 404 -404:[33mGET /search?q=books HTTP/1.1[0m”404 -
【发布时间】:2020-07-14 20:29:43
【问题描述】:

我是网络抓取和制作 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 -

【问题讨论】:

    标签: python api flask


    【解决方案1】:

    How do you get a query string on Flask?

    您似乎错误地获取了查询参数。

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

    什么时候应该:

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

    这样做会返回 200,但数据为空白。我建议查看你的抓取元素:

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

    一旦你用汤获得了正确的元素,你应该开始看到返回数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-03
      • 2016-04-11
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      相关资源
      最近更新 更多