第十六天-爬虫selenium库

这篇具有很好参考价值的文章主要介绍了第十六天-爬虫selenium库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.介绍

2.使用 selenium

1.安装

2.使用

1.测试打开网页,抓取雷速体育日职乙信息

2.通过xpath查找

3.输入文本框内容 send_keys

4.点击事件 click

5.获取网页源码:

6.获取cookies

7.seleniumt提供元素定位方式:8种

8.控制浏览器前进、后退、刷新

9.控制鼠标

10. 设置等待

11设置后台运行

12.后台终止

3.实战


1.介绍

1. selenium是一个用于web应用程序自动化测试工具,Selenium测试直接运行在浏览器中;

2.像真正的用户在操作一样2,驱动浏览执行特定的动作,如点击、下来等操作;

3.selenium支持浏览器

第十六天-爬虫selenium库,自学Python从零开始到量化交易,爬虫,selenium,测试工具

4.支持的语言

第十六天-爬虫selenium库,自学Python从零开始到量化交易,爬虫,selenium,测试工具

5.selenium在爬虫的应用

第十六天-爬虫selenium库,自学Python从零开始到量化交易,爬虫,selenium,测试工具

2.使用 selenium

1.安装

 pip3 install selenium

2.使用

1.测试打开网页,抓取雷速体育日职乙信息

# coding:utf-8

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

# 打开浏览器
webdriver_chrome = webdriver.Chrome()
# 浏览器窗口最大化:
webdriver_chrome.maximize_window()
# 爬取日职乙联赛信息
webdriver_chrome.get("https://www.leisu.com/data/zuqiu/comp-568/season-11286")
# 默认页面是升级附加赛:提取主队信息
for home in webdriver_chrome.find_elements(By.XPATH, "//td[@class='home']/a"):
    print("升级附加赛:主队信息:", home.text)
# 点击联赛
webdriver_chrome.find_element(By., "//div[@class='stage_name']").click()
# 获取联赛信息
for home in webdriver_chrome.find_elements(By.XPATH, "//td[@class='home']/a"):
    print("联赛:主队信息:", home.text)

# 获取标题
print("标题:", webdriver_chrome.title)
print("获取cookie", webdriver_chrome.get_cookies())
print("获取页面源码", webdriver_chrome.page_source())

# 打开5秒关闭
time.sleep(5)

# 关闭浏览器
webdriver_chrome.quit()

2.通过xpath查找

 webdriver_chrome.find_elements(By.XPATH, "//td[@class='home']/a")

3.输入文本框内容 send_keys

 webdriver_chrome.find_element(By.XPATH,"//input[@id='']").send_keys("内容")

4.点击事件 click

webdriver_chrome.find_element(By.XPATH,"//input[@id='']").click()

5.获取网页源码:

webdriver_chrome.page_source()

6.获取cookies

webdriver_chrome.get_cookies()

7.seleniumt提供元素定位方式:8种

第十六天-爬虫selenium库,自学Python从零开始到量化交易,爬虫,selenium,测试工具

老版本使用

第十六天-爬虫selenium库,自学Python从零开始到量化交易,爬虫,selenium,测试工具新版使用

find_elements(By.XPATH, "原始值")

find_elements(By.ID, "原始值")

find_elements(By.CLASS_NAME, "原始值")

等等

8.控制浏览器前进、后退、刷新

第十六天-爬虫selenium库,自学Python从零开始到量化交易,爬虫,selenium,测试工具

9.控制鼠标

第十六天-爬虫selenium库,自学Python从零开始到量化交易,爬虫,selenium,测试工具

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


# 打开浏览器
webdriver_chrome = webdriver.Chrome()
# 浏览器窗口最大化:
webdriver_chrome.maximize_window()
# 打开百度
webdriver_chrome.get("https://www.baidu.com/")
#鼠标移动到设置上
#定位设置
set_element_above=webdriver_chrome.find_element(By.ID,"s-usersetting-top")
print(set_element_above.text)
#移动鼠标到设置上
ActionChains(webdriver_chrome).move_to_element(set_element_above).perform()


time.sleep(5)
webdriver_chrome.quit()

10. 设置等待

1. 使用场景:有时候需要等某些元素加载后进行操作,或者网络原因需要加载;

2.等待分为2种方式,分为显式等待和隐式等待

第十六天-爬虫selenium库,自学Python从零开始到量化交易,爬虫,selenium,测试工具

3.显式等待代码:打开百度,输入内容

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 打开浏览器
webdriver_chrome = webdriver.Chrome()
# 浏览器窗口最大化:
webdriver_chrome.maximize_window()
# 打开百度
webdriver_chrome.get("https://www.baidu.com/")
# WebDriverWait:显示等待
# 参数:1.webdriver_chrome打开浏览器对象,2.timeout,3.轮训参数
# until:EC场景判断,通过id找到输入框
element = WebDriverWait(webdriver_chrome, 5, 0.5).until(EC.presence_of_element_located((By.ID, "kw")))
# 找到元素输入查找内容
element.send_keys("Python")

time.sleep(5)
webdriver_chrome.quit()

4.隐式等待代码:打开百度,输入内容

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import  NoSuchElementException

# 打开浏览器
webdriver_chrome = webdriver.Chrome()
# 浏览器窗口最大化:
webdriver_chrome.maximize_window()
#隐式等待
webdriver_chrome.implicitly_wait(5)
# 打开百度
webdriver_chrome.get("https://www.baidu.com/")

try:
    webdriver_chrome.find_element(By.ID,"kw1").send_keys("python")
except NoSuchElementException as e:
    print("超时没有找到元素:",e)

time.sleep(5)
webdriver_chrome.quit()

11设置后台运行

from selenium.webdriver.chrome.options import Options
options = {
    "headless": "--headless",
    "no_sandbox": "--no-sandbox",
    "gpu": "--disable-gpu"
}
chrome_options = Options()
driver = webdriver.Chrome(options=chrome_options)

12.后台终止

1.如运行异常可使用任务管理器,找到进程“chromediver.exe”结束进程

第十六天-爬虫selenium库,自学Python从零开始到量化交易,爬虫,selenium,测试工具

3.实战

1. 自动爬取比赛信息:彩票500

2.自动翻页

3.导出到excel中文章来源地址https://www.toymoban.com/news/detail-838929.html

# coding:utf-8
import xlsxwriter
import time
from lxml import etree
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


class caipao500_project():

    def __init__(self, chrome_options):
        self.driver = webdriver.Chrome(options=chrome_options)
        # 设置浏览器最大化
        self.driver.maximize_window()

    def open_page(self, url):
        """
        打开页面方法
        :param self:
        :param url:  页面地址
        :return:
        """
        print("打开页面:{}".format(url))
        self.driver.get(url)
        # 判断是否打开
        if WebDriverWait(self.driver, 5, 0.5).until(EC.presence_of_element_located((By.LINK_TEXT, "联赛赛程"))):
            print("打开页面成功")
            # 创建excel
            self.create_excel()
            # 解析数据,返回当前轮次
            round_num = self.parse_html(self.driver.page_source)

            while True:
                round_num = round_num - 1
                if round_num == 0:
                    break

                round_num_btn = self.driver.find_element(By.XPATH,
                                                         "//div[@class='lsaiguo_round_list_wrap_in']/ul/li/a[@data-group={}]".format(
                                                             round_num)).text
                # 点击上一个轮次
                if not round_num_btn:
                    # 点击翻页
                    self.driver.find_element(By.XPATH, "//a[@class='itm_arrow itm_arrow_up']").click()
                    # 等待5秒
                    time.sleep(5)

                if WebDriverWait(self.driver, 5, 0.5).until(EC.presence_of_element_located(((By.XPATH,
                                                                                             "//div[@class='lsaiguo_round_list_wrap_in']/ul/li/a[@data-group={}]".format(
                                                                                                 round_num))))):
                    # 点击轮次
                    self.driver.find_element(By.XPATH,
                                             "//div[@class='lsaiguo_round_list_wrap_in']/ul/li/a[@data-group={}]".format(
                                                 round_num)).click()
                round_num = self.parse_html(self.driver.page_source)
            self.book.close()
            return True
        else:
            print("打开页面失败")
            return False

    def create_excel(self):
        """
        创建Excel
        :return:
        """
        # 创建存放excel文件夹
        self.book = xlsxwriter.Workbook(time.strftime("%Y%m%d%H%M%S", time.gmtime()) + "文件.xlsx")
        self.sheet = self.book.add_worksheet("sheet1")
        # 记录添加到第几行
        self.curr_row = 1
        title_data = ("轮次", "时间", "主队", "全场比分", "全场总分", "半场比分", "半场总分", "客队")
        # 添加表头
        for index, title_datum in enumerate(title_data):
            self.sheet.write(0, index, title_datum)

    def parse_html(self, content):
        """
        解析网页数据
        :param content: 网页源码
        :return:
        """
        html = etree.HTML(content)
        table_trs = html.xpath("//table[@class='lsaiguo_list ltable jTrHover']/tbody/tr")
        row_content = {}
        for tr in table_trs:
            # 轮次
            round_num = tr.xpath("./td[1]/text()")[0]
            # 时间
            time = "".join(tr.xpath("./td[2]/text()"))
            # 主队
            home = tr.xpath("./td[3]/a/text()")[0]
            # 比分:全场
            whole_score_array = tr.xpath("./td[4]/span/text()")
            whole_score = ":".join(whole_score_array)
            # 全场总分
            whole_score_total = int(whole_score_array[0]) + int(whole_score_array[1])
            # 半场
            half_score_str = "".join(tr.xpath("./td[4]/text()"))
            half_score = half_score_str[half_score_str.find("(") + 1:half_score_str.find(")")]
            # 总分
            half_score_array = half_score.split(":")
            half_score_total = int(half_score_array[0]) + int(half_score_array[1])
            # 客队
            away = tr.xpath("./td[5]/a/text()")[0]

            row_content = {
                "round_num": round_num,
                "time": time,
                "home": home,
                "whole_score": whole_score,
                "whole_score_total": whole_score_total,
                "half_score": half_score,
                "half_score_total": half_score_total,
                "away": away
            }
            print("row:", row_content)
            for index, e in enumerate(row_content):
                self.sheet.write(self.curr_row, index, row_content.get(e))
            self.curr_row += 1
        return int(round_num)


if __name__ == '__main__':
    options = {
        #"headless": "--headless",
        #"no_sandbox": "--no-sandbox",
        #"gpu": "--disable-gpu",
        "proxy-server": "--proxy-server=https://121.37.201.60:8118"
    }
    chrome_options = Options()
    for k, v in options.items():
        print("设置浏览器参数:{}:{}".format(k, v))
        chrome_options.add_argument(v)
    leisu = caipao500_project(chrome_options=chrome_options)

    leisu.open_page("https://liansai.500.com/zuqiu-6779/jifen-19426/")

到了这里,关于第十六天-爬虫selenium库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 从零开始学python(十六)爬虫集群部署

    今天讲述Python框架源码专题最后一个部分,爬虫集群部署,前面更新了十五个从零开始学python的系列文章,分别是 : 1.编程语法必修篇 2.网络编程篇 3.多线程/多进程/协程篇 4.MySQL数据库篇 5.Redis数据库篇 6.MongoDB数据库篇 7.机器学习篇 8.全栈开发篇 9.Numpy/pandas/matplotlib篇 10.H

    2024年02月13日
    浏览(36)
  • 数据结构第十六天(二叉树层序遍历/广度优先搜索(BFS)/队列使用)

    目录 前言 概述 接口 源码 测试函数 运行结果 往期精彩内容 从前的日色变得慢,车,马,邮件都慢,一生,只够爱一个人。 二叉树的层序遍历可以使用广度优先搜索(BFS)来实现。具体步骤如下: 创建一个队列 queue,并将根节点入队。 当队列不为空时,重复执行以下步骤:

    2024年02月22日
    浏览(28)
  • MFC第十六天 CFileDialog、CEdit简介、(线程)进程的启动,以及Notepad的开发(托盘技术-->菜单功能)

    通用对话框 CCommonDialog 这些对话框类封装 Windows 公共对话框。 它们提供了易于使用的复杂对话框实现。 CFileDialog 提供用于打开或保存文件的标准对话框。 CColorDialog 提供用于选择颜色的标准对话框。 CFontDialog 提供用于选择字体的标准对话框。 CFindReplaceDialog 为搜索和替换操作

    2024年02月16日
    浏览(28)
  • 编程小白的自学笔记十二(python爬虫入门四Selenium的使用实例二)

    编程小白的自学笔记十一(python爬虫入门三Selenium的使用+实例详解) 编程小白的自学笔记十(python爬虫入门二+实例代码详解)  编程小白的自学笔记九(python爬虫入门+代码详解)  目录 系列文章目录 前言 一、使用Selenium打开子页面 二、使用Selenium实现网页滚动 三、使用

    2024年02月15日
    浏览(26)
  • 编程小白的自学笔记十一(python爬虫入门三Selenium的使用+实例详解)

    编程小白的自学笔记十(python爬虫入门二+实例代码详解 编程小白的自学笔记九(python爬虫入门+代码详解)  编程小白的自学笔记八(python中的多线程)  编程小白的自学笔记七(python中类的继承)  目录 系列文章目录 文章目录 前言 一、Selenium是什么 二、安装Selenium  三、

    2024年02月16日
    浏览(39)
  • 【致敬未来的攻城狮计划】— 连续打卡第十六天:FSP固件库系统定时器(滴答定时器SysTick)每2秒LED闪烁一次

    1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.Keil配置使用(使用 RASC 生成 Keil 工程) 6.Keil配置使用(使用 RASC 生成 Keil 工程)

    2024年02月01日
    浏览(64)
  • 【Python入门第四十六天】Python丨NumPy 数组重塑

    重塑意味着更改数组的形状。 数组的形状是每个维中元素的数量。 通过重塑,我们可以添加或删除维度或更改每个维度中的元素数量。 实例 将以下具有 12 个元素的 1-D 数组转换为 2-D 数组。 最外面的维度将有 4 个数组,每个数组包含 3 个元素: 运行实例 从 1-D 重塑为 3-D

    2023年04月08日
    浏览(36)
  • Python爬虫进阶(1),Django+Selenium+Mysql+SimpleUI,从零开始搭建自己的爬虫后台管理系统

    如果爬虫做完的话都会发现每个文件要么保存到csv或者是其他格式的文件中,这样做多少会有些麻烦,所以需要将这些内容保存起来方便自己管理和查看内容。 相对于flask而言Django有着相对成熟的一个后台管理系统配合上其他一些插件就可以做到即插即用的效果而不用自己再

    2024年02月08日
    浏览(31)
  • 从零开始学习 Java:简单易懂的入门指南之爬虫(十六)

    Pattern:表示正则表达式 Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取。 在大串中去找符合匹配规则的子串。 代码示例: 需求: ​ 把连接:https://m.sengzan.com/jiaoyu/29104.html?ivk sa=1025883i中所有的身份证号码都爬取出来。 代码示例: 需求: ​ 把

    2024年02月11日
    浏览(49)
  • 从零开始学习Python控制开源Selenium库自动化浏览器操作,实现爬虫,自动化测试等功能(一)

    介绍Selenium : Selenium是一个用于自动化浏览器操作的开源工具和库。它最初是为Web应用测试而创建的,但随着时间的推移,它被广泛用于Web数据抓取和网页自动化操作。Selenium 支持多种编程语言,包括Python,Java,C#等。 这里我们主要实现采用Python的方式 Selenium 的主要特点和

    2024年01月22日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包