用python爬取一个美女桌面网站上的所有桌面

 

 爬取的就是这个美女桌面了,只是写的有很大缺点:

第一,没有防反爬机制,因为就是练手玩玩看;

第二,没有设置for循环或者递归点击下一页的机制,也就是这个网站一旦更新,就要手动改它的末尾值,因为我懒,而且就随便玩玩。

代码如下:

 1 import threading
 2 import urllib
 3 import requests
 4 import time
 5 from concurrent import futures
 6 
 7 header = {
 8     'Referer': 'http://www.netbian.com/skin/style.css',
 9     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
10 
11 }
12 def download_img(src,filename):
13     img = requests.get(src, headers=header)  # Referer  img是图片,不能用字符串保存
14     with open('imgs/' + filename, 'wb') as file:
15         file.write(img.content)  # img是图片响应,img.content是图片的字节,不要使用text
16     print("已爬取第", pageID, "页的", src)
17 
18 for pageID in range(1,164):
19     time.sleep(0.7)
20     if(pageID==1):
21         url = 'http://www.netbian.com/meinv/index.htm'
22     else:
23         url = 'http://www.netbian.com/meinv/index'+'_'+str(pageID)+".htm"
24 
25     #获取相应
26     resp=requests.get(url,headers=header)
27     #print(resp.encoding)
28     resp.encoding='gbk'
29     #print(resp.encoding)
30     #print(resp.text)
31 
32     #解析响应
33     from lxml import etree
34     html=etree.HTML(resp.text)
35     srcs=html.xpath('//*[@id="main"]/div[3]/ul/li/a/img/@src')
36     #print("开始输出")
37     ex = futures.ThreadPoolExecutor(max_workers=40)
38     for src in srcs:
39         filename=src.split('/')[-1]
40         ex.submit(download_img,src,filename)
41         #print(src)
42         #print(filename)
43         #download_img(src,filename)

 

最后下载下来,你懂的,一共三千多张图:

 

posted @ 2021-12-26 20:16  爱和九九  阅读(98)  评论(0)    收藏  举报