身为二刺螈真的一看到动漫手绘美图就想保存下来啊,堆糖上有很多好看的插画,试着用selenium爬了一下,并保存到本地。
# coding--utf8
import selenium
import time
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import requests
import os
import sys
sys.setrecursionlimit(100000)
#爬取堆糖插画
#def driver
options = webdriver.ChromeOptions()
# 更换头部,这一步好像没什么用,每页有120张图片,最后只能爬86张,不知道什么原因啊??头秃
options.add_argument('user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"')
driver = webdriver.Chrome(options=options,executable_path="C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
def q(page_num):
return f'https://www.duitang.com/category/?cat=painting#!hot-p{page_num}'
def scroll_pages(html):
html = driver.find_element_by_tag_name('html')
for i in range(10):
html.send_keys(Keys.END)
time.sleep(1)
def get_img_url():
links = driver.find_elements_by_css_selector('div.mbpho>a>img')
for link in links:
src = str(link.get_attribute('src')).split('.')
del src[-2]
del src[-2]
img_url = src[0] + "." + src[1] + '.' + src[2] + '.' + src[3]
print(img_url)
if os.path.exists('illustration') is False:
os.mkdir('illustration')
img_name = img_url.split('/')[-1]
filename = os.path.join('illustration', img_name)
r = requests.get(img_url)
with open(filename, "wb") as f:
f.write(r.content)
for i in range(1,85):
q(i)
driver.get(q(i))
scroll_pages(q(i))
get_img_url()
time.sleep(10)
运行结果如下:
麻麻再也不用担心我没有手机壁纸了呢!!