【问题标题】:Fetch path from URL and use it within python script从 URL 获取路径并在 python 脚本中使用它
【发布时间】:2022-06-12 13:23:50
【问题描述】:

G'day 伙计们,我正在开发一个从 BOM (https://bom.gov.au) 中提取天气数据的 python 项目。 该脚本可以正常工作,但是我希望它能够在发布请求中使用部分 URL。即,用户导航到https://example.com/taf/ymml,脚本运行并在 POST 中使用 YMML。

我正在使用的脚本如下。我想将 myobj 中的“YSSY”换成从用户导航到的 url 中提取的东西。

import requests
import re

url = 'http://www.bom.gov.au/aviation/php/process.php'
myobj = {'keyword': 'YSSY', 'type': 'search', 'page': 'TAF'}
headers = {'User-Agent': 'Chrome/102.0.0.0'}

x = requests.post(url, data = myobj, headers=headers)

content = x.text

stripped = re.sub('<[^<]+?>', ' ', content)
split_string = stripped.split("METAR", 1)
substring = split_string[0]

print(substring)

有什么想法吗?

【问题讨论】:

  • 我是否正确理解您的脚本将在服务器(“example.com/taf”)上运行,并且当用户调用“example.com/taf/ymml”时,您想要捕获“ ymml" 字符串与您的脚本?
  • 或者您是否希望用户在本地运行您的脚本并通过命令行或 GUI 提供一个 url,然后您想提取该 url 的一部分?
  • 是的,一旦我让它正常工作,它就会在服务器上运行。我想捕获 ymml 字符串并在脚本中使用它。
  • @Svenito 有什么想法吗?
  • 对不起。我仍然没有完全理解你的想法。您的网站前端将是什么,以及谁将使用哪些信息调用您的 python 脚本。据我所知,您不能直接将 Python 用作网络服务器前端?

标签: python url post python-requests


【解决方案1】:

好的,所以我已经设法使用 fastapi 来完成这项工作。当用户导航到 example.com/taf/ymml 时,该站点将以纯文本形式返回 ymml 的 taf。它可以替代任何澳大利亚机场。我还没有弄清楚的一件事是如何删除 taf 周围的方括号,但这是另一个问题。

from fastapi import FastAPI
import requests
from bs4 import BeautifulSoup


app = FastAPI()

@app.get("/taf/{icao}")
async def read_icao(icao):
    url = 'http://www.bom.gov.au/aviation/php/process.php'
    myobj = {'keyword': icao, 'type': 'search', 'page': 'TAF'}
    headers = {'User-Agent': 'Chrome/102.0.0.0'}

    x = requests.post(url, data = myobj, headers=headers)

    content = x.text

    split_string = content.split("METAR", 1)
    substring = split_string[0]

    soup = BeautifulSoup(substring, 'html.parser')

    for br in soup('br'):
        br.replace_with(' ')

    #Create TAFs array.


    tafs = []

    for taf in soup.find_all('p', class_="product"):
        full_taf = taf.get_text()


        tafs.append(full_taf.rstrip())



    return {tuple(tafs)}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    相关资源
    最近更新 更多