使用Python Requests+BeautifulSoup通过POST请求获取CESTAT网站表格数据时返回空表格的问题求助
使用Python Requests+BeautifulSoup通过POST请求获取CESTAT网站表格数据时返回空表格的问题求助
各位大佬好!我最近在折腾用Python的Requests和BeautifulSoup抓取CESTAT网站上的案件状态表格数据,结果碰上个棘手的问题——发送POST请求后返回的页面里,目标表格居然是空的,完全拿不到我要的数据,实在摸不着头脑,来求大家帮忙看看哪里出问题了!
我的操作逻辑大概是这样的:
- 先GET访问网站主页,拿到cookies里的csrf_token
- 构造包含csrf_token、查询的区域类型、证件号、验证码(这里暂时填的固定值111111)这些参数的payload
- 把payload以JSON格式POST到casestatus接口
- 解析返回的HTML,找id为
example的表格,但结果啥都没抓到,打印返回的文本也看不到表格的内容
附上我现在的代码:
import requests import sys from bs4 import BeautifulSoup def casestatus_name(csrf, party): try: test = requests.get('https://cestat.gov.in') cookies = test.cookies.get_dict() test.raise_for_status() except Exception as e: print(e) sys.exit(1) payload = { 'csrf_token': cookies['csrf_cookie_name'], 'schema_type': 'bangalore', 'app_type': 'pno', 'token_no': party, 'captcha_code': '111111', 'button3': 'SEARCH' } response = requests.post("https://cestat.gov.in/casestatus", json=payload) soup = BeautifulSoup(response.text, 'html.parser') table = soup.find_all('table', id='example') print(response.text) return response
我自己也瞎琢磨了半天,比如csrf_token是从主页cookies里取的,应该没毛病吧?会不会是我POST请求的参数格式不对?比如网站其实期望接收表单格式的参数,而不是JSON?还有那个验证码,我填固定值会不会直接被服务器拦截了?
备注:内容来源于stack exchange,提问作者Akhil V
相关产品推荐
相关产品推荐

