1. selenium的安装和chromedriver的安装

selenium的安装:

pip install selenium

chromedriver的安装:

有两个下载地址:
1、http://chromedriver.storage.googleapis.com/index.html
2、https://npm.taobao.org/mirrors/chromedriver/
注意:chromedriver的版本一定要与Chrome的版本一致

2. 配置

2.1 解压chromedriver.exe到Google Chrome.exe所在的文件夹里

selenium获取cookies请求 selenium如何获取cookie_python


selenium获取cookies请求 selenium如何获取cookie_chrome_02


2.2 配置环境变量

selenium获取cookies请求 selenium如何获取cookie_chrome_03


2.3 验证:cmd下输入chromedriver验证是否安装成功

selenium获取cookies请求 selenium如何获取cookie_python_04

3. 外网用法

项目应用:XQD_20200506.py
注:以下代码可以成功实现,存储在微软本,未体现在XQD_20200506.py的代码里

import requests
from selenium import webdriver
import time
url = 'http://admin.pro.8848map.cn/login.php'

#创建浏览器对象
#指定chrome的驱动
#执行到这里,Selenium会到指定的路径将chrome driver程序运行起来
driver = webdriver.Chrome()           
driver.get(url)    # 请求页面
time.sleep(3)

#根据xpath、selector、id、class等元素进行信息传入或者执行点击操作
driver.find_element_by_xpath('//*[@class="form-control"]').send_keys('输入用户名')         # 登录名的输入框
driver.find_element_by_css_selector('input[type="password"]').send_keys('输入密码')  # 密码的输入框
time.sleep(3)
driver.find_element_by_css_selector('input[type="button"]').click()                             # 点击登录按钮
time.sleep(5)
driver.find_element_by_xpath('//*[@id="bs-example-navbar-collapse-1"]/ul[1]/li[1]/a').click()   # 点击"兴趣管理"
time.sleep(5)
driver.find_element_by_xpath('//*[@id="buttonSearch"]').click()   # 点击"查询"
time.sleep(5)

#此时已进入最终目标页面,可以直接获取最终目标页面的cookie
cookie_tag = driver.get_cookies()
print(cookie_tag)

# 关闭浏览器(选择性操作)
driver.close()                 

#处理cookie成需要的格式
cookie = cookie_tag[0]['name'] + '=' + cookie_tag[0]['value']
print(cookie)

#用获取到的cookie,进行requests.get请求
url = 'http://admin.pro.8848map.cn/poi/getPoiByEnvelope.php?zoom=4&eminx=120.56013878705772&eminy=31.175266787973968&emaxx=120.6891056416083&emaxy=31.42393136561657&start=0&offset=200'
headers = {
   'Cookie': cookie,
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
}
html = requests.get(url=url, headers=headers)
print(html.text)

4. 内网用法

项目出自:XieCha_0417.py、YiYi_0512.py(协查和异议、包括分纳税人三个项目)
内网三个项目存储在公司本

异议项目难点复盘:

  1. selenium输入了用户名和密码成功登陆后,进入的页面跳出一个有确认交互框的弹框,可以用python操作enter键解决;
  2. 消除弹框后,紧接着又跳出一个重要提示框,只有右上角有x。
    一开始解决这个弹出框是找到x所对应的元素,然后click()实现,但是一直报错(找不到这个元素)。
    经人提醒,此时的url已经变了,跟登录时的url不是同一个,于是换成了此时的url,成功解决。
  3. 解决了两个弹框后,按照惯用思路,就将终极目标url赋值给第三个url,然后拿到cookie,但怎么都实现不了(还会继续出现上述两个弹框)。
    原因是:这个终极目标url是传入了很多参数(前端页面有N多选择框,对其中几个做出了选择)后的url,并且各种参数没有体现在url中
    解决方案:拿取referer后的url【成功进入未选择的页面】,将其作为第三个url,亦能成功获取cookie。

5. 详细参考

具体用法参考: https://www.jianshu.com/p/1b63c5f3c98e