下面是这段 Selenium 壁纸爬虫的 背诵用简化版本(含注释)
⸻
✅ 代码
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait # 显式等待
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By # 定位方式
import os
import requests
import time
class WallPaperSpider:
def __init__(self):
self.url = 'https://mm.enterdesk.com/' # 网站主页
self.dir = 'MMimages' # 图片保存文件夹
def get_html(self):
browser = webdriver.Chrome() # 打开浏览器
browser.get(self.url) # 请求网页
# 等待页面中的 .egeli_pic_m 元素加载出来
wait = WebDriverWait(browser, 10)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".egeli_pic_m")))
# 向下滚动两次,加载更多图片
for i in range(2):
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
# 获取包含图片的主区域
pic_m = browser.find_element(By.CSS_SELECTOR, ".egeli_pic_m")
# 获取所有图片元素
pic_li = pic_m.find_elements(By.CSS_SELECTOR, ".egeli_pic_li dl dd a img")
pic_list = []
for pic in pic_li:
img = {
'pic_url': pic.get_attribute('src'), # 获取图片地址
'pic_title': pic.get_attribute('title') # 获取图片标题
}
pic_list.append(img)
return pic_list
def save_to_images(self, pic_list):
# 如果文件夹不存在就创建
if not os.path.exists(self.dir):
os.makedirs(self.dir)
# 遍历图片列表进行下载
for pic in pic_list:
img_path = os.path.join(self.dir, pic['pic_title'] + '.jpg')
res = requests.get(pic['pic_url'])
with open(img_path, 'wb') as f:
f.write(res.content)
print('正在保存第{}张'.format(pic_list.index(pic) + 1))
def main(self):
pic_list = self.get_html() # 获取图片列表
self.save_to_images(pic_list) # 保存图片
if __name__ == '__main__':
spider = WallPaperSpider() # 创建对象
spider.main() # 启动程序
⸻
🧠 背诵结构提示
你只要记住这 五步流程:
- 导入模块(selenium、requests、os、time)
- 构造类 WallPaperSpider
- get_html() → 用浏览器打开网页,抓取图片地址
- save_to_images() → 保存图片到本地
- main() → 调用抓取和保存方法
⸻
📌 关键点助记词(口诀式)
selenium 打开网页,等元素滚两下;
找图片存标题,抓链接放进家;
遍历图片地址,requests 抓图不怕;
写入文件夹,保存成功笑哈哈!
本文作者为wzzyhg,转载请注明。