乐于助人 发表于 2019-7-29 11:35

python小白第三天,爬壁纸

首先,膜拜论坛里其他爬虫大佬,妹子图有人前面发过,一个是Beautiful爬的,一个是多线程,但是我保证,我没有看着他们的写,而是自己独立写的简单的单线程爬取,有的爱友可能没有python环境,我就顺便打包了一下,嘻嘻。大佬勿喷,小白一起交流。

exe下载地址:https://www.lanzouj.com/i57m9wf

我不知道行不行,因为我电脑测试成功了,不知道没有环境的行不行,可以试试,激起大家学爬虫的热情。
import requests
import os
from lxml import etree

class Spider(object):
    def headers(self):
      head={
                  'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0',
                  'Referer':'https://www.mzitu.com/tag/youhuo/'
                }
      self.first_request(head)
    def first_request(self,head):

      url = 'http://www.mzitu.com'
      response = requests.get(url,headers=head)
      # print(response.content.decode())
      html = etree.HTML(response.content.decode('utf-8'))
      Bigtit_list = html.xpath('//ul[@id="pins"]/li/a/img/@alt')
      Bigsrc_list = html.xpath('//ul[@id="pins"]/li/a/@href')
      # print(Bigtit_list,Bigsrc_list)
      for Bigtit,Bigsrc in zip(Bigtit_list,Bigsrc_list):
            if os.path.exists(Bigtit) == False:
                os.mkdir(Bigtit)
            print(Bigsrc)


            self.second_request(Bigtit,Bigsrc,head)

    def second_request(self,Bigtit,Bigsrc,head):
      for i in range(1,15):
            response = requests.get(Bigsrc+'/'+str(i),headers=head)
            html = etree.HTML(response.content.decode())
            img_name = html.xpath('//div[@class="main-image"]/p/a/img/@alt')
            img_link =html.xpath('//div[@class="main-image"]/p/a/img/@src')
            for name,link in zip(img_name,img_link):

                try:
                  rst = requests.get(link,headers=head)

                  img = rst.content
                  print(link)
                  file_name = Bigtit +'\\'+link.split('/')[-1]
                  print('正在下载的图片为:',name)
                  with open(file_name,'wb') as f:
                        f.write(img)
                except Exception as err:
                  print(err)


spyder=Spider()
spyder.headers()





下面这个源码是壁纸88的,昨天一个爱友问我能不能爬爬试试,我试了试,只能爬取网站面向大众的图片,后台原画质的图片,我抓包到原画质图片的下载地址,可是毕竟还是有点太小白了,不会分析后面的特征码从哪里来,很抱歉。
import requests
import re
from lxml import etree


class Spyder(object):
    def first_url(self,page):
      for i in range(1,page):
            url = 'http://www.bizhi88.com/s/122/'+str(i)+'.html'
            response = requests.get(url)
            html = response.content.decode()
            mid_tit_list = re.compile('<a class="title" href=".*?" target="_blank" title=".*?">(.*?)</a>').findall(html)
            mid_url_list = re.compile('<a class="title" href="(.*?)" target="_blank" title=".*?">.*?</a>').findall(html)

            for mid_tit,mid_url in zip(mid_tit_list,mid_url_list):
                self.get_url(mid_tit,mid_url)

    def get_url(self,mid_tit,mid_url):
      url = 'http://www.bizhi88.com'+mid_url
      response = requests.get(url)
      html = etree.HTML(response.content.decode())
      new_url = html.xpath('//div[@class="layout wp-con"]/div/img/@src')
      # print(new_url)
      self.data_save(new_url,mid_tit)

    def data_save(self,new_url,mid_tit):
      response = requests.get(new_url)
      data = response.content
      print('正在下载的图片名字是:',mid_tit)
      with open(mid_tit+'.jpg','wb') as f:
            f.write(data)

spyder = Spyder()
page = int(input('请输入要下载而页数:'))
spyder.first_url(page)

乐于助人 发表于 2019-7-29 13:14

嘚瑟挨顿揍 发表于 2019-7-29 13:13
麻烦问一下python基础是看的PDF还是视频啊看的谁的

链接:https://pan.baidu.com/s/1AZ6nczGBALVq55IhmtQAZQ
提取码:dvrd
复制这段内容后打开百度网盘手机App,操作更方便哦
视频这是我看的资料不知道适不适合你

indian806 发表于 2019-7-29 13:12

乐于助人 发表于 2019-7-29 13:06
我也不太清楚其他小伙伴不知道成功没

我晚上回去再试试吧,对了,我有几个问题想解决下,不知可否交流下。还有我目前也买了书在看,刚起步,还没稳下心

夜记梦 发表于 2019-7-29 11:47

想学爬图 大概要怎么学习 可以指导一下吗

乐于助人 发表于 2019-7-29 11:48

夜记梦 发表于 2019-7-29 11:47
想学爬图 大概要怎么学习 可以指导一下吗

我的顺序是 python基础语法 爬虫实战然后自己摸索着写

indian806 发表于 2019-7-29 11:54

运行后只看到文件夹,但是里面没有图片啊,朋友{:1_909:}

乐于助人 发表于 2019-7-29 11:58

indian806 发表于 2019-7-29 11:54
运行后只看到文件夹,但是里面没有图片啊,朋友

我市的时候是有的...可能是没环境吧

乐于助人 发表于 2019-7-29 12:00

软件测试截图

靈龗 发表于 2019-7-29 12:04

感觉有点厉害啊,兄弟

cj13888 发表于 2019-7-29 12:07

精神可嘉。我要向你学习

我爱猫哥 发表于 2019-7-29 12:18

楼主牛逼,学的哪个教程。可以共享下不

乐于助人 发表于 2019-7-29 12:22

我爱猫哥 发表于 2019-7-29 12:18
楼主牛逼,学的哪个教程。可以共享下不

上个帖子回复里面有教程链接
页: [1] 2 3 4 5
查看完整版本: python小白第三天,爬壁纸