python - 如何在 Python 3 中使用请求绕过单选按钮抓取数据?
问题描述
我想从这个网站上抓取数据。访问后,我们需要选择单选按钮条件为“TIN”,然后输入 TIN 号。作为“27680809621V”并单击提交按钮。我不知道该怎么做我被卡住了,因为没有名称或价值。
import requests
from bs4 import BeautifulSoup
s = requests.session()
req = s.get('https://mahagst.gov.in/en/know-your-taxpayer')
soup = BeautifulSoup(req.text,'lxml')
dictinfo = {i['name']:i.get('value','') for i in soup.select('input[name]')}
有人请帮助我。
解决方案
选择使用选定的 Tin 发出 GET 请求 :) 这就是您将获取 json 响应的方式,因此不需要 BeautifulSoup。
from requests import Session
s = Session()
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) '\
'AppleWebKit/537.36 (KHTML, like Gecko) '\
'Chrome/75.0.3770.80 Safari/537.36',
'Accept': 'application/json'
}
# Add headers
s.headers.update(headers)
BASE_URL = 'https://mahagst.gov.in/sap/opu/odata/sap/ZMSTD_KYT_SRV/TinDetailSet'
params = {
"$filter": "(Tin eq '27680809621V')"
}
r = s.get(BASE_URL, params=params)
data = r.json()
print(data)
并且数据返回是一个漂亮的 json(dictionary) :)
数据是字典和列表。因此,您可以使用您的 Python 技能来获取变量。例如data['d']['results']
:) 希望这会对你有所帮助。
推荐阅读
- ruby-on-rails - 对临时站点的 POST 请求如何工作?
- vba - 如何在 iif 真假结果中嵌套表达式(SSRS 报告)
- ruby-on-rails - 文件扩展名的 Shrine 验证不允许 Facebook 图片
- ios - iOS MapboxMaps v10 和 MapboxSearch SKD 不兼容问题
- python - 从 csv 文件中分离一个包含多行的列并在 Python 中对它们进行排序
- r - 如果 x 中没有匹配项,如何加入两个数据框(x 和 y)并添加一行
- python - 通过 ParamSpec 输入一个接受参数的装饰器(PEP-612,Python 3.10)
- postgresql - 具有 Null 值的 PostgreSQL 约束
- angularjs - 在 CEF 中运行的 Angularjs 应用程序中看到的框
- sql - Oracle:按数据分布不均的索引列排序