Python爬虫系列Selenium定向爬取虎扑篮球图片详解
准备工作
在进行定向爬取虎扑篮球图片之前,需要安装Selenium和Chrome浏览器。
- 安装Selenium:可以在命令行使用以下命令进行安装:
pip install selenium
- 下载Chrome浏览器:需要下载浏览器对应版本的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技术站