Python使用Selenium自动进行百度搜索的实现

目录
  • 安装 Selenium
  • 写代码
  • 点位网页元素

我们今天介绍一个非常适合新手的python自动化小项目,项目虽小,但是五脏俱全。它是一个自动化操作网页浏览器的小应用:打开浏览器,进入百度网页,搜索关键词,最后把搜索结果保存到一个文件里。这个例子非常适合新手学习Python网络自动化,不仅能够了解如何使用Selenium,而且还能知道一些超级好用的小工具。

当然有人把操作网页,然后把网页的关键内容保存下来的应用一律称作网络爬虫,好吧,如果你想这么爬取内容,随你。但是,我更愿意称它为网络机器人。

我今天介绍的项目使用Selenium,Selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。Selenium 的核心是 WebDriver,这是一个编写指令集的接口,可以在许多浏览器中互换运行。

闲言少叙,硬货安排。

安装 Selenium

可以使用 pip 安装 Python 的 Selenium 库:pip install selenium

(可选项:要执行项目并控制浏览器,需要安装特定于浏览器的 WebDriver 二进制文件。

下载 WebDriver 二进制文件 并放入 系统 PATH 环境变量 中.)

由于本地浏览器版本升级,引起的版本不一致问题,和系统PATH环境变量的设置比较繁琐,所以我使用webdriver_manager,

安装 Install manager:

pip install webdriver-manager

写代码

引入模块:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys

首先我们定义一个类Search_Baidu, 它主要用于初始化;定义自动化步骤的方法;结束关闭浏览器。

class Search_Baidu:
def __init__(self):
def search(self, keyword):
def tear_down(self):

接下来我们分别介绍每个方法的实现过程。

   def __init__(self): #类构造函数,用于初始化selenium的webdriver
        url = 'https://www.baidu.com/' #这里定义访问的网络地址
        self.url = url

        options = webdriver.ChromeOptions()
        options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加载图片,加快访问速度
        options.add_experimental_option('excludeSwitches', ['enable-automation']) # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
# 这里使用chrome浏览器,而且使用我们刚才安装的webdriver_manager的chrome driver,并赋值上面的浏览器设置options变量
        self.browser = webdriver.Chrome(ChromeDriverManager().install(), options=options)
        self.wait = WebDriverWait(self.browser, 10) #超时时长为10s,由于自动化需要等待网页控件的加载,所以这里设置一个默认的等待超时,时长为10秒

    def tear_down(self):
        self.browser.close() #最后,关闭浏览器

接下来是重头戏,写我们操作浏览器的步骤,打开浏览器,进入百度网页,输入搜索关键字:Selenium,等待搜索结果,把搜索结果的题目和网址保存到文件里。

def search(self, keyword):
    # 打开百度网页
    self.browser.get(self.url)
    # 等待搜索框出现,最多等待10秒,否则报超时错误
    search_input = self.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="kw"]')))
    # 在搜索框输入搜索的关键字
    search_input.send_keys(keyword)
    # 回车
    search_input.send_keys(Keys.ENTER)
    # 等待10秒钟
    self.browser.implicitly_wait(10)
    # 找到所有的搜索结果
    results = self.browser.find_elements_by_css_selector(".t a , em , .c-title-text")
    # 遍历所有的搜索结果
    with open("search_result.txt","w") as file:
        for result in results:
            if result.get_attribute("href"):
                print(result.get_attribute("text").strip())
                # 搜索结果的标题
                title = result.get_attribute("text").strip()
                # 搜索结果的网址
                link = result.get_attribute("href")
                # 写入文件
                file.write(f"Title: {title}, link is: {link} \n")

点位网页元素

这里头有个关键点,就是如何点位网页元素:

比如:

search_input = self.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="kw"]')))

还有:

self.browser.find_elements_by_css_selector(".t a , em , .c-title-text")

打个比方,快递员通过地址找到你家,给你送快递,这里的XPATH和CSS Selector就是网页元素的地址,那么如何得到呢?
第一个就是Chrome自带的开发者工具,可以快捷键F12,也可以自己在下图中找到:

然后在百度搜索框,右键:

找到输入框的HTML元素,

在HTML元素右键,拷贝XPath地址。

这是比较简单的定位网页元素的方法。接下来我们定位搜索结果元素的时候,就遇到了麻烦,如下图:

我们不能单独的定位每个元素,而是要找到规律,一次把所有的搜索结果找到,然后返回一个list,我们好遍历这个list,这个怎么实现呢?

接下来,我们请出一大神器:SelectorGadget

SelectorGadget是一个CSS Selector生成器,大家可以在他的官方文档找到具体的使用说明,我这里简单介绍一下:
首先启动SelectorGadget,点击一下图标

浏览器会出现下面的框框:

然后我们在网页用鼠标左键,点击我们要定位的元素

然后页面会变成下面的样子:

所有黄色的部分说明都被选择了,如果我们不想要的元素,右键点击,使它变为红色,说明它被去掉了。如果没有被选择我们又需要的元素,我们左键选择它,使它变为绿色。最后我们希望选择的页面元素都变成了绿色或者黄色,如下图:

我们就可以拷贝框框里的内容作为CSS Selector了。

通过CSS Selector找到所有的搜索结果。

results = self.browser.find_elements_by_css_selector(".t a , em , .c-title-text")

到此,我们就实现了这么个简单的小应用了,其实selenium就是帮助我们自动操作网页元素,所以我们定位网页元素就是重中之重,希望本文给你带来一点帮助。

下面我附上代码:

from datetime import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys

class Search_Baidu:
    def __init__(self):
        url = 'https://www.baidu.com/'
        self.url = url

        options = webdriver.ChromeOptions()
        options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) # 不加载图片,加快访问速度
        options.add_experimental_option('excludeSwitches', ['enable-automation']) # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium

        self.browser = webdriver.Chrome(ChromeDriverManager().install(), options=options)
        self.wait = WebDriverWait(self.browser, 10) #超时时长为10s

    def search(self, keyword):
        # 打开百度网页
        self.browser.get(self.url)
        # 等待搜索框出现,最多等待10秒,否则报超时错误
        search_input = self.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="kw"]')))
        # 在搜索框输入搜索的关键字
        search_input.send_keys(keyword)
        # 回车
        search_input.send_keys(Keys.ENTER)
        # 等待10秒钟
        self.browser.implicitly_wait(10)
        # 找到所有的搜索结果
        results = self.browser.find_elements_by_css_selector(".t a , em , .c-title-text")
        # 遍历所有的搜索结果
        with open("search_result.txt","w") as file:
            for result in results:
                if result.get_attribute("href"):
                    print(result.get_attribute("text").strip())
                    # 搜索结果的标题
                    title = result.get_attribute("text").strip()
                    # 搜索结果的网址
                    link = result.get_attribute("href")
                    # 写入文件
                    file.write(f"Title: {title}, link is: {link} \n")

    def tear_down(self):
        self.browser.close()

if __name__ == "__main__":
    search = Search_Baidu()
    search.search("selenium")
    search.tear_down()

到此这篇关于Python使用Selenium自动进行百度搜索的实现的文章就介绍到这了,更多相关Python Selenium自动百度搜索内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python+selenium实现自动化百度搜索关键词

    通过python配合爬虫接口利用selenium实现自动化打开chrome浏览器,进行百度关键词搜索. 1.安装python3,访问官网选择对应的版本安装即可,最新版为3.7. 2.安装selenium库. 使用 pip install selenium 安装即可. 同时需要安装chromedriver,并放在python安装文件夹下,如下图所示. 3.获取爬虫接口链接. 注册账号,点击爬虫代理,领取每日试用. from selenium import webdriver import requ

  • Python使用Selenium自动进行百度搜索的实现

    目录 安装 Selenium 写代码 点位网页元素 我们今天介绍一个非常适合新手的python自动化小项目,项目虽小,但是五脏俱全.它是一个自动化操作网页浏览器的小应用:打开浏览器,进入百度网页,搜索关键词,最后把搜索结果保存到一个文件里.这个例子非常适合新手学习Python网络自动化,不仅能够了解如何使用Selenium,而且还能知道一些超级好用的小工具. 当然有人把操作网页,然后把网页的关键内容保存下来的应用一律称作网络爬虫,好吧,如果你想这么爬取内容,随你.但是,我更愿意称它为网络机器人.

  • python爬虫selenium模块详解

    selenium模块 selenium基本概念 selenium优势 便捷的获取网站中动态加载的数据 便捷实现模拟登陆 selenium使用流程: 1.环境安装:pip install selenium 2.下载一个浏览器的驱动程序(谷歌浏览器) 3.实例化一个浏览器对象 基本使用 代码 from selenium import webdriver from lxml import etree from time import sleep if __name__ == '__main__': b

  • python实现百万答题自动百度搜索答案

    用python搭建百万答题.自动百度搜索答案. 使用平台 windows7 python3.6 MIX2手机 代码原理 手机屏幕内容同步到pc端 对问题截图 对截图文字分析 用浏览器自动搜索文本 使用教程 1.使用Airdroid 将手机屏幕显示在电脑屏幕上.也可使用360手机助手实现.不涉及任何代码.实现效果如图: 2.在提问出现时,运行python程序,将问题部分截图. 这里要用到两个函数: get_point()  #采集要截图的坐标,以及图片的高度宽度 window_capture() 

  • Python用selenium实现自动登录和下单的项目实战

    目录 前言 前期准备 代码实现思路 配置浏览器驱动 确定浏览器版本 下载驱动 测试是否成功 代码实现 最后 前言 学python对selenium应该不陌生吧 Selenium 是最广泛使用的开源 Web UI(用户界面)自动化测试套件之一.Selenium 支持的语言包括C#,Java,Perl,PHP,Python 和 Ruby.目前,Selenium Web 驱动程序最受 Python 和 C#欢迎.Selenium 测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代 W

  • Python使用Selenium模拟浏览器自动操作功能

    概述 在进行网站爬取数据的时候,会发现很多网站都进行了反爬虫的处理,如JS加密,Ajax加密,反Debug等方法,通过请求获取数据和页面展示的内容完全不同,这时候就用到Selenium技术,来模拟浏览器的操作,然后获取数据.本文以一个简单的小例子,简述Python搭配Tkinter和Selenium进行浏览器的模拟操作,仅供学习分享使用,如有不足之处,还请指正. 什么是Selenium? Selenium是一个用于Web应用程序测试的工具,Selenium测试直接运行在浏览器中,就像真正的用户在

  • 基于python+selenium自动健康打卡的实现代码

    每天都要记得健康打卡 尊敬的老师,我忘了这次的健康打卡,反思的时候我想了很多东西,反省了很多事情,自己也很懊悔,触犯了学校的规定,深刻认识到自己所犯错误的严重性- 卡!那是小学生才有的检讨.作为一个有点懒的人,对于每次的健康打卡,都是做着重复性的填写,这让本人很是头疼,那就找找止疼药吧 使用的工具 需要有一定的python,html基础,和实践能力(毕竟实践出真知,实践能力强,你可以忽略前两个,你是最棒的!): Pycharm ,在pycharm官网里面下载社区版或专业版(没其他的用途推荐用社区

  • Python通过tkinter实现百度搜索的示例代码

    本文主要介绍了Python通过tkinter实现百度搜索的示例代码,分享给大家,具体如下: """ 百度搜索可视化 """ import tkinter import win32api from selenium.webdriver import Chrome entry = None def callback(): global entry keywords = entry.get() if not keywords: win32api.Mes

  • python爬取企查查企业信息之selenium自动模拟登录企查查

    最近接了个小项目需要批量搜索企查查上的相关企业并把指定信息保存到Excel文件中,由于企查查需要登录后才能查看所有搜索到的信息所以第一步需要模拟登录企查查. python模拟登录企查查最重要的是自动拖拽验证插件 先介绍下项目中使用到的工具与库 Python的selenium库: Web应用程序测试的工具,Selenium可以模拟用户在浏览器中的操作,就像真实用户使用一样. 官方技术文档:https://www.selenium.dev/selenium/docs/api/py/index.htm

  • Python利用Selenium实现网站自动签到功能

    目录 什么是Selenium 前情提要 准备工作 代码及讲解 点击登录 点击跳过弹窗 小结 什么是Selenium 先带领大家学习下Selenium的基本概念吧. Selenium主要用于web应用程序的自动化测试,但并不局限于此,它还支持所有基于web的管理任务自动化. 它的特点如下: 开源,免费 多浏览器支持:Firefox.Chrome.IE等 多平台支持:Linux.Windows.Mac 多语言支持:Java.Python.Ruby.C#.JavaScript.C++ 对web页面有良

随机推荐