乐于助人 发表于 2019-7-28 13:23

python小白第二次实践,爬壁纸

嘻嘻嘻,感谢大家昨天的评论和评分和鼓励,我会继续加油学习的,今天爬了个资源还不错壁纸网站,分享给大家,看不懂得地方,私聊评论,我看到了,一定回答,另外大佬们看到有优化简写的地方,也请多多指教,嘻嘻。
本来写循环可以下所有类目的,后来想了想,就改成选择数字了。废话不多说,上源码。# 作者:Administrator
# 日期:2019/7/28 11:39
# 工具:PyCharm
import requests
from lxml import etree
import os

class BiZhi(object):

    def first_request(self,headers,number):
      for j in range(1,2):
            url = 'http://www.win4000.com/mobile_'+str(number)+'_0_0_'+str(j)+'.html'
            response = requests.get(url,headers=headers)
            html = etree.HTML(response.content.decode())
            Bigtit_list = html.xpath('//ul[@class="clearfix"]/li/a/@title')
            Biglink_list = html.xpath('//div[@class=""]/ul/li/a/@href')
            for Bigtit,Biglink in zip(Bigtit_list,Biglink_list):
                if os.path.exists(Bigtit) == False:
                  os.mkdir(Bigtit)
                biglink = str(Biglink).replace('.html','')
                self.second_request(Bigtit,biglink,headers)

    def second_request(self,Bigtit,biglink,headers):#,Bigtit,Biglink,
      for i in range(1,10):
            try:
                url = biglink+'_'+str(i)+'.html'
                # if url == biglink+'_'+str(i+1)+'.html':
                #   break
                response = requests.get(url,headers=headers)
                html = etree.HTML(response.content.decode())
                img_link = ''.join(html.xpath('//div[@class="main-wrap"]/div/a/img/@src'))
                print(img_link)
                # 请求图片下载地址
                resp = requests.get(img_link,headers=headers)
                data = resp.content
                img_name = img_link[-10:]
                # print(img_name)
                file_name =Bigtit +'\\' +img_name
                print('正在下载的图片为:',img_name)
                with open(file_name,'wb') as f:
                  f.write(data)
            except Exception as err:
                if err == 'string index out of range':
                  continue



spider = BiZhi()
headers = {'User-Agent':'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)'}
print('''
以下为分类对应数字,输入是请输入数字!……^^_^^……
明星:2338节日:2339美女:2340
风景:2341汽车:2342可爱:2343
唯美:2344动漫:2346爱情:2347
动态:2348卡通:2349高翔:2350
影视:2354动物:2355植物:2356美食:2362


''')
number = input('请输入您要下载类目对应的数字:')
spider.first_request(headers,number)

以图为证:

乐于助人 发表于 2019-7-28 18:22

心不再流泪 发表于 2019-7-28 17:47
学这门语言如果除了爬,还有什么其他的用处?

除了爬还有自动化 机器设计 人工智能网页设计 小程序设计前后端....太多了不一一列举了

乐于助人 发表于 2019-7-29 09:31

lu_ 发表于 2019-7-29 08:39
楼主看的都是什么教程,爬虫这一块一点都不会

复制这段内容后打开百度网盘手机App,操作更方便哦?链接:https://pan.baidu.com/s/1_12uXKhUJcd-YKn8Aa3pOg?提取码:t9j8

乐于助人 发表于 2019-7-28 13:38

forjinrange 是页数

乐于助人 发表于 2019-7-28 13:39

最多是5页

fudashuai 发表于 2019-7-28 13:40

欢迎楼主分享给大家!

xiaolvjsy 发表于 2019-7-28 13:53

学习学习……

uumesafe 发表于 2019-7-28 13:56

这个网站的图片还不错的嘛

乐于助人 发表于 2019-7-28 14:06

乐于助人 发表于 2019-7-28 14:06

这张不错

sutungpo 发表于 2019-7-28 14:11

学习了,真厉害!

青衫负雪 发表于 2019-7-28 14:22

好厉害,膜拜大佬
页: [1] 2 3 4
查看完整版本: python小白第二次实践,爬壁纸