代码编织梦想

  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+ 

                python项目实战

                Python编程基础教程系列(零基础小白搬砖逆袭)

  • 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,可报销(名额有限,先到先得)

        即将转为付费专栏,更多详细请看,五一或有优惠活动哦。

关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明

  • 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。

 最近更新

〖Python网络爬虫实战㉖〗- Selenium库和ChromeDriver驱动的安装

🌟上节回顾

我们在前面讲解了正确安装好Chrome 浏览器并配置好ChromeDriver。另外,还教大家如何正确安装好 Python 的 Selenium 库。


⭐️Selenium案例实战(一)

今天,我们就用python爬取商品信息,我们这里使用selenium去模拟获取我们的数据。

🌟环境使用

  • python 3.9
  • pycharm

🌟模块使用

  • requests
  • selenium
  • time
  • 谷歌驱动

🌟说明

✨一、谷歌驱动安装

1.下载网址

CNPM Binaries Mirror

2.文件安装(放置)位置

可以把这个文件理解成一个脚本入口。说它是安装,其实就是把下载的 chromedriver.exe 文件复制到相应的位置。

将文件复制到两个位置:1...\python\Scripts复制一份到安装Python的文件夹中的Scripts文件夹中;2.如果用的是Pycharm,再复制一份到..\python\site-packages\selenium\webdriver\chrome文件中。这个地址可以将鼠标放在Pycharm里面安装库的地方的相应库上就能看到。

✨二、selenium模块

        之前,我们爬虫是模拟浏览器,但始终不是用的浏览器,但今天我们要说的是另一种爬虫方式,这次不是模拟浏览器,而是用程序去控制浏览器进行一些列操作,也就是selenium。selenium是python的一个第三方库,对外提供的接口可以操控浏览器,比如说输入、点击,跳转,下拉等动作。

  在使用selenium模块之前要做两件事,一是安装selenium模块,可以用终端用pip,也可以在pycharm里的setting安装;二是我们需要下载一款浏览器驱动程序,下载的驱动程序要和浏览器的版本一致。

 🌟代码实现

首先,我们模拟打开我们想要的网址,这里是某东的首页。

driver = webdriver.Chrome()

driver.get('https://www.jd.com/')

有的大家运行会闪退,大家在调试模式下运行,就把不会闪退,或者加一句input()。接下来,我们模拟键盘输入笔记本。我们看看代码怎么运行。

    #     定位搜索框
    # input_tag = driver.find_element(By.ID,value="key")
    input_tag = driver.find_element(By.ID, "key")
    input_tag.send_keys('笔记本')  # 模拟键盘输入
    driver.implicitly_wait(5) # 隐式等待

 接下来,就是模拟键盘的回车按键,我们看看selenium是怎么实现的。

input_tag.send_keys(Keys.ENTER)  # 模拟回车

接下来,就是获取我们商品页的商品信息。

goods = driver.find_elements(By.CLASS_NAME, "gl-item")

这个代码片段将会返回网页中所有 "gl-item" 类名的 HTML 元素。后面的就不一样解释了。

    for good in goods:
        # 名字

        name = good.find_element(By.CSS_SELECTOR, ".p-name").text.replace('\n', '')
        print(name)
        # 价格
        price = good.find_element(By.CSS_SELECTOR, ".p-price").text

        link = good.find_element(By.TAG_NAME, "a").get_attribute('href')

        msg = '''
            商品:%s
            价格:%s
            链接:%s
        ''' % (name, price, link)
        print(msg)

这个代码片段将会打印出商品的名称、价格和链接。您可以根据需要修改代码以满足您的具体需求。

首先,它会找到商品的 HTML 元素,然后使用 find_element 方法找到 ".p-name" 和 ".p-price" 类名的元素,并提取它们的文本。接下来,它会找到所有 "a" 标签,并从它们的 href 属性中提取链接。最后,它会将商品名称、价格和链接格式化为一个字符串,并打印出来。

全部代码如下:


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


driver = webdriver.Chrome()
# r'C:\Users\YY\AppData\Local\Programs\Python\Python39\chromedriver.exe'
driver.get('https://www.jd.com/')

def GetInfo():
    input_tag = driver.find_element(By.ID, "key")

    input_tag.send_keys('笔记本') 

    time.sleep(5)

    input_tag.send_keys(Keys.ENTER)

    spider_jd()

def spider_jd():
    goods = driver.find_elements(By.CLASS_NAME,"gl-item")
    for good in goods:
        
        name = good.find_element(By.CSS_SELECTOR,".p-name").text.replace('\n','')
      
        price = good.find_element(By.CSS_SELECTOR,".p-price").text

        link = good.find_element(By.TAG_NAME,"a").get_attribute('href')

        msg = '''
            商品:%s
            价格:%s
            链接:%s
        '''%(name,price,link)
        print(msg)

# GetInfo()

for page in range(1,11):
    print(f'爬取{page}页')
    GetInfo()
    driver.find_element(By.CSS_SELECTOR,'.pn-next').click()
    time.sleep(2)

🌟运行结果

f1292d4500b34b598e9076a5d430091e.png

大家注意,这里会有一些语法的问题,博主这里是最新版的selenium。大家如果报错的话,更新自己的selenium库。

      替换所有的  ".find_element_by_xpath("   为                   
                 ".find_element(By.XPATH,"

      替换所有的  ".find_elements_by_xpath("   为  
                 ".find_elements(By.XPATH,"

🌟总结

后面,我还会将两个这样的案例,我们通过实战来了解selenium的好处。这里,我推荐大家使用新版本的selenium,旧版本的不是说不能用,看个人习惯吧。 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/BROKEN__Y/article/details/130786406