【爬虫】5.4 Selenium 实现用户登录

这篇具有很好参考价值的文章主要介绍了【爬虫】5.4 Selenium 实现用户登录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

任务目标

创建模拟网站

创建服务器程序

 键盘输入动作

鼠标点击动作

编写爬虫程序


任务目标

  1. Selenium 查找的 HTML 元素是一个 WebElemen t对象, 这个对象不但可以获取元素的属性值,而且还能执行一 些键盘输入send_keys()鼠标点击click()的动作
  2. 我们设计一个实现用户登录并爬取数据的程序来演示这个过程。

创建模拟网站

模拟登录网站 login.html 如下:

注:login.html 文件要位于 templates 这个目录下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模拟登录网站</title>
</head>
<body>
    <form id="frm" action="/" method="post">
        <div>
            用户
            <input type="text" name="user">
        </div>
        <div>
            密码
            <input type="password" name="pwd">
        </div>
        <div>
            <input type="submit" name="login" vaule='登录'>
        </div>
    </form>
</body>
</html>

创建服务器程序

服务器程序 server.py 如下:

import flask

app = flask.Flask(__name__)


@app.route("/", methods=["GET", "POST"])
def login():
    user = flask.request.values.get("user") if "user" in flask.request.values else ""
    pwd = flask.request.values.get("pwd") if "pwd" in flask.request.values else ""
    if user == "xxx" and pwd == "123":
        return flask.redirect("/show")
    else:
        return flask.render_template("login.html")
        # 注:login.html文件要位于 templates 这个目录下


@app.route("/show", methods=["GET", "POST"])
def show():
    s = "<table border='1'>"
    s = s + "<tr><td>品牌</td><td>型号</td><td>价格</td></tr>"
    s = s + "<tr><td>华为</td><td>P9</td><td>3800</td></tr>"
    s = s + "<tr><td>华为</td><td>P10</td><td>4200</td></tr>"
    s = s + "<tr><td>苹果</td><td>iPhone6</td><td>5800</td></tr>"
    s = s + "</table><p>"
    return s


app.run()

 结果如下:(这里需要手动输入登录)

【爬虫】5.4 Selenium 实现用户登录,爬虫,selenium,测试工具,模拟游览器登录,python,selenium 模拟游览器    【爬虫】5.4 Selenium 实现用户登录,爬虫,selenium,测试工具,模拟游览器登录,python,selenium 模拟游览器


 键盘输入动作

  • 函数clear() 模拟清除element元素中的所有文字
  • 函数 send_keys(string) 模拟键盘在元素中输入字符串string

鼠标点击动作

        很多HTML元素都有鼠标点击动作,例如 <input type="submit"> 提交按钮点击后就提交表单。WebElement使用 click() 函数实现鼠标点击

 模拟登录 程序如下:(这里不需要手动输入登录)

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome()
try:
    driver.get("http://127.0.0.1:5000")
    user = driver.find_element(By.NAME, "user")
    pwd = driver.find_element(By.NAME, "pwd")
    time.sleep(0.5)
    user.send_keys("xxx")
    time.sleep(0.5)
    pwd.send_keys("123")
    time.sleep(2)
    driver.find_element(By.XPATH, "//input[@type='submit']").click()
except Exception as err:
    print(err)

input("Strike any key to finish...")
driver.close()


编写爬虫程序

  1. 创建一个浏览器对象driver,使用这个driver对象模拟浏览器。
  2. 访问 http://127.0.0.1:5000 网站,获取 <input type="text" name="user">与<input type="password" name="pwd">元素对象,调用send_keys("xxx"), send_keys(" 123 "),模拟用户键盘输入名称"xxx"与密码“123”。
  3. 获取<input type="submit" name="login">按钮对象,执行 click() 点击动作,提交表单。
  4. 服务器接收提交的user与pwd数据,判断是否登录成功,如果登录成功就转"/show"页面显示手机记录。
  5. 爬虫程序爬取数据记录。

爬虫程序 demo.py 如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time


def login():
    print(driver.current_url)
    user = driver.find_element(By.NAME, "user")
    pwd = driver.find_element(By.NAME, "pwd")
    login = driver.find_element(By.NAME, "login")
    user.send_keys("xxx")
    pwd.send_keys("123")
    login.click()
    time.sleep(0.5)


def spider():
    global tds, mark, model, price
    print(driver.current_url)
    trs = driver.find_elements(By.TAG_NAME, "tr")
    for i in range(1, len(trs)):
        tds = trs[i].find_elements(By.TAG_NAME, "td")
        if len(tds) == 3:
            mark = tds[0].text
            model = tds[1].text
            price = tds[2].text
            print("%-16s%-16s%-16s" % (mark, model, price))


chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome()
try:
    driver.get("http://127.0.0.1:5000")
    login()
    spider()
except Exception as err:
    print(err)
driver.close()

运行结果:

【爬虫】5.4 Selenium 实现用户登录,爬虫,selenium,测试工具,模拟游览器登录,python,selenium 模拟游览器


下一篇文章:5.5 Selenium 爬取Ajax网页数据 文章来源地址https://www.toymoban.com/news/detail-548305.html

到了这里,关于【爬虫】5.4 Selenium 实现用户登录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 爬虫日常练习-selenium登录12306

    hello,好兄弟们。经过前面几篇文章后,想必小伙伴们对于简单的网页文本爬取,图片爬取类的内容已经熟练掌握了。今天我们开始练习一个新的内容:selenium。有关这一块的基础知识网上太多了,我们作为进阶的练习文章就不在这里从基础说起了。直接上实际案例,与大家分

    2024年02月05日
    浏览(42)
  • 26. selenium:浏览器自动测试模块——一款方便且能装X的爬虫工具(附多个实例)

    目录 前言 什么是selenium? 配置selenium 安装selenium库 安装浏览器驱动(以Chrome为例)  使用selenium库 例1:实现打开网页拿取网页标题 运行效果 例2:实现抓取某招聘网站Python岗位的职位信息 运行效果 例3:实现抓取推荐新闻的标题和正文(涉及子页面的切换) 运行效果 例4:

    2024年02月04日
    浏览(50)
  • 爬虫日常-selenium登录12306,绕过验证

    hello兄弟们,这里是无聊的网友。愉快的周末过去了,欢迎回到学习频道。书接上文,我们说到了再用selenium登录12306时遇到了滑块验证的问题。当前的网站几乎每家都会在登录模块添加一个认证,来规避各种爬虫,而我们则不断的去想办法绕过这些验证模块。目前一些简单的

    2024年02月07日
    浏览(57)
  • Python爬虫教程:Selenium模拟登录

    Selenium(本文基于python3.8)是一个功能强大的自动化测试工具,它可以用于模拟用户在浏览器中的行为,比如点击、输入、滚动等等,也可用于模拟登录网站并进行爬虫操作。本教程将详细介绍如何使用Python编写一个模拟登录地爬虫,使用XPath等多种元素匹配方法。 在开始之

    2024年02月04日
    浏览(46)
  • Python爬虫-使用Selenium模拟百度登录

        前面我已经安装好了Selenium并模拟成功了一下打开百度页面并进行查询,让我这个python初学者信心倍增,今天再来试一试百度登录 把打开百度的代码放到构造方法中 ps:那个文件目录是用于后面滑块验证图片保存的。 点击右上角的“登录”按钮,打开登录框, 代码如下:

    2024年02月06日
    浏览(53)
  • python爬虫-使用selenium自动登录微博

    环境准备:anaconda、pycharm编辑器、chromedriver(记得下载) 首先查看本地anaconda的python环境和selenium版本号(不同版本的api接口可能不同) 输出 我的python版本是3.11.3,所以我默认下载的selenium版本号是 selenium 4.11.2 自动登录的python脚本代码如下: 最后运行这个脚本文件即可自动登录微

    2024年02月11日
    浏览(37)
  • python爬虫selenium被检测处理(适用淘宝登录)

    1.增加这个是防止检测是webdriver谷歌驱动调起的请求,通用大部分 2.修改chromedriver里面的内容: 用Notepad++打开chromedriver文件,查找  $cdc_  修改这个数值。 3.修改User-Agent的值,如果你长时间使用相同 的User-Agent:可能会被检测到加入黑名单, 这时候你修改User-Agent值就可能绕开

    2024年02月09日
    浏览(41)
  • 【爬虫】用selenium登陆推特并爬取用户历史推文

    做rumor detection 用到了twitter15和twitter16数据集,里边只给了推文id和评论者的uid,想要爬取其他数据就只能自己动手。 我需要爬取推文评论用户在评论时间点前两个月的历史推文,然而这两个数据集都太老了,里边的数据都是13-14年的,所以用twitter API无法获取到(因为官方A

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

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

    2024年04月12日
    浏览(43)
  • python使用selenium打开chrome浏览器时带用户登录信息

    导读 我们在使用 selenium 打开google浏览器的时候,默认打开的是一个新的浏览器窗口,而且里面不带有任何的浏览器缓存信息。当我们想要爬取某个网站信息或者做某些操作的时候就需要自己再去模拟登陆 selenium操作浏览器 这里我们就以CSDN为例,来展示如何让selenium在打开

    2023年04月24日
    浏览(70)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包