[ 本帖最后由 zyjsuper 于 2020-8-19 21:37 编辑 ]\n\n[ 本帖最后由 zyjsuper 于 2020-8-19 21:36 编辑 ]\n\n改成无界面启动更好一些,在爬取过程中确实需要一点时间,但是个人觉得写爬虫最好不要用多线程,可能造成目标服务器的额外负担。
这个爬虫程序虽然时间成本高一些,但是确实很有效果,可以灵活变通,举一反三,拿到自己想要的结果。
写爬虫要遵循一些原则,每个人会有不同的体会,也希望大家分享自己的想法。
[Python] 纯文本查看 复制代码 #!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@Author : zyjsuper
@License : (C) Copyright 2013-2020
@Contact : [email][email protected][/email]
@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)
|