获取执行python程序的空白屏幕。在
请帮忙。这可能是一个重复的问题,但我对Python不太了解,因为我是一个Android开发人员。在
这是我的代码:
import sys
import requests
from bs4 import BeautifulSoup, SoupStrainer
home_url = 'https://parivahan.gov.in/rcdlstatus/'
post_url = 'https://parivahan.gov.in/rcdlstatus/vahan/rcDlHome.xhtml'
# Everything before the last four digits: GJ03KA
first = sys.argv[1]
# The last four digits: 0803
second = sys.argv[2]
r = requests.get(url=home_url)
cookies = r.cookies
soup = BeautifulSoup(r.text, 'html.parser')
viewstate = soup.select('input[name="javax.faces.ViewState"]')[0]['value']
data = {
'javax.faces.partial.ajax':'true',
'javax.faces.source': 'form_rcdl:j_idt32',
'javax.faces.partial.execute':'@all',
'javax.faces.partial.render': 'form_rcdl:pnl_show form_rcdl:pg_show form_rcdl:rcdl_pnl',
'form_rcdl:j_idt32':'form_rcdl:j_idt32',
'form_rcdl':'form_rcdl',
'form_rcdl:tf_reg_no1': first,
'form_rcdl:tf_reg_no2': second,
'javax.faces.ViewState': viewstate,
}
r = requests.post(url=post_url, data=data, cookies=cookies)
soup = BeautifulSoup(r.text, 'html.parser')
table = SoupStrainer('tr')
soup = BeautifulSoup(soup.get_text(), 'html.parser', parse_only=table)
print(soup.get_text())
实际返回有效表单网页的URL是
'https://parivahan.gov.in/rcdlstatus/'
。在通过在浏览器中输入示例ID(注册号),错误消息“注册号不存在!!!请核对一下号码。(这完全有道理。我真希望你没有在公众场合公开身份笑)
因为我没有有效的身份证。请看看这能不能解决你的问题。在
另一个需要注意的是,用于输入注册号的字段应该是
"form_rcdl:tf_reg_no1"
和"form_rcdl:tf_reg_no2"
。您可以查看网页的HTML源代码(例如Chrome中的Ctrl+C)进行验证。在如果打印出请求post(r)的结果,就会得到500个错误,这是针对服务器错误的通用http响应。我猜是url资源不好或者发布到它的数据格式不正确
请允许我针对这个新的问题提出一个新的答案。在
在尝试了一些仅使用
requests
和urllib
的方法后,我认为使用selenium
webdriver控制器更好。在下面的代码将根据需要抓取表行。在
下面演示了在soup中打印出表html标记的结果。在
我希望在你尝试lol之前,政府不要发现并阻止这种方式
希望这有帮助!如果您感兴趣,可以参考以下参考资料:
相关问题 更多 >
编程相关推荐