参考博客:
我在爬取网站图片的时候,遇到了 无论是添加请求头参数还是增加ip代理池也好,抓取到的图片都是一个无关缩略图,限于技术,无法实现进一步的突破了,只能选择selenium 模拟人的行为 ,通过 点击右键,保存图片的方式。
- https://blog.csdn.net/weixin_41796155/article/details/102478659?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase
- https://blog.csdn.net/weixin_41796155/article/details/102478659?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase
- https://blog.csdn.net/jusulysunbeamy/article/details/90003194?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-7-90003194.nonecase&utm_term=python%E6%A8%A1%E6%8B%9F%E9%BC%A0%E6%A0%87%E5%8F%B3%E9%94%AE
- http://www.manongjc.com/article/81600.html
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
import pyperclip
import pyautogui
import time
import os
chrome_options = Options()
# chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_experimental_option('useAutomationExtension', False)
browser = webdriver.Chrome(executable_path=r"C:\chromedriver.exe", options=chrome_options)
browser.get("http://p.ik123.com/bizhi/75491.html")# 图片网站地址
browser.implicitly_wait(3) # 隐藏式等待3s
pic = browser.find_elements_by_xpath("//div[@id='gui_left']//img") # 根据 xpath 定位到图片 列表
pic_urls = [i.get_attribute('src') for i in pic] # 得到图片的urls 列表
pic_names = [i.split('/')[-1:][0] for i in pic_urls] # 得到图片的 图片名列表
pic_root = os.path.abspath(os.path.dirname(os.getcwd())) #得到当前根目录的 上一级目录
image_file = os.path.join(pic_root, 'image') #新建一个文件夹 ,和当前项目同级目录
if not os.path.exists(image_file):
os.makedirs(image_file)
pic_rejoin_path = [os.path.join(image_file,i) for i in pic_names] # 新建
print(pic_rejoin_path)
for i in range(len(pic)):
actions = ActionChains(self.browser)
# 找到图片后右键单击图片
actions.move_to_element(pic[i]) # 定位到元素
actions.context_click(pic[i]) # 点击右键
actions.perform() # 执行
pyautogui.typewrite(['v']) # v 是保存的快捷键
time.sleep(1) # 等待一秒
pyperclip.copy(pic_rejoin_path[i]) # 把 指定的路径拷贝到过来
time.sleep(1) # 等待一秒
pyautogui.hotkey('ctrlleft', 'v') # 粘贴
time.sleep(0.5) # 等待一秒
pyautogui.press('enter')
time.sleep(0.5) # 等待一秒
print("图片下载完成:%s"%pic_urls[i])