最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用selenium和requests組合實(shí)現(xiàn)登錄頁(yè)面

 更新時(shí)間:2020年02月03日 10:30:27   作者:一起來(lái)學(xué)python  
這篇文章主要介紹了如何使用selenium和requests組合實(shí)現(xiàn)登錄頁(yè)面,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了如何使用selenium和requests組合實(shí)現(xiàn)登錄頁(yè)面,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、在這里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() # 導(dǎo)出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() # 關(guān)閉chrome
          #獲取主頁(yè)的
          # 如果需要保存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()))

通過(guò)使用cookies = driver.get_cookies() #我們獲取了cookie那么我們?cè)跤媚亍?/p>

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

1.創(chuàng)建一個(gè)Session對(duì)象

req = requests.Session() # 構(gòu)建Session

2.轉(zhuǎn)換上面的cookies對(duì)象

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

3.開(kāi)始訪問(wèn)該網(wǎng)站的需求頁(yè)面

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

好了就是這么簡(jiǎn)單,另外補(bǔ)充一個(gè)經(jīng)常使用的庫(kù)fake-useragent,可以獲取隨機(jī)的useragent,但是其中谷歌的useragent版本比較低,尤其在訪問(wèn)知乎的時(shí)候,會(huì)提示瀏覽器版本低的信息,這一點(diǎn)需要注意。

另外擁有一個(gè)headers是對(duì)爬蟲起碼的尊重,所以有個(gè)構(gòu)建好的headers是非常必要的。我就經(jīng)常用下面的例:

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 #獲取隨機(jī)的useragent
    }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python基礎(chǔ)請(qǐng)求庫(kù)urllib模塊使用深入探究

    Python基礎(chǔ)請(qǐng)求庫(kù)urllib模塊使用深入探究

    在Python中,urllib庫(kù)是一個(gè)強(qiáng)大的模塊,用于處理URLs,它包含了多個(gè)子模塊,其中urllib.request是用于發(fā)出HTTP請(qǐng)求的核心組件,本文將深入探討urllib的基本使用、高級(jí)功能以及一些實(shí)際場(chǎng)景的示例,方便更全面地了解這個(gè)重要的網(wǎng)絡(luò)請(qǐng)求工具
    2024-01-01
  • 如何使用yolov5輸出檢測(cè)到的目標(biāo)坐標(biāo)信息

    如何使用yolov5輸出檢測(cè)到的目標(biāo)坐標(biāo)信息

    YOLOv5是一系列在 COCO 數(shù)據(jù)集上預(yù)訓(xùn)練的對(duì)象檢測(cè)架構(gòu)和模型,下面這篇文章主要給大家介紹了關(guān)于如何使用yolov5輸出檢測(cè)到的目標(biāo)坐標(biāo)信息的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • python實(shí)現(xiàn)DES加密解密方法實(shí)例詳解

    python實(shí)現(xiàn)DES加密解密方法實(shí)例詳解

    這篇文章主要介紹了python實(shí)現(xiàn)DES加密解密方法,以實(shí)例形式較為詳細(xì)的分析了基于Python實(shí)現(xiàn)的DES加密與解密技巧,需要的朋友可以參考下
    2015-06-06
  • 詳解python腳本自動(dòng)生成需要文件實(shí)例代碼

    詳解python腳本自動(dòng)生成需要文件實(shí)例代碼

    這篇文章主要介紹了詳解python腳本自動(dòng)生成需要文件實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • django 發(fā)送手機(jī)驗(yàn)證碼的示例代碼

    django 發(fā)送手機(jī)驗(yàn)證碼的示例代碼

    本篇文章主要介紹了django 發(fā)送手機(jī)驗(yàn)證碼的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python設(shè)置和解除Word文檔保護(hù)的實(shí)現(xiàn)步驟

    Python設(shè)置和解除Word文檔保護(hù)的實(shí)現(xiàn)步驟

    在日常工作和學(xué)習(xí)中,我們經(jīng)常需要使用Word文檔來(lái)記錄和分享重要的信息,為了確保文檔內(nèi)容的安全性和完整性,了解如何保護(hù)和取消保護(hù)Word文檔顯得尤為重要,這篇博客將詳細(xì)介紹如何使用Python設(shè)置和解除Word文檔的保護(hù),需要的朋友可以參考下
    2025-02-02
  • Python部署web開(kāi)發(fā)程序的幾種方法

    Python部署web開(kāi)發(fā)程序的幾種方法

    本篇文章主要介紹了Python部署web開(kāi)發(fā)程序的幾種方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-05-05
  • python openpyxl提取Excel圖片實(shí)現(xiàn)原理技巧

    python openpyxl提取Excel圖片實(shí)現(xiàn)原理技巧

    在這篇文章中,將介紹如何使用openpyxl來(lái)提取Excel中的圖片,以及它的原理和技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Python利用Django如何寫restful api接口詳解

    Python利用Django如何寫restful api接口詳解

    這篇文章主要給大家介紹了關(guān)于Python利用Django如何寫restful api接口的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • Python的Flask框架中web表單的教程

    Python的Flask框架中web表單的教程

    這篇文章主要介紹了Python的Flask框架中web表單的教程,表單是學(xué)習(xí)各個(gè)web框架中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-04-04

最新評(píng)論

中西区| 瓮安县| 江津市| 建宁县| 江油市| 班戈县| 马公市| 三门县| 上栗县| 鄂尔多斯市| 大安市| 秭归县| 阳谷县| 贵港市| 江陵县| 长海县| 建湖县| 克什克腾旗| 孟州市| 内黄县| 如皋市| 东乌珠穆沁旗| 交口县| 曲水县| 平山县| 紫阳县| 班玛县| 汉阴县| 广汉市| 滦南县| 垫江县| 苍南县| 白城市| 犍为县| 赞皇县| 济南市| 桐梓县| 迁西县| 桐城市| 蓬溪县| 丰台区|