【总结】爬虫4-selenium

news/2024/7/19 11:42:51 标签: 爬虫, selenium, python

selenium_0">爬虫4-selenium

selenium__2">1. selenium 基本操作

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.1 创建浏览器对象

python">b = Chrome()

1.2 打开网页

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

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

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

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

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

python">input('')

任意输入可以结束

selenium_53">2. selenium的翻页问题

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

2.1 翻页方法1

  • 找到不同页的地址的变化规律,利用循环实现对也数据请求
python">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

  • 点击翻页按钮,刷新页面内容,再刷新后获取网页源代码
python">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标签的标签内容获取标签

python">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
python">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. 滚动问题

  • 用代码控制浏览器滚动
python">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('')

案例:知网实例

python">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()

http://www.niftyadmin.cn/n/181280.html

相关文章

2022蓝桥杯省赛——修剪灌木

问题描述 爱丽丝要完成一项修剪灌木的工作。 有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晩会修剪一棵灌木, 让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始, 每天向右修剪一棵灌木。当修剪了最右侧的灌木后, 她会调转方向, 下一天开始向左修剪…

ubuntu22.04解决域名不能访问的问题

刚装好的ubuntu22.04不能访问百度,然后发现只能ping通ip,而不能ping通www.baidu.com,网上查了下解决方案, 方案一:修改dns: 修改 /etc/resolv.conf配置文件,但很快就会被覆盖,文件第…

Chapter9.3:线性系统稳定性分析及综合实例

该系列博客主要讲述Matlab软件在自动控制方面的应用,如无自动控制理论基础,请先学习自动控制系列博文,该系列博客不再详细讲解自动控制理论知识。 自动控制理论基础相关链接:https://blog.csdn.net/qq_39032096/category_10287468…

如何在卷出天际的自动化测试求职市场中脱颖而出?

目录 前言 一、准备面试前的知识储备 二、面试中需要注意的技巧 三、自我营销 四、结合实际案例的模拟面试 五、总结 前言 自动化测试在软件开发中起着越来越重要的作用,随之而来的是自动化测试工程师的就业市场也日益广阔。然而,在面试找工作的过…

编程示例:计算平方逆序数对

编程示例&#xff1a;计算平方逆序数对 如果a*ac,b*bd&#xff0c;并且a和b &#xff0c;c和d是互为逆序的数&#xff0c;则a和b是一对平方逆序数对。 使用Javascript 语言开发了计算平方逆序数对的程序。 代码如下&#xff1a; <html> <head> <title> 计算…

Eclipse IDE 2023-03 新特性说明

Eclipse IDE 2023-03 新特性说明&#xff1a; 改进的平台 改进的“打开资源”对话框、更快的搜索和替换、文本编辑器中行间距的新首选项 经过验证的可扩展性 具有种类繁多的平台插件&#xff0c;可简化新功能的添加 改进的 MAVEN 工具 更好地检测和配置 Maven 项目 免费和开…

GIS-postgis 安装

最佳搭配&#xff1a;https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS 我将扩展放在pg的安装目录下 home/postgres/pgsql/other_lib/包名 1、Proj前置安装【Sqlite有版本要求】 注意&#xff1a;请确保sqlite3 版本大于3.11,如果高于此版本跳过 sqlite-au…

DD应用系统软件库网站源码

☑️ 类型&#xff1a;应用系统软件库 ☑️ 支持&#xff1a;PCWAP &#x1f389;有需要的朋友记得关赞评&#xff0c;文章底部获取&#xff01;&#xff01;&#xff01; &#x1f389; ✨ 源码介绍 DD应用系统软件库网站源码&#xff0c;一款手机端软件分享类源码&#xff0c…