【总结】爬虫4-selenium

爬虫4-selenium

1. selenium 基本操作

  • 在使用selenium之前必须先配置浏览器对应版本的webdriver。才可以控制浏览器打开网页

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.1 创建浏览器对象

b = Chrome()

1.2 打开网页

(需要哪个网页数据,就打开那个网页对应的网页地址)

b.get('https://movie.douban.com/top250?start=0&filter=')

1.3 获取网页源代码(page_source:打开的页面的源代码)

  • 注意:不管以什么方法更新了界面内容,page_source的内容也会更新
print(b.page_source)

1.4 关闭浏览器(可有可无)

input('')

任意输入可以结束

2. selenium的翻页问题

from selenium.webdriver import Chrome
  • selenium获取多业数据翻页方法:

2.1 翻页方法1

  • 找到不同页的地址的变化规律,利用循环实现对也数据请求
b = Chrome()

for page in range(0, 101, 25):
    b.get(f'https://movie.douban.com/top250?start={page}&filter=')
    print(b.page_source)

input('')

2.2 翻页方法2

  • 点击翻页按钮,刷新页面内容,再刷新后获取网页源代码
from selenium.webdriver.common.by import By
b = Chrome()
b.get('https://movie.douban.com/top250?start=0&filter=')

for x in range(5):
    print(b.page_source)
    # 点击下一页按钮
    b1 = b.find_element(By.CLASS_NAME, 'next')
    # b.find_element(By.CSS_SELECTOR, '.next')
    # b.find_element(By.PARTIAL_LINK_TEXT, '.next')
    # 点击按钮
    b1.click()
  • 涉及知识点

1)selenium 获取标签

浏览器对象.b.find_element() - 返回符合条件的第一个标签,返回的是标签对象
浏览器对象.b.find_elements() - 返回符合条件的所有标签,返回的有标签对象的列表

    • 获取方式

By.ID - 通过ID属性值获取标签
By.CLASS_NAME - 通过class属性值获取标签
By.CSS_SELECTOR - 通过css选择器属性值获取标签
By.PARTIAL_LINK_TEXT - 通过a标签的部分标签内容获取标签
By.LINK_TEXT - 通过a标签的标签内容获取标签

from selenium.webdriver.common.by import By
b = Chrome()
b.get('https://www.jd.com/')


# 获取id属性值为key的标签
seach = b.find_element(By.ID, 'key')
seach.click()

# 获取'便宜包邮'的a标签
a1 = b.find_element(By.LINK_TEXT, '便宜包邮')
a1.click()

# 获取标签内容包含'口好'的a标签
a2 = b.find_element(By.PARTIAL_LINK_TEXT, '口好')
a2.click()

2)操作标签

  • 输入框内容:输入框对应标签.sent_keys(输入内容)
  • 点击标签:标签对象.click
from selenium.webdriver.common.by import By
b = Chrome()
b.get('https://www.jd.com/')
seach = b.find_element(By.ID, 'key')
seach.send_keys('电饭煲\n')

3. 滚动问题

  • 用代码控制浏览器滚动
from selenium.webdriver import Chrome
import time
from selenium.webdriver.common.by import By

b = Chrome()
b.get('https://search.jd.com/Search?keyword=%E7%94%B5%E9%A5%AD%E7%85%B2&enc=utf-8&wq=%E7%94%B5%E9%A5%AD%E7%85%B2&pvid=37838527b6d6410aa7fdb0fb672e91b4')
time.sleep(2)

for x in range(10):
    b.execute_script('window.scrollBy(0, 800)')
    time.sleep(2)

time.sleep(2)
result = b.find_elements(By.CSS_SELECTOR, '#J_goodsList>ul>li')
print(len(result))

input('')

案例:知网实例

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



def zhiwang():
    # 1.创建浏览器
    b = Chrome()

    # 2.打开知网
    b.get('https://www.cnki.net/')

    # 3.获取输入框输入'数据分析'
    seach = b.find_element(By.ID, 'txt_SearchText')
    seach.send_keys('数据分析\n')
    time.sleep(1)

    for i in range(5):
        # 4.获取所有论文的标题标签
        titles = b.find_elements(By.CLASS_NAME, 'fz14')
        # print(len(titles))

        for x in titles:
            title = x.text
            x.click()
            time.sleep(1)
            # print(b.page_source)
            # 以上还在第一个页面

            # 切换选项卡,让浏览器对象指向新页面
            b.switch_to.window(b.window_handles[-1])
            # print(b.page_source)

            author = b.find_element(By.ID, 'authorpart').text
            summary = b.find_element(By.ID, 'ChDivSummary').text
            keyword = b.find_element(By.CLASS_NAME, 'keywords').text
            # summary = b.find_element(By.ID, 'abstract_text').text
            print(title, author, summary, keyword)

            time.sleep(2)
            # 关闭当前窗口
            b.close()

            # 将选项卡切回第一个页面内
            b.switch_to.window(b.window_handles[0])
            time.sleep(5)

        b1 = b.find_element(By.ID, 'PageNext')
        b1.click()
        time.sleep(5)


    input('输入')


if __name__ == '__main__':
    zhiwang()

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

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

相关文章

git 001--建本地仓库和远程仓库和拉代码

要使用Git对我们的代码进行管理,首先需要获得Git仓库。 获取Git仓库通常有两种方式: 在本地初始化Git仓库(不常用) 从远程仓库克隆(常用) 一.建本地仓库 方法一: 在自己电脑的任意目录下创建一个空目录…

字节测试总监,让我们用这份《测试用例规范》,再也没加班过

经常看到无论是刚入职场的新人,还是工作了一段时间的老人,都会对编写测试用例感到困扰?例如: 固然,编写一份好的测试用例需要:充分的需求分析能力 理论及经验加持,作为测试职场摸爬打滚的老人&…

为什么企业需要一个“企业办公浏览器”?

目前,大多数企业还在用着传统的Web浏览器,它是各行业企业办公最常用到的应用程序,搜索资料、打开其他应用工具、打开文档等等,企业员工几乎每天都在用它做这些工作。 但实际上,Web浏览器并不是一个企业专用的办公应用软…

炒黄金所需的k线图基础知识(上)

炒金,一般是指对杠杠式的黄金电子合约(如伦敦金、黄金期货)进行短线的多空操作,从中赚取波动价差的行为。无论投资者从事内盘还是外盘交易,K线图都是基础的、必备的知识。 1、什么叫K线图? K线图源于日本的…

计算机网络名词解释和简答题总结

名词解释 CSMA/CD(载波监听多点接入/碰撞检测协议) CSMA/CD是一种基于冲突检测的载波监听多路访问技术。CSMA/CD协议要求站点在发送数据之前先监听信道。如果信道空闲,站点就可以发送数据;如果信道忙,则站点不能发送…

使用CookieJar提取cookie信息

首先,推荐几个帖子,大伙可以先看看。国内通过cookiejar主要获取cookie的方法,大致都是如此的。 http.cookiejar库之CookieJar_pigYanYan的博客-CSDN博客 Python编程:cookiejar的使用_彭世瑜的博客-CSDN博客 再推荐一个资料帖&a…

Linux权限

Linux下有两种用户:超级用户(root)、普通用户。超级用户(root):可以在linux系统下做任何事,不受限制,只有1个。普通用户:在linux系统下做有限的事,有N个。超级用户的提示符#;普通用户的提示符$切换用户的命令:su切换root时可以直接…

MQ之kafka

一 概念 Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需…

Visual Studio Code2023(VSCode2023)安装包下载及安装教程(最新版接入了chat GPT)

[软件名称]: Visual Studio Code2023 [软件大小]: 88.6 MB [安装环境]: Win11/Win10/Win7 [软件安装包下载]:https://pan.quark.cn/s/ee94a4aa2abc Visual Studio Code简称“VS Code”是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Lin…

【Datawhale动手学深度学习笔记】多层感知机代码实践

多层感知机 激活函数 激活函数(activation function)通过计算加权和并加上偏置来确定神经元是否应该被激活, 它们将输入信号转换为输出的可微运算。 大多数激活函数都是非线性的。 由于激活函数是深度学习的基础,下面简要介绍一…

多线程进阶学习09------ThreadLocal详解

ThreadLocal:提供线程的局部变量,对于线程共享变量如果使用ThreadLocal则无需加锁,更省事省心。 ThreadLocal本地线程变量,线程自带的变量副本(实现了每一个线程副本都有一个专属的本地变量,主要解决的就是让每一个线程绑定自己的值,自己用自…

FastReport .NET 2023.2.4 Crack

FastReport .NET Reporting and documents creation library for .NET 7 FastReport .NET适用于 .NET 7、.NET Core、Blazor、ASP.NET、MVC 和 Windows Forms 的全功能报告库。它可以在微软视觉工作室 2022 和 JetBrains Rider 中使用。 利用 .NET 7、.NET Core、Blazor、ASP.N…

React:九、组件的生命周期

1.生命周期的理解 组件从创建到死亡它会经历一些特定的阶段。React组件中包含一系列勾子函数(生命周期回调函数), 会在特定的时刻调用。我们在定义组件时&#xff0c;会在特定的生命周期回调函数中&#xff0c;做特定的工作。2.生命周期小案例 <!DOCTYPE html> <html…

操作系统权限维持(十五)之Linux系统-inetd远程后门

系列文章 操作系统权限维持&#xff08;一&#xff09;之Windows系统-粘贴键后门 操作系统权限维持&#xff08;二&#xff09;之Windows系统-克隆账号维持后门 操作系统权限维持&#xff08;三&#xff09;之Windows系统-启动项维持后门 操作系统权限维持&#xff08;四&…

leaflet加载GPX文件,第2种图形显示方法(119)

第119个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载GPX文件,将图形显示在地图上,这是另外一种方式,看前一种方式请从目录中查找。GPX文件是以GPS数据交换格式保存的GPS数据文件,是一种通用的地图信息文件,可以被众多GPS应用和Web服务更轻松地导入和…

Jenksin pipeline: 全局变量 和 input中的局部变量

在jenkins的流水线中全局变量的定义基本有两种实现方法&#xff1a;参数化构建过程中定义&#xff0c;流水线中直接定义 参数化构建过程中定义 流水线中直接定义(Jenkins 2.x支持代码及即服务) 可以用流水线生成 在配置parameters后&#xff0c;往往需要先构建一遍&#…

耗时 24 小时整理了网络安全学习路线,非常详细!

前言上次发的文章【都2023年了&#xff0c;还在问网络安全怎么入门】很多小伙伴在评论区回复不知道怎么学习&#xff0c;我也反思了一下&#xff0c;确实没写到学习方法和路线&#xff0c;所以这一期就出一一个怎么学习网络安全的学习路线和方法&#xff0c;觉得有用的话三连收…

软件测试入门简单么?入行后如何做职业规划

软件测试的确是入门相对简单的一个学科&#xff0c;他们不常写代码&#xff0c;主要去检查代码&#xff0c;是不是出现了漏洞、程序是否能运行下去&#xff1f;那这部分程序员就是做软件测试。 这个类别没有做Java难没有大数据那么复杂&#xff0c;但还可以拿到程序员的高薪。…

一招解决macOS12 CleanMyMac闪退

距全新的macOS 12 Monterey正式版发布已经过去了快6个月&#xff0c;macOS Monterey 12 新增了同播共享功能、 Apple Music 声控方案、“数字遗产”计划、“照片”中重新设计的“回忆”&#xff0c;以及针对 Mac 的其他功能和错误修复等大量更新和改进。 很多Mac用户也已经升级…

【模板】树状数组

目录&#xff1a; 单点修改&#xff0c;区间查询&#xff1a; 题目描述&#xff1a; lowbit()运算&#xff1a; 插入、修改单点数据&#xff1a; 计算前缀和&#xff1a; 完整代码&#xff1a; 区间修改&#xff0c;单点查询&#xff1a; 计算差分数组&#xff1a; 计算每个点的…