首页 > 解决方案 > 如何在 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]')}

有人请帮助我。

标签: pythonpython-3.xweb-scrapingrequestpython-requests

解决方案


选择使用选定的 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)

这就是我找到 URL 和参数的方式 在此处输入图像描述

并且数据返回是一个漂亮的 json(dictionary) :) 在此处输入图像描述

数据是字典和列表。因此,您可以使用您的 Python 技能来获取变量。例如data['d']['results']:) 希望这会对你有所帮助。


推荐阅读