2023最新详细:使用selenium携带cookie登录QQ空间,爬取指定好友空间说说照片

这篇具有很好参考价值的文章主要介绍了2023最新详细:使用selenium携带cookie登录QQ空间,爬取指定好友空间说说照片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面:最近学了爬虫,正好爬取一下指定好友的所有空间说说照片,之前使用selenium账号密码登录,模拟登录次数过多,会加验证码,甚至导致QQ冻结,所以采用cookie登录


思路

首先获取cookie,使用cookie登陆之后通过空间好友栏搜索指定好友,并进入好友空间,从而爬取说说照片,注意说说分纯文字,(文字+)图片,(文字+)链接,(文字+)视频,因为首次默认加载空间说说数量限制,通过模拟屏幕滑动加载所有说说,再通过xpath定位处理,解析出图片src,进而下载持久化存储。

2023最新详细:使用selenium携带cookie登录QQ空间,爬取指定好友空间说说照片,selenium,python,爬虫

导入所需包

from selenium import webdriver
from time import sleep
from lxml import etree
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
import os
import requests
import re
import json

登录QQ空间

1.获取cookie

安装Google插件EditThisCookie

2023最新详细:使用selenium携带cookie登录QQ空间,爬取指定好友空间说说照片,selenium,python,爬虫

 导出cookie

2023最新详细:使用selenium携带cookie登录QQ空间,爬取指定好友空间说说照片,selenium,python,爬虫

拿到cookie,节选如下,要修改一下cookie 

{
    "domain": ".qzone.qq.com", #均修改为 "domain": ".qq.com",不然出现域名不匹配问题
    "hostOnly": false,
    "httpOnly": false,
    "name": "zzpaneluin",
    "path": "/",
    #  "sameSite": "unspecified", 注释这行方式或者设置属性值为None
    "secure": false,
    "session": true,
    "storeId": "0",
    "value": "",
    "id": 19
},


 2.携带cookie登录
url = 'https://qzone.qq.com/'
search_name = input('请输入好友姓名')
# 粘贴通过EditThisCookie获取的页面cookie信息
cookies = [ ]
chrome_options = Options()
# 不显示页面
# chrome_options.add_argument('--headless')
# chrome_options.add_argument('--disable-gpu')
# 反自动检测
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
# 创建一个Service对象,指定ChromeDriver的路径
service = Service('E:/appData/webCrawlerStu/C7.selenium/chromedriver.exe')
# 通过Service对象来初始化Chrome WebDriver
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.get(url)
sleep(3)

# 通过add_cookie方法添加cookie
for cookie in cookies:
    driver.add_cookie(cookie)

sleep(3)
driver.refresh()    # 刷新页面验证是否登录成功

进入好友空间

# 获取所有窗口句柄。句柄的顺序:先出现的先加入列表。最后出现的,最后加入列表。
wins = driver.window_handles
# 切换到最新打开的窗口
driver.switch_to.window(wins[-1])
driver.maximize_window()
# 进入好友空间
driver.implicitly_wait(5)  # 隐示等待,为了等待充分加载好网址,全局的
driver.find_element('id', 'tab_menu_care').click()
driver.find_element('id', 'aMyFriends').click()
driver.find_element('id', 'friend_search_input').send_keys(search_name)
driver.find_element('xpath', '//*[@id="friends-drop-down"]/div[2]/div/div/div[1]/div[1]/button').click()
driver.find_element('xpath', '//*[@id="search_friend_result"]/li/a').click()

wins = driver.window_handles
driver.switch_to.window(wins[-1])
# 点击我知道了
driver.find_element('xpath', '//*[@id="friendship_promote_layer"]/table/tbody/tr[1]/td[2]/a').click()

 滚动屏幕加载所有说说

def scroll_to_bottom(driver):
    # 设置初始滚动位置
    scroll_position = 0
    # 不断向下滑动直到见底
    while True:
        # 向下滚动一屏的高度
        driver.execute_script(
            f"window.scrollTo(0, {scroll_position + driver.execute_script('return window.innerHeight;')});")

        # 等待一段时间,让页面加载
        sleep(1.5)  # 可以根据实际情况调整等待时间
        # 更新滚动位置
        new_scroll_position = driver.execute_script("return window.pageYOffset;")
        if new_scroll_position == scroll_position:
            # 如果滚动位置没有发生变化,说明已经到达底部,退出循环
            break
        # 更新滚动位置
        scroll_position = new_scroll_position

scroll_to_bottom(driver)
print('屏幕滑动到底!')

说说数据解析获取图片src

# 转化到iframe
driver.switch_to.frame('QM_Feeds_Iframe')
with open('./porfile.html', 'w', encoding='utf-8') as fp:
    fp.write(driver.page_source)
sleep(5)

# 获取说说图片链接
imgsDownloadList = []
tree = etree.HTML(driver.page_source)
lis = tree.xpath('//ul[@id="host_home_feeds"]/li')
for li in lis:
    # 去除多余空格
    date = li.xpath('./div[1]/div[@class="user-info"]/div[@class="info-detail"]/span/text()')[0]
    post_date = re.sub(r"\s+", "", date).replace(':', '时') + '秒'
    a_list = li.xpath('./div[2]/div[1]/div[2]/div[1]/div[1]//a')
    # 防止纯文本
    if not a_list:
        continue
    for ref, a in enumerate(a_list, start=1):
        # 因为说说视频和图片a标下img标
        # 纯文字,(文字+) 视频 , (文字+) 图片
        img_src_list = a.xpath('.//img/@src')
        if img_src_list:
            img_src = img_src_list[0]
        else:
            # 说说类型为分享链接 ,处理找不到元素的情况
            continue
        img_name = f"{post_date}_{ref}.jpg"
        img_profile = {
            'img_name': img_name,
            'img_src': img_src
        }
        imgsDownloadList.append(img_profile)

持久化存储

# 持久化存储包含字典对象的列表
my_list = [{"name": "John", "age": 30}, {"name": "Alice", "age": 25}]
with open("./data.json", "w") as fp:
    json.dump(imgsDownloadList, fp)

# 持久化存储
# UA伪装
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'
}

location = './QzoneOf' + search_name
if not os.path.exists(location):
    os.mkdir(location)

for image in imgsDownloadList:
    source = requests.get(url=image['img_src'], headers=headers).content
    filename = location + '/' +  image['img_name']
    with open(filename, 'wb') as fp:
        fp.write(source)

sleep(2)
driver.quit()

ps:图片名称以时间+序列号命名,最后还可以使用线程池处理下载图片,如有问题希望指正...文章来源地址https://www.toymoban.com/news/detail-644423.html

到了这里,关于2023最新详细:使用selenium携带cookie登录QQ空间,爬取指定好友空间说说照片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在scrapy 使用selenium模拟登录获取cookie

    前言 最近有一点点爬虫需求,想总结一下scrapy框架的一些基本使用方法,加深印象,自己一直习惯使用一些脚本文件运行爬虫,面对数据量非常大,稳定性要求比较高的,效率需求比较高的情况下还是用scrapy较为合适,scrapy是一个异步的框架,所有的请求都是阻塞的,虽然在

    2024年02月11日
    浏览(62)
  • Selenium自动化测试框架中使用Cookies绕过登录

    在使用selenium测试后台时常常每个流程都需要走登录流程,这样自然比较浪费时间。如果遇到登录需要输入验证码等情况,就可能出师未捷身先死。 在Web应用中,登录状态通常是通过Cookie中对应的session id验证的。也是就是说,我们只要携带上登录后的Cookies,浏览器就会自动

    2024年02月09日
    浏览(48)
  • 【java爬虫】使用selenium通过加载cookie的方式跳过登录

    前言 相信很多人在使用selenium的时候都有一个困惑,就是每一次打开的浏览器实例都是不带cookie的,当有一些页面需要登录操作的时候可能就会比较麻烦,每次都需要手动登录。 其实会造成这个问题的原因是每次打开的浏览器都不会加载本地的cookie,相当于环境被隔离了。

    2024年04月12日
    浏览(45)
  • 微信小程序 - 2023年最新版手机号快捷登录详细教程

    最近开发公司手机快捷登录的功能,花费了不少时间,这里附上详细教程。 这里以海底捞小程序的图片为例,如有侵权请联系小编删除。 1、如果在微信开发者工具弹出下边的提示,不要慌张,用真机预览,其实是生效的。

    2024年02月09日
    浏览(71)
  • 利用Python中selenium库爬虫实现中国裁判文书网自动登录批量下载功能——最新版详细教程!!

    如果电脑上没有chrome浏览器或者当前chrome浏览器不是最新版,请先去chrome官网下载安装最新版chrome浏览器 https://www.google.cn/chrome/index.html 什么是ChromeDriver ChromeDriver是一种用于自动化和控制Google Chrome浏览器的工具。它是一个开源的项目,由Google维护,并提供给开发者使用。Ch

    2024年02月04日
    浏览(118)
  • 使用腾讯云服务器+Nonebot2+go-cqhttp搭建QQ聊天机器人【保姆级教程 2023最新版】

    下载go-cqhttp 这里有不同版本的cqhttp,并且对每个版本都有介绍。但是大家可以看到有 arm与adm 不同的版本,这两个啥关系呢? 严格来说, AMD和ARM没有任何关系 。AMD是桌面级处理器和桌面级GPU的生产厂商,而ARM是移动级处理器的生产厂商。AMD是目前业内唯一一个可以提供高性能

    2023年04月18日
    浏览(50)
  • 2023最新可用QQ机器人框架整理

    官网:www.qvbot.com 稳定、高效、免费的QQ机器人框架。支持多种语言二次开发可现实群管、聊天、便民服务等多种功能。功能更强大,无限创意,QYBot因你而精彩 官网:http://www.myqqx.xyz 不多说 官网:http://www.myqqx.top 不多说 官网:https://ovqq.cc/ OVQQ目前拥有OPC(PC)、OAZ(移动)、OWe

    2024年02月05日
    浏览(60)
  • 2023最新!QQ接入ChatGpt!!!保姆级教程

    直接先上gitee!!! 基于go-cqhttp的qqbot: java实现基于cqhttp,ws连接 由于当前chatgpt热度不断,网上众多的基于chatgpt提供的api做到chat网站层出不穷,但这些网址每次都得找,有些麻烦,我就在想能不能直接QQ接入chatgpt,想法一出,开始找资料开干! 1.申请一个openai官网的key 这一步

    2024年02月07日
    浏览(62)
  • 2023最新使用微信小程序完成一键授权登录

    前言: 使用开发工具:小程序。在我这一篇已经详细介绍了小程序的安装介绍今天我给大家带来的是微信的一键授权登录,保存用户信息,退出的功能!!!希望看完了这篇博客能够对你有帮助!!! 效果: 登录获取到用户信息: 思路 :点击按钮获取到用户信息(调用方

    2024年02月08日
    浏览(74)
  • selenium利用cookies实现自动登录

    原理很简单,首先手动完成登录后,把cookies保存到本地,下次再把cookies注入到浏览器里面,就自动实现了登录 最近在学习写python的自动化脚本,但是发现测试工具打开之后的网页是没有用户自己打开浏览器时记录的cookie,简单来说也就是打开的网站不会自己登录,所以想要简单

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包