python selenium爬虫自动登录实例

拷贝地址:python selenium爬虫自动登录实例_python selenium登录_Ustiniano的博客-CSDN博客

一、概述

我们要先安装selenium这个库,使用pip install selenium 命令安装,selenium这个库相当于机器模仿人的行为去点击浏览器上的元素,这时我们要用到一个浏览器的驱动(这里我用的是谷歌浏览器)。
二、安装驱动
确认浏览器版本

首先我们先要查看自己浏览器的版本,谷歌浏览器的话点右上角三个点--帮助--关于 Chrome

我们会看到自己的浏览器版本,可以看到我的浏览器版本为100.0.4896.127(正式版本)

下载驱动

打开网页 :CNPM Binaries Mirror

找到100.0.4896.127,后面的小版本号虽然和我的浏览器有些差异,可以忽略。只要保证大版本是一样即可。

 点击进去,找到windows版。注意:windows版只有32位,没有64位。

下载完后,解压后里面有个chromedriver.exe文件 

获取自己python安装的目录

打开cmd,输入where python可以查看python安装的路径,一般是下面这个(如果找不到目录记得打开计算机文件隐藏项目)

将解压后的chromedriver.exe文件复制到python安装目录下

三、 分析网页

打开某宝官网,点击登录,按f12查看网页源码,定位到账号输入框、密码输入框和登录按钮复制它们的xpath 。

返回官网首页,同样的方法复制搜索框和搜索按钮的xpath,这里比如我输入电脑

 接下来分析网页获取商品信息 ,这里我就放在代码里面了。
四、代码

代码这里我使用了一个滑块验证的方法,滑块验证不一定会成功也可以自己手动滑一下。

   

 import time
    import csv
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver import ChromeOptions, ActionChains
     
     
    # 定义爬取单页的函数
    def get_page(web):
        divs = web.find_elements_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div')
        # print(divs)
        for div in divs:
            info = div.find_element_by_xpath('./div[2]/div[2]/a').text  # 商品名称
            price = div.find_element_by_xpath('./div[2]/div[1]/div[1]/strong').text + '元'  # 商品价格
            deal = div.find_element_by_xpath('./div[2]/div[1]/div[2]').text  # 商品付款人数
            name = div.find_element_by_xpath('./div[2]/div[3]/div[1]/a/span[2]').text  # 商家店名
            print(info, price, deal, name, sep="|")
            try:
                csvwriter.writerow([info, price, deal, name])
            except :
                pass
     
     
    option = ChromeOptions()
    # 设置为开发者模式,防止被各大网站识别出来使用了Selenium
    option.add_experimental_option('excludeSwitches', ['enable-automation'])
    option.add_argument("--disable-blink-features")
    option.add_argument("--disable-blink-features=AutomationControlled")
    # 初始化一个web对象
    web = webdriver.Chrome(options=option)
    # 进入淘宝官网
    web.get('https://www.taobao.com/')
    # 点击登录
    web.find_element_by_xpath('//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click()
    # 输入账号密码
    web.find_element_by_xpath('//*[@id="fm-login-id"]').send_keys('你的手机号')
    web.find_element_by_xpath('//*[@id="fm-login-password"]').send_keys('你的密码')
    # 点击登录
    web.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()
    time.sleep(2)
    # 搜索商品并回车
    web.find_element_by_xpath('//*[@id="q"]').send_keys('电脑', Keys.ENTER)
    time.sleep(3)
    #  验证淘宝滑块,在前三秒也可以手动滑块,因为不确保自动滑块能成功
    try:
        yz = web.find_element_by_xpath('//*[@id="baxia-punish"]/div[2]/div/div[1]/div[2]/div/p').text
        if yz == '通过验证以确保正常访问':
            while 1:
                # 获取滑块的大小
                span_background = web.find_element_by_xpath('//*[@id="nc_1__scale_text"]/span')
                span_background_size = span_background.size
                # print(span_background_size)
                # 获取滑块的位置
                button = web.find_element_by_xpath('//*[@id="nc_1_n1z"]')
                button_location = button.location
                # print(button_location)
                # 拖动操作:drag_and_drop_by_offset
                # 将滑块的位置由初始位置,右移一个滑动条长度(即为x坐标在滑块位置基础上,加上滑动条的长度,y坐标保持滑块的坐标位置)
                x_location = span_background_size["width"]
                y_location = button_location["y"]
                # print(x_location, y_location)
                action = ActionChains(web)
                source = web.find_element_by_xpath('//*[@id="nc_1_n1z"]')
                action.click_and_hold(source).perform()
                action.move_by_offset(x_location, 0)
                action.release().perform()
                time.sleep(1)
                try:
                    web.find_element_by_xpath('//*[@id="`nc_1_refresh1`"]').click()
                    time.sleep(3)
                except:
                    pass
    except:
        with open('taobao.csv', mode='a', newline='', encoding='gbk') as fp:
            csvwriter = csv.writer(fp, delimiter=',')
            csvwriter.writerow(['info', 'price', 'deal', 'name'])
        Allpage = 3
        count = 0
        while count < Allpage:
            count += 1
            print('-------------------正在爬取第%d页---------------------' % count)
            get_page(web)
            web.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/ul/li[8]/a/span[1]').click()
            print('------------------------')
            time.sleep(5)
     
        web.close()
        web.quit()

最好不要用自己的账号过多的爬取,可能会封号。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/47163.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

测试技术之测试用例质量的评估

第一&#xff0c;凭证测试用例的方式评估其品质&#xff0c;主要搜罗&#xff1a; 1)测试用例与需要规格剖析中需要条款的可追溯性&#xff0c;好比&#xff1a;咱们要求每一个需要条款至少有1个测试用例与之对于应。目的是为了评估测试的需要拆穿困绕率&#xff0c;以及合成需…

抖音seo源码开发源代码开发技术分享

一、 抖音SEO源码开发&#xff0c;需要掌握以下技术&#xff1a; 抖音API接口&#xff1a;抖音提供了丰富的API接口&#xff0c;包括用户信息、视频信息、评论信息等。 数据爬取技术&#xff1a;通过抓包分析抖音接口的数据结构&#xff0c;可以使用Python等编程语言编写爬虫程…

【低代码专题方案】iPaaS运维方案,助力企业集成平台智能化高效运维

01 场景背景 随着IT行业的发展和各家企业IT建设的需要&#xff0c;信息系统移动化、社交化、大数据、系统互联、数据打通等需求不断增多&#xff0c;企业集成平台占据各个企业领域&#xff0c;成为各业务系统数据传输的中枢。 集成平台承接的业务系统越多&#xff0c;集成平台…

Practice1|1207. 独一无二的出现次数、1365. 有多少小于当前数字的数字、941. 有效的山脉数组

1207. 独一无二的出现次数 1.题目&#xff1a; 给你一个整数数组 arr&#xff0c;请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的&#xff0c;就返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;arr [1,2,2,1,1,3…

FPGA-DFPGL22学习7-gpio

系列文章目录 FPGA-DFPGL22学习6-led 文章目录 系列文章目录前言一、原理图1&#xff09;key2&#xff09;beeptouch端口对应1)key2)beeptouch 二、程序设计1)KEY2)beeptouch 三、程序编写1.KEY代码&#xff1a;2.beeptouch代码&#xff1a; 结论 前言 和原子哥一起学习FPGA …

JAVA面试总结-Redis篇章(四)——双写一致性

JAVA面试总结-Redis篇章&#xff08;四&#xff09;——双写一致性 问&#xff1a;redis 做为缓存&#xff0c;mysql的数据如何与redis进行同步呢&#xff1f;第一种情况&#xff0c;如果你的项目一致性要求高的话 采用以下逻辑我们应该先删除缓存&#xff0c;再修改数据库&…

「深度学习之优化算法」(十八)头脑风暴算法

1. 头脑风暴算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   可能大家对“头脑风暴”这个词不怎么熟,毕竟是外来词汇,其大概含义就是分组讨论,畅所欲言。   头脑风暴算法(Brain Storm Optimization)是根据人们进行“头脑风暴”讨论困难问题的解决方案的过…

Spring数据源

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;JavaEE、Spring 目录 1、简介2、作用3、开发步骤3.1、导入坐标3.2、创建对象c3p0druid提取jdbc.properties读取配…

【Git】

学习来自于&#xff1a; 女朋友乱用Git&#xff0c;差点把我代码删了。。。 一些常用的Git 知识点整理 关于Git这一篇就够了 Git基本命令大全 30分钟精通Git&#xff0c;学不会来找我 Git 版本管理 | 莫烦PYTHON Git 代码版本管理教程 文章目录 【前言】集中式与分布式的…

【微服务系统设计】系统设计基础:速率限制器

什么是速率限制器&#xff1f; 速率限制是指防止操作的频率超过定义的限制。在大型系统中&#xff0c;速率限制通常用于保护底层服务和资源。速率限制一般在分布式系统中作为一种防御机制&#xff0c;使共享资源能够保持可用性。 速率限制通过限制在给定时间段内可以到达您的 A…

分布式光伏并网防孤岛保护装置AM5SE-IS

分布式光伏并网防孤岛保护装置AM5SE-IS 应用场景 防孤岛原理&#xff1a;防孤岛保护装置检测到并网点有逆功率、频率突变、 等异常数据时&#xff0c;即发生孤岛现象时&#xff0c;装置可配合断路器快速切除并网点&#xff0c;使本站与电网侧快速脱离&#xff0c;保证整个电站…

国内疫情地图和省级疫情地图

基础地图演示 from pyecharts.charts import Mapfrom pyecharts.options import VisualMapOpts map Map() data [ ("北京", 99), ("上海", 199), ("湖南", 299), ("台湾", 199), ("安徽", 299), ("广州", 399…

git的clone,上传与upstream同步

文章目录 clone同步 clone clone他人项目&#xff0c;git到自己的项目 rm -rf .git .git存放原始项目的日志信息&#xff0c;这里需要添加自己的日志信息&#xff0c;需要删除重写。也可手动删除 git init 初始化文件&#xff0c;依据本地日志信息生产.git文件 git add 目标文…

视屏消音工具,支持指定词语,或者短句消音

这里写自定义目录标题 一个使用python开发的视频消音工具 一个使用python开发的视频消音工具 1.支持上传文件字幕,进行视屏整段语句进行静音处理 2.支持通过指定的词语或者句子进行精确的消音处理 3.支持输入多个词语,或者断句进行消音处理 页面比较简陋,但功能应该满足日常使…

【C语言15】单链表,(对于二级指针与一级指针应用的详细讲述)

文章目录 单链表1.单链表的介绍2.单链表的实现2.1.1单链表结点的创建与销毁2.1.2单链表尾插2.1.3单链表打印2.1.4尾删2.1.5头插2.1.6头删2.1.7查找2.1.8在pos位置之后插入数据2.1.9删除pos位置 单链表 1.单链表的介绍 链表是一种物理存储结构上非连续、非顺序的存储结构&#…

【MyBatis 学习一】认识MyBatis 第一个MyBatis查询

目录 一、认识MyBatis 1、MyBatis是什么&#xff1f; 2、为什么要学习MyBatis? 二、配置MyBatis环境 1、建库与建表 2、创建新项目 3、xml文件配置 &#xff08;1&#xff09;配置数据库连接 &#xff08;2&#xff09;配置 MyBatis 中的 XML 路径 三、测试&#x…

优惠券秒杀(二)

库存超卖问题分析 库存超卖问题其本质就是多个线程操作共享数据产生的线程安全问题&#xff0c;即当一个线程在执行操作共享数据的多条代码的过程中&#xff0c;其他线程也参与了进来&#xff0c;导致了线程安全问题的产生。例如&#xff1a;线程1发送请求&#xff0c;查询库存…

所有docker命令无效,解决办法

目录 ■前言 今天使用docker时&#xff0c;所有命令无效 ■解决办法如下 1.停止docker服务 2.查看状态 3.删除之前的docker相关的文件 4.再次查看状态 5.使用相关命令 &#xff08;好用了&#xff09; 6.重新下载镜像 ■前言 今天使用docker时&#xff0c;所有命令无…

MyBatis(简化数据库操作的持久层框架)--快速入门[上]

&#x1f600;前言 本篇博文是我在学习过程中的记录&#xff0c;分为上中下三个篇章&#xff0c;记录了我的一些学习心得&#xff0c;希望能够帮助到你&#x1f60a; &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&…

炎热夏天,VR全景让你宅家也能逛风景

夏天的快乐都是空调给的&#xff0c;进入三伏天气以来&#xff0c;连续的高温让人坐着都是一身汗&#xff0c;尤其是活泼好动的小朋友们&#xff0c;不出去玩那是不可能的。不妨改变下策略&#xff0c;让小朋友们转战线上&#xff0c;还能学习知识&#xff0c;是不是美滋滋呢~~…