python+selenium+requests爬取qq空间相册时遇到的问题及解决思路

最近研究了下用python爬取qq空间相册的问题,遇到的问题及解决思路如下:

1、qq空间相册的访问需要qq登录并且需是好友,requests模块模拟qq登录略显麻烦,所以采用selenium的driver登录,登录成功之后获取其cookie即可,代码如下

from selenium import webdriver
import requests
driver = webdriver.Chrome()
url = 'https://user.qzone.qq.com/'
driver.get(url)
# 在driver中操作完登录之后,在程序中回车继续
input("继续?")
cookies = driver.get_cookies() #这里就获取了浏览器中的cookies

2、获取cookies之后,用request模块进行操作,并将cookies赋给它

s = requests.session()
#对driver获取的cookies进行处理,提取出我们想要的部分
cookies_ = {}
for cookie in cookies:   
  if cookie['name'] == 'p_skey':
  skey = cookie['value']
  cookies_[cookie['name']] = cookie['value']
# 将cookies_添加到s.cookies 里
requests.utils.add_dict_to_cookiejar(s.cookies, cookies_)

3、此时通过s.get(url),就可以访问到自己登录后才能看见的网址或图片源了

  类似登录后才能进行操作的问题都可以用上述思路进行解决,只不过需要经过手动确认的“半自动”状态,不过之后交给requests,还是能大大提高我们的工作效率

  本篇博文参考了大神的博客文章https://www.zh30.com/python-selenium-qqzone-album.html,十分感谢!

原文地址:https://www.cnblogs.com/shuchengxiang/p/8881410.html