zyjsuper 发表于 2020-8-17 21:31:47

王者荣耀高清皮肤下载(Selenium)

[ 本帖最后由 zyjsuper 于 2020-8-19 21:37 编辑 ]\n\n初学ChromeDriver +Selenium,分享下学习的小成果给坛友们,很多地方还需要优化,没有详细的做注释,大家凑合着看吧。

chromedriver下载地址:
墙外:https://sites.google.com/a/chromium.org/chromedriver/downloads
墙内:http://npm.taobao.org/mirrors/chromedriver/
https://chromedriver.storage.googleapis.com/index.html

参考链接:
https://blog.csdn.net/KaryKwok/article/details/80952084
https://blog.csdn.net/weixin_36279318/article/details/79475388

下载不易,把下载好的分享给大家:https://ws28.cn/f/39s6bzsqeug    过期时间: 1 天, 23:51:48


#!/usr/bin/env python
# -*- encoding: utf-8 -*-

'''
@Author:   zyjsuper
@License :   (C) Copyright 2013-2020
@Contact :   [email protected]
@File    :   chromeSpider.py
@Time    :   2020/8/16 19:46
@Desc    :
'''

import time,os
from selenium import webdriver
import requests

browser = webdriver.Chrome()
headers = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
username = os.getenv("USERNAME")
savepath = "C:\\Users\\"+ username + "\\Desktop\\Photos\\"
try:os.mkdir(savepath)
except:pass

browser.get("https://pvp.qq.com/web201605/wallpaper.shtml")
time.sleep(2)
page = 1
while True:
    i = 1
    urls = browser.find_elements_by_xpath("//div[@class='p_hd']//li[@class='sProdImgDown sProdImgL7']/a")
    for url in urls:
      pic_name =browser.find_element_by_xpath("//div[@class='p_hd']//div[" + str(i) + "]/h4").text
      real_url = url.get_attribute("href")
      path = savepath + str(page)
      try:os.mkdir(path)
      except:pass
      response = requests.get(real_url,headers=headers)
      with open(path + "\\" + pic_name + ".jpg",'wb') as file:
            file.write(response.content)
            print(path + "\\" + pic_name + ".jpg has been saved.")
      i += 1
      if i ==21:
            break
    browser.find_element_by_class_name("downpage").click()
    page += 1


plqf 发表于 2020-8-18 10:19:20

谢谢楼主分享

Jaesonal 发表于 2020-8-18 11:05:47

谢谢楼主,这一下美滋滋了

shiqiangge 发表于 2020-8-19 08:55:17

不太清楚这是干啥用的{:cry:}

zyjsuper 发表于 2020-8-19 20:47:15

[ 本帖最后由 zyjsuper 于 2020-8-19 21:37 编辑 ]\n\n[ 本帖最后由 zyjsuper 于 2020-8-19 21:36 编辑 ]\n\n改成无界面启动更好一些,在爬取过程中确实需要一点时间,但是个人觉得写爬虫最好不要用多线程,可能造成目标服务器的额外负担。
这个爬虫程序虽然时间成本高一些,但是确实很有效果,可以灵活变通,举一反三,拿到自己想要的结果。
写爬虫要遵循一些原则,每个人会有不同的体会,也希望大家分享自己的想法。

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

'''
@Author:   zyjsuper
@License :   (C) Copyright 2013-2020
@Contact :   [email protected]
@File    :   MztSpider.py
@Time    :   2020/8/17 20:23
@Desc    :
'''


from selenium import webdriver
import requests,os


def get_pic(page):
    browser = webdriver.Chrome()
    browser.minimize_window()
    browser.get("https://www.mzitu.com/page/" + str(page))

    headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0',
            'Referer': 'https://www.mzitu.com/japan/'
    }


    username = os.getenv("USERNAME")
    savepath = "C:\\Users\\"+ username + "\\Desktop\\Meizitu\\page-" + str(page) +"\\"
    try:os.mkdir(savepath)
    except:pass

    links= browser.find_elements_by_xpath("//ul[@id='pins']/li/a")
    urls = []
    for link in links:
      url = link.get_attribute("href")
      urls.append(url)

    p = 1
    for url in urls:
      chrome_options = webdriver.ChromeOptions()
      chrome_options.add_argument('--headless')
      browser = webdriver.Chrome(chrome_options=chrome_options)
      browser.get(url)
      pic_url = browser.find_element_by_xpath("//div[@class='main-image']//p//a//img").get_attribute("src")
      response = requests.get(pic_url,headers=headers)
      with open(savepath + str(p) + ".jpg","wb") as file:
            file.write(response.content)
      p += 1
    browser.quit()

if __name__ == '__main__':
    for p in range(169,254):
      get_pic(p)

zyjsuper 发表于 2020-8-19 20:47:16

改成无界面启动更好一些,在爬取过程中确实需要一点时间,但是个人觉得写爬虫最好不要用多线程,可能造成目标服务器的额外负担。
这个爬虫程序虽然时间成本高一些,但是确实很有效果,可以灵活变通,举一反三,拿到自己想要的结果。
写爬虫要遵循一些原则,每个人会有不同的体会,也希望大家分享自己的想法。

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

'''
@Author:   zyjsuper
@License :   (C) Copyright 2013-2020
@Contact :   [email protected]
@File    :   MztSpider.py
@Time    :   2020/8/17 20:23
@Desc    :
'''


from selenium import webdriver
import requests,os


def get_pic(page):
    browser = webdriver.Chrome()
    browser.minimize_window()
    browser.get("https://www.mzitu.com/page/" + str(page))

    headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0',
            'Referer': 'https://www.mzitu.com/japan/'
    }


    username = os.getenv("USERNAME")
    savepath = "C:\\Users\\"+ username + "\\Desktop\\Meizitu\\page-" + str(page) +"\\"
    try:os.mkdir(savepath)
    except:pass

    links= browser.find_elements_by_xpath("//ul[@id='pins']/li/a")
    urls = []
    for link in links:
      url = link.get_attribute("href")
      urls.append(url)

    p = 1
    for url in urls:
      chrome_options = webdriver.ChromeOptions()
      chrome_options.add_argument('--headless')
      browser = webdriver.Chrome(chrome_options=chrome_options)
      browser.get(url)
      pic_url = browser.find_element_by_xpath("//div[@class='main-image']//p//a//img").get_attribute("src")
      response = requests.get(pic_url,headers=headers)
      with open(savepath + str(p) + ".jpg","wb") as file:
            file.write(response.content)
      p += 1
    browser.quit()

if __name__ == '__main__':
    for p in range(169,254):
      get_pic(p)

子弹钻裤裆 发表于 2020-8-26 23:27:44

不知所云。。。。。。。。。
页: [1]
查看完整版本: 王者荣耀高清皮肤下载(Selenium)