dan-baishucaizi

  通过selenium库请求拿到目标网站的cookie,然后用cookie去请求目标网站,可以省略登陆操作

以微博为例,先获取登陆的cookie:

 1 import time
 2 import json
 3 from selenium import webdriver
 4 from selenium.webdriver.support.ui import WebDriverWait
 5 from selenium.webdriver.support import expected_conditions as ec
 6 from selenium.webdriver.common.by import By
 7 
 8 
 9 def save_cookie(the_cookie):  #  直接将获取的cookie保存到json文件
10     with open(\'sina_cookie.txt\', \'w\') as f:
11         json.dump(the_cookie, f)
12 
13 
14 def save_cookies(the_cookies):  #  传入的数据是 :将获取到的cookie用字典保存它的 name 和 value
15     with open(\'sina_cookies.txt\', \'w\') as f:
16         f.write(json.dumps(the_cookies))
17 
18 
19 driver = webdriver.Chrome()
20 driver.get(\'https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F\')
21 driver.maximize_window()
22 
23 WebDriverWait(driver, 20).until(ec.presence_of_element_located((By.XPATH, \'//*[@id="loginName"]\')))
24 
25 try:
26     username = driver.find_element_by_xpath(\'//*[@id="loginName"]\')
27     username.clear()
28     username.send_keys(\'用户名\')
29     time.sleep(1.3)
30     pwd = driver.find_element_by_xpath(\'//*[@id="loginPassword"]\')
31     pwd.clear()
32     pwd.send_keys(\'密码\')
33     time.sleep(2)
34     driver.find_element_by_xpath(\'//*[@id="loginAction"]\').click()
35     WebDriverWait(driver, 20).until(ec.presence_of_element_located((By.XPATH, \'//p[@data-node="title"]\')))
36     print(driver.find_element_by_xpath(\'//p[@data-node="title"]\'))
37 
38     cookie = driver.get_cookies()
39     cookies = {}
40     for item in cookie:
41         cookies[item.get(\'name\')] = item.get(\'value\')
42     save_cookie(cookie)
43     print(\'cookie:\n\', cookie)
44     save_cookies(cookies)
45     print(\'cookies:\n\', cookies)
46 except Exception as e:
47     print(e)
48     pass
49 finally:
50     driver.close()

  使用requests请求时带上cookie,可以直接登陆首页而不需要设置登陆操作。这里可能出问题,可以采用:

在请求之前一定要先请求一下目标网站。

 1 import json
 2 import requests
 3 
 4 with open(\'sina_cookies.txt\') as f:
 5     cookies = json.load(f)
 6     print(cookies)
 7 
 8 url = \'https://weibo.cn\'
 9 result = requests.get(url, cookies=cookies)
10 print(result.text)
11 if \'用户名\' in result.text:
12     print(\'cookie调试成功\')

这里要注意的是我们drvier.get_cookies()获取到的cookie信息是如下的形式:

  

 

分类:

技术点:

相关文章:

  • 2022-02-09
  • 2021-09-27
  • 2021-07-01
  • 2022-12-23
  • 2022-12-23
  • 2021-12-15
  • 2021-04-18
  • 2022-12-23
猜你喜欢
  • 2021-04-11
  • 2021-12-10
  • 2021-11-22
  • 2021-06-13
  • 2022-01-06
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案