ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

全自动爬取壁纸

2020-07-04 15:39:02  阅读:225  来源: 互联网

标签:thread url res self 爬取 job num 壁纸 全自动


如图

 

 代码:

 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

 

标签:thread,url,res,self,爬取,job,num,壁纸,全自动
来源: https://www.cnblogs.com/ksxh/p/13235050.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有