python爬虫系列Selenium定向爬取虎扑篮球图片详解

yizhihongxing

Python爬虫系列Selenium定向爬取虎扑篮球图片详解

准备工作

在进行定向爬取虎扑篮球图片之前,需要安装Selenium和Chrome浏览器。

  1. 安装Selenium:可以在命令行使用以下命令进行安装:
pip install selenium
  1. 下载Chrome浏览器:需要下载浏览器对应版本的ChromeDriver,可以在官网上下载:

ChromeDriver下载地址

下载完对应版本的ChromeDriver后,将其解压并保存至本地。

程序设计

下面结合代码和详细注释讲解Selenium定向爬取虎扑篮球图片的完整攻略。

import os
import time
from selenium import webdriver

# 保存图片文件的本地路径
IMAGE_SAVE_PATH = 'huPuImages'

# 定义生成Chrome浏览器driver的函数
def get_driver():
    # 获取ChromeDriver路径
    chrome_driver_path = os.path.dirname(os.path.abspath(__file__)) + '/chromedriver'
    # 创建Chrome浏览器driver
    options = webdriver.ChromeOptions()
    # 设置Chrome浏览器不显示界面
    options.add_argument('--headless')
    options.add_argument('--disable-gpu')
    options.add_argument('lang=zh_CN.UTF-8')
    driver = webdriver.Chrome(executable_path=chrome_driver_path, chrome_options=options)
    driver.maximize_window()
    # 返回生成的Chrome浏览器driver
    return driver

# 定义获取页面图片url列表的函数
def get_image_urls(url):
    # 创建Chrome浏览器driver
    driver = get_driver()
    # 打开页面
    driver.get(url)
    # 使用XPath获取页面图片标签列表
    img_list = driver.find_elements_by_xpath('//*[@id="J_box_container"]/div[1]/ul/li//img')
    # 遍历图片标签列表,获取图片url并添加至列表中
    image_urls = []
    for img in img_list:
        # 获取图片url
        url = img.get_attribute('src')
        # 添加至列表中
        image_urls.append(url)
    # 关闭浏览器窗口
    driver.quit()
    # 返回图片url列表
    return image_urls

# 定义下载图片的函数
def download_images(url_list):
    # 遍历图片url列表
    for url in url_list:
        # 获取图片名称
        image_name = url.split('/')[-1]
        # 如果保存图片的文件夹不存在,则创建
        if not os.path.exists(IMAGE_SAVE_PATH):
            os.makedirs(IMAGE_SAVE_PATH)
        # 下载图片
        os.system('curl -o "{0}/{1}" {2}'.format(IMAGE_SAVE_PATH, image_name, url))
        print('下载了一张图片:', url)

# 主函数
def main():
    # 要爬取的页面url
    url = 'https://voice.hupu.com/nba/2495549.html'
    # 获取页面图片url列表
    url_list = get_image_urls(url)
    # 下载图片
    download_images(url_list)

if __name__ == '__main__':
    main()

程序主要分为三个函数:生成Chrome浏览器driver的函数、获取页面图片url列表的函数和下载图片的函数。

其中,获取页面图片url列表的函数使用了Selenium的XPath定位功能,获取页面图片标签列表,然后遍历图片标签列表,获取图片url并添加至列表中。

下载图片的函数使用curl命令进行下载,如果保存图片的文件夹不存在,则创建文件夹。

示例说明

示例一

要爬取的页面为:https://voice.hupu.com/nba/2495549.html

通过调用get_image_urls函数获取页面图片url列表,然后调用download_images函数进行下载,执行完程序后,保存图片的文件夹中将保存从该页面中获取到的所有图片。

示例二

要爬取的页面为:https://voice.hupu.com/nba/2462904.html

同样通过调用get_image_urls函数获取页面图片url列表,然后调用download_images函数进行下载,执行完程序后,保存图片的文件夹中将保存从该页面中获取到的所有图片。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python爬虫系列Selenium定向爬取虎扑篮球图片详解 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python 读取、写入txt文件的示例

    关于python读取、写入txt文件的示例,以下是完整的攻略过程: 准备工作 在使用Python进行txt文件读写之前,我们需要了解以下两个方法: open() 方法:用于打开一个文件,并且返回文件对象,可实现读写文件等操作。 文件对象的 read() 和 write() 方法:read() 用于读取文件中的内容,而 write() 用于写入内容到文件中。 …

    python 2023年6月5日
    00
  • 如何导出 python-highcharts 图表以在烧瓶或 django 中使用?

    【问题标题】:How to export a python-highcharts chart for use in flask or django?如何导出 python-highcharts 图表以在烧瓶或 django 中使用? 【发布时间】:2023-04-07 00:23:01 【问题描述】: 这确实是问题的全部,但我正在使用 python-high…

    Python开发 2023年4月7日
    00
  • Python定时任务实现方案

    下面是详细讲解“Python定时任务实现方案”的完整攻略: 什么是定时任务 定时任务是指在指定的时间或时间间隔内,定期运行某些特定代码的程序任务,它在日常生活和工作中应用广泛。例如,在备份数据库、爬虫数据、发送定时邮件等场景中,都需要运用到定时任务。 Python实现定时任务的方式 Python实现定时任务的方式有多种,常见的方式有: 使用第三方库:cele…

    python 2023年5月19日
    00
  • Python object类中的特殊方法代码讲解

    Python object类中的特殊方法代码讲解 在 Python 中,每个对象都有一些特殊的方法,这些方法在 Python 文档中被称为对象的特殊方法。这些方法允许我们创建自定义类,并以 Python 语言惯有的方式与这些类交互。object类是 Python 中最基本的类,所有其他类都继承自该类,因此在本文中,我们将详细讲解object类中的特殊方法。 …

    python 2023年5月13日
    00
  • 浅谈Pytorch中的自动求导函数backward()所需参数的含义

    让我为大家详细讲一下PyTorch中的自动求导函数backward()所需参数的含义。 简介 在PyTorch中,自动求导是非常重要的特性。通过它,我们可以轻松地计算梯度并优化模型。而自动求导函数backward()是其中的核心函数之一。 backward()函数介绍 简述 backward()是计算当前张量在一个标量上的梯度。通常,在计算loss函数的梯度…

    python 2023年5月19日
    00
  • 详解Python 2.6 升级至 Python 2.7 的实践心得

    详解Python 2.6 升级至 Python 2.7 的实践心得 背景介绍 随着Python 2.6版本的退出发布周期,Python开发者逐渐意识到Python 2.6版本中存在许多巨大的限制条件,其中最主要的限制条件之一就是Python 2.7版本对新特性和语言功能的支持更加全面。 因此,在Python开发者都十分看好Python 2.7版本的同时,升级…

    python 2023年6月3日
    00
  • Python 集合之set详解

    Python集合之set详解 集合(set)是Python中的一种基本数据结构,它是由一组无序且不重复的元素组成的数据类型。在Python中可以使用set()函数来创建一个集合。 创建集合 我们可以使用set()函数来创建一个集合,示例如下: set1 = set([1, 2, 3, 4, 5]) set2 = {‘apple’, ‘banana’, ‘or…

    python 2023年5月13日
    00
  • Python 用cycle()循环迭代

    下面是关于Python中cycle()函数的使用方法说明。 cycle()函数的作用 cycle()函数可以将输入的可迭代对象无限重复输出,从而可以实现循环迭代的效果。 cycle()函数的语法 cycle(iterable) 参数说明: iterable:要重复的可迭代对象。 返回值说明: cycle()函数返回一个迭代器,可以无限次重复遍历输入的可迭代对…

    python-answer 2023年3月25日
    00
合作推广
合作推广
分享本页
返回顶部