登录多个站点/页面的更简单方法

时间:2015-10-23 09:14:20

标签: python

我对我编码的方式不太满意。是否有一种更简单方便的方法在一个函数中对此进行编码并返回多个页面的输出。

def login():
        url = "http://192.168.2.45/pricelogin.php"
        r = requests.get(url, auth=('pstats', 'pStats'))
        page = r.text
        return page

def loginhighpricingerror():
        pricingerrorurl = "http://192.168.2.45/airline_error.pl"
        peu = requests.get(pricingerrorurl, auth=('pstats', 'pstats'))
        peupage = peu.text
        return peupage

def loginsuccessfullbookings():
        sucurl = "http://192.168.2.45/airlinessucbookings.php"
        suc = requests.get(sucbookingurl, auth=('pstats', 'pstats'))
        sucpage = suc.text
        return sucpage

2 个答案:

答案 0 :(得分:1)

使用会话而不是无会话模块功能:

s = requests.Session()
s.auth=('pstats', 'pStats')

def login():
        url = "http://192.168.2.45/pricelogin.php"
        r = s.get(url)
        page = r.text
        return page

def loginhighpricingerror():
        pricingerrorurl = "http://192.168.2.45/airline_error.pl"
        peu = s.get(pricingerrorurl)
        peupage = peu.text
        return peupage

def loginsuccessfullbookings():
        sucurl = "http://192.168.2.45/airlinessucbookings.php"
        suc = s.get(sucbookingurl)
        sucpage = suc.text
        return sucpage

当然这应该重构,但希望你能看出我的意思。

答案 1 :(得分:0)

我会概括登录功能,将url作为参数传递:

def login(url):
   try:
      r = requests.get(url, auth=('pstats', 'pStats'))
   except requests.exceptions.RequestException as e:
      print e
      return '' # but maybe you want to do something else

   page = r.text
   return page

然后你可以为每个在数组中累积页面的url运行它,例如:

urls = ["http://192.168.2.45/pricelogin.php", "http://192.168.2.45/airline_error.pl", "http://192.168.2.45/airlinessucbookings.php"]

pages = [] # resulting array
for url in urls:
   pages.append(login(url))

注意:我添加了对requests.get例外的检查,因为在出​​现连接问题时可能会失败。

相关问题