如图

 

 代码:

 1 import requests
 2 import re
 3 from lxml import html
 4 import _thread
 5 
 6 
 7 class wallpaper:
 8     def __init__(self):
 9         \'\'\'
10         初始化
11         \'\'\'
12         self.url = "http://simpledesktops.com/"
13         self.req_header = {
14             \'User-Agent\': \'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36\',
15         }
16         self.S = requests.session()
17 
18     def home(self, num):
19         \'\'\'
20         访问首页
21         \'\'\'
22         self.numx = num
23         X = self.S.get(self.url+f"browse/{num}")
24         self.context = X.text
25 
26     def url_all(self):
27         \'\'\'
28         获取所有子页链接
29         \'\'\'
30         tree = html.fromstring(self.context)
31         self.res = tree.xpath(\'//div[@class="desktop"]/a/@href\')
32         print(self.res)
33 
34     def Single(self, url):
35         \'\'\'
36         访问子页,下载图片
37         \'\'\'
38         url = url
39         O = self.S.get(self.url+url)
40         Otree = html.fromstring(O.text)
41         res = Otree.xpath(\'//div[@class="desktop"]/a/@href\')
42         title = Otree.xpath(\'//h2/a/text()\')
43         print(f"第{self.numx}页_标题:"+title[0])
44         cs = self.S.get(self.url+res[0])
45         print("链接:"+self.url+res[0])
46         with open(f\'img/{self.numx}_{title[0]}.png\', \'wb\') as f:
47             f.write(cs.content)
48 
49     def dowlod(self):
50         \'\'\'
51         下载所有图片
52         \'\'\'
53         for i in self.res:
54             self.Single(url=i)
55 
56 
57 def job(IN, OUT):
58     \'\'\'
59     线程函数
60     \'\'\'
61     for num in range(IN, OUT):
62         A = wallpaper()
63         A.home(num=num)
64         A.url_all()
65         A.dowlod()
66 
67 
68 try:  # 多线程分段下载
69     _thread.start_new_thread(job, (5, 10, ))
70     _thread.start_new_thread(job, (14, 20, ))
71     _thread.start_new_thread(job, (23, 30, ))
72     _thread.start_new_thread(job, (32, 40, ))
73     _thread.start_new_thread(job, (41, 51, ))
74 except:
75     print("Error: 无法启动线程")
76 
77 
78 while 1:  # 阻塞程序
79     pass

 

版权声明:本文为ksxh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ksxh/p/13235050.html