执行python程序时出现空白屏幕。
请帮忙。这可能是一个重复的问题,但我不太了解Python,因为我是一名Android开发人员。
这是我的代码:
select date(timestamp('2015-08-27 19:42:53 UTC'), 'America/New_York')
答案 0 :(得分:2)
如果从post(r)请求中打印出结果,则会收到500错误,这是服务器错误的通用http响应。我的猜测是网址资源不好或发布到它的数据没有正确格式化
答案 1 :(得分:1)
让我根据更新的问题打开一个新答案。
尝试使用requests
和urllib
的某些方法后,我认为最好使用selenium
webdriver控制器。
以下代码将根据需要获取表格行。
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
url = 'https://parivahan.gov.in/rcdlstatus/'
# Optional: Getting "Headless" browser, ie suppressing the browser window from showing
chrome_options = Options()
chrome_options.add_argument("--headless")
# Let the driver open, fill and submit the form
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get(url)
driver.delete_all_cookies()
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.NAME, 'form_rcdl:j_idt34')))
input1 = driver.find_element_by_name('form_rcdl:tf_reg_no1')
input1.send_keys('GJ03KA')
input2 = driver.find_element_by_name('form_rcdl:tf_reg_no2')
input2.send_keys('0803')
driver.find_element_by_name('form_rcdl:j_idt34').click()
wait = WebDriverWait(driver, 10)
# Get the result table
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "form_rcdl:j_idt63"))
)
result_html = driver.page_source
#print(result_html)
soup = BeautifulSoup(result_html, 'lxml')
print(soup.findAll('tr'))
except TimeoutException:
driver.quit()
print('Time out.')
下面演示了在汤中打印表格html标签的结果。
我希望政府在你试用lol
之前不会发现并阻止这种方式希望这有帮助!如果感兴趣,您可以参考以下参考文献:
答案 2 :(得分:0)
实际返回有效表单网页的网址为'https://parivahan.gov.in/rcdlstatus/'
。
通过在浏览器中输入示例ID(注册号),错误消息"注册号不存在!请检查号码。"弹出。 (这完全有道理。我希望你没有在公共场合放一个真实的身份证明)
因为我没有有效的身份证来进行测试。请查看这是否解决了您的问题。
注意到另一件事是输入注册号的字段应为"form_rcdl:tf_reg_no1"
和"form_rcdl:tf_reg_no2"
。您可以查看网页的HTML源代码(例如Chrome中的Ctrl + C)进行验证。
答案 3 :(得分:0)
您已将jdt32硬编码为按钮ID ...请注意,此网站中的按钮ID是动态的...。您的程序应动态获取正确的按钮ID。这是解决方案
import sys
import re
import requests
from bs4 import BeautifulSoup, SoupStrainer
home_url = 'https://parivahan.gov.in/rcdlstatus/?pur_cd=102'
post_url = 'https://parivahan.gov.in/rcdlstatus/vahan/rcDlHome.xhtml'
# Everything before the last four digits: MH02CL
first = sys.argv[1]
# The last four digits: 0555
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']
#print soup.findAll('button', id=re.compile('form_rcdl^'))
#print soup.findAll('button', id=lambda x: x and x.startswith('form_rcdl'))
i = 0
for match in soup.find_all('button', id=re.compile("form_rcdl")):
if i == 0:
button_id= match.get('id')
i = 1
data = {
'javax.faces.partial.ajax':'true',
'javax.faces.source':button_id,
'javax.faces.partial.execute':'@all',
'javax.faces.partial.render': 'form_rcdl:pnl_show form_rcdl:pg_show form_rcdl:rcdl_pnl',
button_id:button_id,
'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)
#print (r.text)
soup = BeautifulSoup(r.text, 'html.parser')
table = SoupStrainer('tr')
soup = BeautifulSoup(soup.get_text(), 'html.parser', parse_only=table)
print(soup.get_text())