使用python+Selenium2+chrome模拟用户登录

python采集某个关键词的微博_python微博爬虫——使用selenium爬取关键词下超话内容... import timeimport xlrdfrom selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport osimport excelSave as save# 用来控制页面滚动def Transfer_Clicks(browser):try:browser.execute_script("w... 阅读详情

使用 python+Selenium2+chrome模拟用户登录新浪微博移动端


1、获取chromedriver.exe

1.1、获取chromedriver.exe

下载地址(google)请自备梯子
这里写图片描述
下载地址:http://chromedriver.storage.googleapis.com/index.html?path=2.21/
根据自己的版本进行下载,我这里用的chrome是50+的我下载最新的了2.21

1.2、放到工作目录

下载好后放到自己的chrome目录下(一般找到自己的chrome浏览器快捷方式打开所在位置就是chromedriver.exe要存放的位置了)

我的在这里
这里写图片描述


2、获取selenium

这里写图片描述

如果你系统上面有pip的话,直接可以使用下面的方法就可以安装了:

pip install -U selenium

这里写图片描述
如果你没有就只能通过下载到本地方式安装了 这里不再累述可以到上面的链接自行下载安装了。

下载地址: https://pypi.python.org/pypi/selenium
里面还有一些例子可以进行参考


3、实现代码

# -*- coding: UTF-8 -*-
import os
from time import sleep

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait


# 初始化配置
def initWork():
    # 初始化配置根据自己chromedriver位置做相应的修改
    chromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
    os.environ["webdriver.chrome.driver"] = chromedriver
    driver = webdriver.Chrome(chromedriver)
    return driver


# 执行登录
def handleLogin():
    # 定义自己的用户名密码
    username = "####"
    password = "####"
    # 执行操作的页面地址
    url = 'http://m.weibo.cn/'
    driver.set_window_size(480, 760)
    driver.get(url)
    # 目前还没学会cookie怎么用先获取到吧肯定用的到
    # 获得cookie信息
    cookie1 = driver.get_cookies()
    # 将获得cookie的信息打印
    print cookie1
    # 下面就开始在打开的页面中自动执行操作了
    # 根据xpath获取登录按钮
    elem = driver.find_element_by_xpath("/html/body/div[1]/div/a[2]");
    # 发送确认按钮跳转到登录页面
    elem.send_keys(Keys.ENTER)


    # 休眠两秒钟后执行填写用户名和密码操作
    sleep(2)
    elem = driver.find_element_by_xpath("//*[@id='loginName']");

    elem.send_keys(username)
    elem = driver.find_element_by_xpath("//*[@id='loginPassword']");
    elem.send_keys(password)
    elem = driver.find_element_by_xpath("//*[@id='loginAction']");
    elem.send_keys(Keys.ENTER)
    cookie2 = driver.get_cookies()
    # 将获得cookie的信息打印
    print cookie2

    # 判断是否登录成功
    if cookie1 == cookie2:
        print u' ( ̄y▽ ̄)╭可能登录失败了手动登录一下吧'
        sleep(60)
    else: 
        wait = WebDriverWait(driver, 30)
        elems = wait.until(lambda driver: driver.find_elements_by_css_selector('div.line-around.layout-box.mod-pagination > a:nth-child(2) > div > select > option'))

    # 获取信息
    while 1:  # 循环条件为1必定成立
        result = isPresent()
        print u'判断页面1成功 0失败  结果是=%d' % result
        if result == 1:
            elems = driver.find_elements_by_css_selector('div.line-around.layout-box.mod-pagination > a:nth-child(2) > div > select > option')
            return elems
            break
        else:
            print u'页面还没加载出来呢'
            sleep(20)

# 开始解析页面    
def handlePage(elems):
    x = 1
    for page in elems:
        print u'========第%d页========' % x
        handleScroll()
        perser()
        x = x + 1
        sleep(20)


def handleNextPage():
    print u'====================================下一页======================================'
        # 点击下一页
    driver.find_element_by_css_selector('div.line-around.layout-box.mod-pagination > a.btn.box-col.line-left').click()
    sleep(2)

# 判断元素是否存在
def isPresent():
    temp =1
    try: 
        elems = driver.find_elements_by_css_selector('div.line-around.layout-box.mod-pagination > a:nth-child(2) > div > select > option')
    except:
        temp =0
    return temp

# 解析信息并翻页
def perser():
    try:
        perserElements()
        sleep(10)
        handleNextPage()
    except:
        print u'=!=!=!=!=!=!=!=!=!=!=发生了意外=!=!=!=!=!=!=!=!=!=!='
    finally:
        pass

# 解析微博      
def perserElements():
    elems = driver.find_elements_by_css_selector('div.card9')
    for elem in elems:
        head_img = elem.find_element_by_css_selector('header > a.mod-media.size-xs > div > img').get_attribute('src')
        print u'头像地址:' + head_img
        head_name = elem.find_element_by_css_selector('header > div > a > span').text
        head_time_from = elem.find_element_by_css_selector('header > div > div').text 
        print head_name + u'    ' + head_time_from
        weibo_detail = elem.find_element_by_class_name('weibo-detail').text
        print weibo_detail
        print u'---------------------------------------'

# 执行滚动加载出全部内容      
def handleScroll():

    for i in range (1 , 7 , 1):
        Transfer_Clicks(driver)
        print u'滚动%d次' % i
        sleep(2)
    sleep(10)

# 定义一个滚动函数
def Transfer_Clicks(browser):
    try:
        browser.execute_script("window.scrollBy(0,document.body.scrollHeight)", "")
        # 这个是执行一段Javascript函数,将网页滚到到网页顶部。
        # browser.execute_script("window.scrollBy(0,5)", "")
        # 向下滚动200个像素,鼠标位置也跟着变了
#         ActionChains(browser).move_by_offset(0,-80).perform()
        # 向上移动鼠标80个像素,水平方向不同
#         ActionChains(browser).click().perform()
        # 鼠标左键点击
#         ActionChains(browser).key_down(Keys.TAB).perform()
        # 模拟tab键的输入
#         ActionChains(browser).send_keys(Keys.ENTER).perform()
        # 模拟输入ENTER键
    except:
        pass
    return "Transfer successfully \n"


if __name__ == '__main__':
    driver = initWork()
    try:
        elems = handleLogin()
        cookie3 = driver.get_cookies()
        for cookie in driver.get_cookies():
            print "driver.add_cookie({\'name\':\'%s\', \'value\':\'%s\'})" % (cookie['name'], cookie['value'])

        # 将获得cookie的信息打印
        print cookie3
        handlePage(elems)
    finally:
        if driver._is_remote:  
            driver.close()
            driver.quit()
    pass

参考资料
http://blog.youkuaiyun.com/cjsafty/article/details/9206323

2.13-使用robotframework进行UI自动化测试 使用robotframework进行UI自动化测试 回到第一章:目录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录使用robotframework进行UI自动化测试前言 前言 这节将使用RF框架对 2.8- 使用idea开发javaWeb应用程序-4(实现用户的增删改查) 开发的第一个网站进行UI自动化测试。 测试内容: 登录;新增用户;查询用户;修改用户;删除用户 ... 阅读详情

相关推荐

mac下 使用 selenium + chrome 模拟知乎登陆

1. 先下载selenium ``` pip install selenium ``` 2. 下载chrome浏览器对应的chromedriver - 先检查chrom的版本号 - ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190321215753228.png) - 比如我的版本 73.0.3683.86(正式版本) (64 位) ![在这里...

welcome 1868

Python selenium自动化操作Chrome浏览器

selenium自动化,爬虫必备技能

80后大叔爱学习 9239

Python爬虫:Selenium模拟Chrome浏览器爬取淘宝商品信息

对于采用异步加载技术的网页,有时候想通过逆向工程的方式来设计爬虫进行爬取会比较困难,因此,要想通过python获取异步加载数据往往可以使用Selenium模拟浏览器的方式来获取。 Selenium是一个用于Web应用程序测试的工具,它可以在浏览器中运行,模拟用户真实的浏览网页操作,也就是说可以实现浏览器加载页面,搜索关键字和点击翻页等等操作,因此,就算使用了异步加载技术的网页,也可以模拟翻页得到不同的网页,也就可以得到你想要的数据了。 Selenium模块在第三...

西湖太极熊 2025

Python+Selenium:初步使用Chrome谷歌浏览器

Python+Selenium:初步使用Chrome谷歌浏览器

chentiankong的专栏 1886

Selenium+chrome driver 实现模拟登陆

最近的项目都是在码python多点,所以帖子也跟着来python了。。 最近爬数据的时候,发现有些动态加载网页不是很友好。看了很多的帖子说,Selenium是个好东西。不过要配合着PhantomJS用。但是,Selenium与PhantomJS分手了!今年的事。。。众多的帖子还是结合phantomJS的。人家已经不支持这种方法了。那么现在流行的是:Selenium+Handless Chrome...

x_bessie的博客 3239

Python3 爬虫 模拟登录

模拟登录有多种实现方法,使用Selenium操作浏览器登录和使用Cookies登录虽然简单粗暴,但是有效。使用模拟提交表单登录虽然较为麻烦,但可以实现自动化。

u014695938的博客 2269

Selenium启动Chrome时,加载用户配置文件 常用命令

http://www.51testing.com/html/30/n-3578030-2.html 下边是收集的一些配置信息:   一些Chrome的地址栏命令(这些命令会不停的变动,所有不一定都是好用的)   在Chrome的浏览器地址栏中输入以下命令,就会返回相应的结果。这些命令包括查看内存状态,浏览器状态,网络状态,DNS服务器状态,插件缓存等等。   about

1720

Selenium复用Chrome用户数据目录,绕过复杂登录验证与插件依赖

在Web自动化与数据采集领域,处理需要登录或依赖浏览器插件才能访问的网站是常见挑战。其核心原理在于现代浏览器通过用户数据目录(User Data Directory)管理会话状态、Cookies及扩展程序。通过复用已登录的Chrome用户数据目录,Selenium驱动的浏览器可以继承完整的登录会话和插件环境,从而绕过复杂的登录验证流程,包括图形验证码、动态Token及强制安全插件等风控机制。这一技术方案在工程实践中显著提升了爬虫的稳定性与效率,尤其适用于登录流程复杂、会话有效期长的数据采集场景。通过合理配置

weixin_33721344的博客 641

Python + Selenium + Chrome 使用代理 auth 的用户名密码授权

米扑代理,全球领导的代理品牌,专注代理行业近十年,提供开放、私密、独享代理,并可免费试用 米扑代理官网:https://proxy.mimvp.com   本文示例,是结合米扑代理的私密、独享、开放代理,专门研发的示例, 支持 http、https的无密码、白名单ip、密码授权三种类型   示例中,用的插件 xpi 请到米扑代理官网,或米扑官方 github 下载 本文,直接给出完整...

阳光岛主 1万+

Python爬虫绕过登录认证的4种实战方法:从Cookie复用到Selenium模拟

在Web开发与数据采集领域,HTTP协议的无状态特性催生了会话管理机制,其中Cookie和Token是实现用户认证状态保持的核心技术。其原理在于服务器通过Set-Cookie响应头或Token令牌向客户端颁发凭证,客户端在后续请求中携带该凭证以维持登录状态。这一机制的技术价值在于实现了用户身份的持续验证,为个性化服务、权限控制奠定了基础,广泛应用于电商、社交、内容平台等需要用户身份识别的场景。针对Python爬虫开发,特别是涉及需要登录才能访问的数据采集任务,掌握如何模拟已认证会话成为关键。本文聚焦于**C

weixin_33928137的博客 421

python使用selenium模拟操作Chrome浏览器

1、安装selenium pip install selenium 2、打开浏览器登录获取cookie from selenium import webdriver import time import json driver = webdriver.Chrome() # 创建Chrome对象. # 操作这个对象. driver.get('https://baidu....

weixin_42551921的博客 1688

Python爬虫10-Selenium模拟登录

对于采用异步加载技术的网页,有时候通过逆向工程来构造爬虫是比较困难的。想用Python获取异步加载返回的数据,可以使用Selenium模块模拟浏览器。 10.1Selenium和Phantomjs 10.1.1Selenium的概念和安装 Selenium是一个用于web应用程序测试的工具,它直接运行在浏览器中,就像真实的用户在操作一样。由于这个性质,Selenium也是一个强大的网络数据采集工具,它可以让浏览器自动加载页面,这样使用了异步加载技术的网页,也可获取其需要...

qq_45112156的博客 3593

GEO芯片数据下载和探针ID转换(保姆级教程)

R语言安装、GEO芯片数据下载、探针ID转换

qq_43138237的博客 3万+

Python爬虫之selenium,有验证码模拟登录

在学习Selenium之前,通过request.get()或者.post(),很难获取网站所加载的动态数据,通过Selenium强大的自动化功能、多浏览器支持、跨平台支持等优点,让我轻松获取一些之前很难获取的数据,这次的案例也是结合之前的所学知识完成二.感兴趣的话还可以尝试以下其他的网站进行模拟自动登录,以后可以方便的进行各个软件的登录啦,Selenium真是一个强大的测试工具。

Tudective的博客 3741

AFSim仿真系统—几何视角下的子系统交互机制解析

本文深入解析了AFSim仿真系统中子系统交互的几何机制。通过剖析世界坐标系、实体坐标系、部件坐标系等七层空间定位体系,阐述了传感器探测、目标指示等交互行为背后的几何原理与限制条件。掌握这套几何视角,是构建高保真、符合物理现实的AFSim仿真模型的关键,能有效避免坐标混乱、交互失效等常见问题。

terraform7cloud的博客 490

【Telephony】APN配置及加载流程&项目实践(AOSP)

学习APN关键是学会明白apns-conf.xml文件各个参数的意思,然后熟悉TelephonyProvider是如何读取文件创建数据库的,譬如数据库表的约束、文件的读写顺序等,还有读取后的ApnSetting的二次定制以及显示(例如屏蔽xcap等)。虽然一般在项目中APN的需求很简单,就是按照客户提供的APN参数添加上配置,或者在显示屏蔽一些参数,但是项目维护的过程中APN的问题也是比较多的。

weixin_44513784的博客 5509

使用selenium模拟登录知乎

1.使用浏览器打开知乎网站,进入登录界面https://www.zhihu.com/signin?next=%2F 2.使用开发者工具或者使用快捷键F12(我的是fn+F12),看各自笔记本而定 3.定位到使用密码登录的位置,如图 使用xpath来定位“密码登录”的位置,放入备用//div[@class=‘SignFlow-tabs’]/div[2] 4.定位需要输入手机号的地方,如图 使用c...

sinat_38872379的博客 2951

爬取B站评论+AI情感分析:Python批量抓数据+BERT正负向分类(全流程)

B站作为年轻群体聚集的内容平台,评论区蕴含海量用户真实态度(如好评、吐槽、中立观点),是情感分析的优质数据源!本文分享完整流程:批量爬取B站视频评论→数据清洗去噪→BERT模型情感分类→可视化分析,基于预训练BERT模型实现高精度正负向判断,新手也能快速复刻情感分析系统! 前置配置(关键!获取B站API访问权限) B站评论通过官方API接口返回,无需复杂解析,只需配置用户Cookie即可正常请求: 2. 完整代码(直接复制运行) 三、使用步骤(5步搞定,新手友好) 步骤1:配置关键参数 打开,在类中修改

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1068

selenium模拟登录示例

登录blibli selenium自动化测试工具 登录页面没有iframe技术,所以不用switch_to.frame import selenium #package: #common #exceptions #webdriver #chrome #firefox #ie #opera #phantomjs #edge #android #safari #common #action_chains #导入we

weixin_45228198的博客 6478

[QMT和ptrade量化交易小白入门]-122、基于聚类分析的动态股票池构建与ETF轮动策略,回测年化 132.09%

本专栏主要是介绍QMT和ptrade的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1026

Cadence SPB16. 6 安装流程

1.首先下载CadenceAllegroSPBorCAD16.6安装包 下载之后运行其中的setup.exe,然后先安装第一项LicenseManager 一直按next或install, 直到被询问license时,单击cancel,然后选是和finish。 2,安装Product Installtion 直接点next跳过这一步 安装完成后,点Exit退出 3.按ctrl+alt+delete打开任务管...

wangjie36的博客 5148

Python Selenium实现自动化测试及Chrome驱动使用

 本文将介绍如何使用Python Selenium库实现自动化测试,并详细记录了Chrome驱动的使用方法。

chengxuyuznguoke的博客 1093

YOLOv11改进 | 注意力篇 | YOLOv11引入24年ECCV的自调制特征聚合注意力模块(SMFA),并构建C2PSA_SMFA

1.SMFA介绍1.1 摘要:基于Transformer的图像复原方法由于Transformer的自注意(self-attention,SA)特性能够更好地挖掘非局部信息,从而获得更好的高分辨率图像重建效果,因此具有重要的应用价值。然而,关键点积SA需要大量的计算资源,这限制了其在低功耗器件中的应用。此外,模拟退火机制的低通特性限制了其捕获局部细节的能力,从而导致平滑的重建结果。

tsg6698的博客 952

python爬虫实现模拟用户登录/requests/selenium

1、selenium 实现用户登录 from selenium import webdriver import time #创建浏览器操作句柄 driver = webdriver.Chrome() #导向给定的url页面 driver.get('https://accounts.douban.com/passport/login_popup?login_source=anony') tim...

weixin_44737399的博客 1223

VisionPro - 基础 - 模板匹配技术-Search/PMAlign/PatMax(6)-纹理屏蔽和重叠匹配

Note:对已经有了,1已经训练好的模板,2一组使能的自由度,3一个待测的实时图片,PatMax 就能模板匹配的给出变化的最佳描述。对一些综合的模板,这三个输入值往往是一起影响最后的变换结果信息。例如,如果我们训练了一个圆形的模板,然后搜索一个角度自由度包括一个圆,那么将会有无限个可能的角度满足要求。这些组合的模板匹配,被官方名为:退化系统,a degenerate system的结果被叫做a degenerate result 退化结果4.2 退化系统例子。

山云的专栏 1533

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Selenium实战-模拟登录淘宝并爬取商品评论

目前网站上很多爬取评论的博文都已经失效了,所以自己尝试写一篇目前可行的爬取代码。我们以爬取淘宝的某个抽纸评论为例。

wudibaolongzhang的博客 2205

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: Python 爬虫的工具列表( 附Github代码下载链接)
下一篇: 浅谈 MVP in Android
YLBF_DEV
博客等级 码龄12年 30粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值