91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣使用selenium和requests組合實現登錄頁面

發布時間:2021-02-01 13:55:37 來源:億速云 閱讀:202 作者:小新 欄目:開發技術

小編給大家分享一下怎樣使用selenium和requests組合實現登錄頁面,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

一、在這里selenium的作用

(1)模擬的登錄。

(2)獲取登錄成功之后的cookies

代碼

def start_login(self):
  chrome_options = Options()
  # 禁止圖片加載,禁止推送通知
  prefs = {
    "profile.default_content_setting_values": {
      "images": 2
    }, "profile.default_content_setting_values.notifications": 2
  }
  chrome_options.add_experimental_option("prefs", prefs)
  if chrome_args().get("headless_flag") == "1":
    chrome_options.add_argument(chrome_args().get("headless"))
  chrome_options.add_argument(chrome_args().get("nogpu"))
  chrome_options.add_argument(chrome_args().get("noinfobars"))
  chrome_options.add_argument(chrome_args().get("max_windows"))
  chrome_options.add_argument(self.Proxy_server)
 
  driver = webdriver.Chrome(chrome_options=chrome_options)
  try:
    get_logger().info("start login.....")
    try:
      # login info
      self.login_name = self.loginInfo.get("login_id")
      self.password = aes_cbc_decrypt(self.loginInfo.get("login_pwd"))
    except Exception:
      get_logger().error("cant get login info,here are detals".format(traceback.format_exc()))
    wait = WebDriverWait(driver, 30)
    print(u"start login in")
    driver.get(self.login_url)
    try:
      login_id = wait.until(
        eccd.presence_of_element_located(
          (By.XPATH, self.Id_xpath))
      )
      login_id.send_keys(self.login_name)
      login_id.send_keys(Keys.ENTER)
      password = wait.until(
        eccd.presence_of_element_located(
          (By.XPATH, self.pwd_xpath))
      )
      password.send_keys(self.password)
      submit = wait.until(
        eccd.presence_of_element_located(
          (By.XPATH, self.login_btn_xpath))
      )
      submit.click()
      # login signal
      #判斷是否顯示 右上角是否顯示用戶名
      login_ok = wait.until(
        eccd.presence_of_element_located(
          (By.XPATH, self.login_ok_xpath))
      )
      try:
        #判斷登錄成功
        if login_ok:
          get_logger().info("get user name successful:"+u"{}".format(login_ok.text))
          try:
            get_weibo_info=driver.find_element_by_xpath(self.forward_home_page)
          except:
 
            driver.get(self.first_page)
 
          forward_home_page_ok = wait.until(
             eccd.presence_of_element_located(
               (By.XPATH, self.forward_home_page))
           )
          forward_home_page_ok.click()
          time.sleep(5)
          self.first_page=driver.current_url
          get_logger().info("get homepage successful,url is {}".format(driver.current_url))
          cookies = driver.get_cookies() # 導出cookie
          get_logger().info("get cookies")
          get_fansnum_ok= wait.until(
              eccd.presence_of_element_located(
                (By.XPATH, self.follow_xpath))
          )
          self.get_followfanshome(driver)
          get_logger().info("get_followfanshome ok")
          self.home_page_source=driver.page_source
          driver.close() # 關閉chrome
          #獲取主頁的
          # 如果需要保存cookies
          self.write_cookie(cookies)
          get_logger().info("get cookies,login ok")
          return cookies
 
 
        else:
          raise RuntimeError('login failed')
      except:
        get_logger().error("login failed")
        return None
 
    except:
      if driver is not None:
        driver.close()
  except Exception as e:
    if driver is not None:
      driver.close()
      get_logger().error("dbs operation error,here are details:{}".format(traceback.format_exc()))

通過使用cookies = driver.get_cookies() #我們獲取了cookie那么我們怎用呢。

二、requests如何使用獲取到的cookies

1.創建一個Session對象

req = requests.Session() # 構建Session

2.轉換上面的cookies對象

for cookie in cookies:
      req.cookies.set(cookie['name'], cookie['value']) # 轉換cookies

3.開始訪問該網站的需求頁面

data = req.get(url, headers=self.headers).text #獲取文本網頁
jsondata = req.get(url, headers=self.headers).json() #獲取json型網頁

好了就是這么簡單,另外補充一個經常使用的庫fake-useragent,可以獲取隨機的useragent,但是其中谷歌的useragent版本比較低,尤其在訪問知乎的時候,會提示瀏覽器版本低的信息,這一點需要注意。

另外擁有一個headers是對爬蟲起碼的尊重,所以有個構建好的headers是非常必要的。我就經常用下面的例:

from fake_useragent import UserAgent as UA
import random
 
headers = {
      'Accept': 'text/html, application/xhtml+xml, image/jxr, */*',
      'Accept - Encoding': 'gzip, deflate',
      'Accept-Language': 'zh-Hans-CN, zh-Hans; q=0.5',
      'Connection': 'Keep-Alive',
      'User-Agent': UA().random #獲取隨機的useragent
    }

看完了這篇文章,相信你對“怎樣使用selenium和requests組合實現登錄頁面”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

克拉玛依市| 普兰店市| 荣昌县| 会东县| 清河县| 漳平市| 泰顺县| 小金县| 宜良县| 蒙阴县| 郎溪县| 靖州| 神池县| 镶黄旗| 高邑县| 天等县| 肥西县| 黄平县| 永新县| 聂拉木县| 吉隆县| 大姚县| 临汾市| 高台县| 资溪县| 浦江县| 顺昌县| 嫩江县| 乐至县| 新野县| 枝江市| 漳州市| 延安市| 衡阳县| 杭锦后旗| 临海市| 长岭县| 当阳市| 应用必备| 美姑县| 长白|