You need to enable JavaScript to run this app. 如何使用input命令构造网站地址实现指定药品价格数据爬取
优惠活动
大模型
产品
解决方案
定价
更多

如何使用input命令构造网站地址实现指定药品价格数据爬取

错误原因

你使用的字符串和变量直接相邻的拼接写法不符合Python语法规范,会触发SyntaxError语法错误,Python无法识别这种拼接逻辑。

正确实现方案

  • 方法1:使用+运算符拼接字符串
    代码示例:
    a = input("Enter drug: ")
    url = 'https://bnf.nice.org.uk/medicinal-forms/' + a + '.html'
    
  • 方法2:使用f-string拼接(推荐,Python3.6及以上版本支持,可读性最高)
    代码示例:
    a = input("Enter drug: ")
    url = f'https://bnf.nice.org.uk/medicinal-forms/{a}.html'
    
    后续切换为tkinter的entry取值时,直接替换变量即可,不需要修改拼接逻辑:
    drug_name = entry.get()
    url = f'https://bnf.nice.org.uk/medicinal-forms/{drug_name}.html'
    
  • 方法3:使用str.format()方法(兼容更低Python版本)
    代码示例:
    a = input("Enter drug: ")
    url = 'https://bnf.nice.org.uk/medicinal-forms/{}.html'.format(a)
    

优化提示

目标站点的药品路径要求名称为全小写,多单词之间用短横线分隔,建议对用户输入做预处理,避免出现404错误:

a = input("Enter drug: ").strip().lower().replace(" ", "-")

修正后完整可运行代码

import pandas as pd
import requests

a = input("Enter drug: ").strip().lower().replace(" ", "-")
url = f'https://bnf.nice.org.uk/medicinal-forms/{a}.html'
page = requests.get(url)
# 增加请求状态校验,避免请求失败后后续代码报错
if page.status_code == 200:
    table = pd.read_html(page.text)
    print(len(table))
    df = pd.concat(table)
    print(df)
    df.to_excel('prices.xlsx')
else:
    print(f"请求失败,状态码:{page.status_code},请检查输入的药品名称是否正确")

内容的提问来源于stack exchange,提问作者Lord_Amenegg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 09:39:04