执行python文件时不显示输出

时间:2018-05-21 16:04:41

标签: python python-3.x beautifulsoup

执行python程序时出现空白屏幕。

请帮忙。这可能是一个重复的问题,但我不太了解Python,因为我是一名Android开发人员。

这是我的代码:

select date(timestamp('2015-08-27 19:42:53 UTC'), 'America/New_York')

4 个答案:

答案 0 :(得分:2)

如果从post(r)请求中打印出结果,则会收到500错误,这是服务器错误的通用http响应。我的猜测是网址资源不好或发布到它的数据没有正确格式化

答案 1 :(得分:1)

让我根据更新的问题打开一个新答案。

尝试使用requestsurllib的某些方法后,我认为最好使用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标签的结果。

enter image description here

我希望政府在你试用lol

之前不会发现并阻止这种方式

希望这有帮助!如果感兴趣,您可以参考以下参考文献:

答案 2 :(得分:0)

实际返回有效表单网页的网址为'https://parivahan.gov.in/rcdlstatus/'

通过在浏览器中输入示例ID(注册号),错误消息"注册号不存在!请检查号码。"弹出。 (这完全有道理。我希望你没有在公共场合放一个真实的身份证明)

因为我没有有效的身份证来进行测试。请查看这是否解决了您的问题。

注意到另一件事是输入注册号的字段应为"form_rcdl:tf_reg_no1""form_rcdl:tf_reg_no2"。您可以查看网页的HTML源代码(例如Chrome中的Ctrl + C)进行验证。

enter image description here

答案 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())