如何使用input命令构造网站地址实现指定药品价格数据爬取
错误原因
你使用的字符串和变量直接相邻的拼接写法不符合Python语法规范,会触发SyntaxError语法错误,Python无法识别这种拼接逻辑。
正确实现方案
- 方法1:使用
+运算符拼接字符串
代码示例:a = input("Enter drug: ") url = 'https://bnf.nice.org.uk/medicinal-forms/' + a + '.html' - 方法2:使用f-string拼接(推荐,Python3.6及以上版本支持,可读性最高)
代码示例:
后续切换为tkinter的entry取值时,直接替换变量即可,不需要修改拼接逻辑:a = input("Enter drug: ") url = f'https://bnf.nice.org.uk/medicinal-forms/{a}.html'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
相关产品推荐
相关产品推荐

