QingYeMuRong 发表于 2020-2-2 13:27

python爬取 优美图库 美女写真

本帖最后由 QingYeMuRong 于 2020-2-2 14:18 编辑

源码分享附件文件自己下载,下载后把后缀.txt修改成.py就可以了,这个爬虫使用的是for循环,适合新手学习。有兴趣的朋友可以自己改成def函数形式或者class类。
#Author = QingYeMuRong
      import requests
      from lxml import etree
      from urllib.request import urlretrieve
      from urllib.parse import urlencode
      import re
      import os
      import time
      import random
      ua = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36", #chrome
                                        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)", #搜狗
                                        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)", #360
                                        "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0" #火狐
                                        ]
      headers ={
                        "User-Agent":random.choice(ua)
                        }
      print(random.choice(ua))
      for i in range(1,2):#可以自己定义爬取页数这个文档就爬取1页
                        url = "http://www.umei.cc/meinvtupian/meinvxiezhen/"+str(i)+".htm"
                        res = requests.get(url,headers=headers)
                        data = res.content.decode('utf-8')
                        treeData = etree.HTML(data)
                        title = treeData.xpath('//title/text()')
                        print(title)
                        urls = treeData.xpath('//*[@class="TypeList"]/ul/li/a/@href') #起始地址url
                        titles = treeData.xpath('//*[@class="TypeList"]/ul/li/a/div/text()') #所有的url起始地址名称
                        print(urls)
                        print(titles)
                        for j in range(0,len(urls)):
                                        k=titles
                                        file = 'D:/photos/'+k #D盘创建一个photos 文件夹 保存照片
                                        # 判断文件是否存在,不存在则创建
                                        #获取页数
                                        res1 = requests.get(urls,headers=headers)
                                        data1 = res1.content.decode('utf-8')
                                        part1 = '<li><a>共(.*?)页'
                                        url_num =re.compile(part1,re.S).findall(data1)
                                        print(url_num)
                                        if not os.path.exists(file):
                                                      os.makedirs(file)
                                                      print('--创建成功--')

                                        for n in range(0,eval(url_num)):
                                                      if n==0 :
                                                                        urls3 = urls
                                                      else:
                                                                        urls3 = urls[:-4]+'_'+str(n+1)+'.htm'
                                                                        # print(urls3)
                                                      print(urls3)
                                                      try:
                                                                        res2 = requests.get(urls3,headers=headers)
                                                                        data2 = res2.content.decode('utf-8')
                                                                        # print(data1)
                                                                        part2 = '<img alt.*?src="(.*?)" />'
                                                                        photo_url = re.compile(part2,re.S).findall(data2)
                                                                        print(photo_url)
                                                                        path = 'D:/photos/'+k+'/'+str(n+1)+'.jpg'
                                                                        urlretrieve(photo_url,path)
                                                                        print("下载完成,程序挂起0.5s") #防止爬取速度过快
                                                                        time.sleep(0.5)
                                                      except Exception as err:
                                                                        print(err)

QingYeMuRong 发表于 2020-2-3 11:23

921605039 发表于 2020-2-2 21:53
显示这些代码是啥意思,想爬点正经的图片当桌面,用了其它代码都有line 1,in,百度也找不到具体的 ...

requests 这个是python库 ,不是自带的,需要下载下载方式,win + R然后输入 cmd回车 在输入 pip install requests,就可以直接下载了。

921605039 发表于 2020-2-2 21:53

显示这些代码是啥意思{:1_896:},想爬点正经的图片当桌面,用了其它代码都有line 1,in<module>,百度也找不到具体的答案
Traceback (most recent call last):
File "D:\桌面\Umei.py", line 1, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

我傻瓜1991 发表于 2020-2-2 13:36

试试看哦{:1_918:}{:1_918:}{:1_918:}

傻小猪 发表于 2020-2-2 13:43

感谢,学习借鉴

Rock_L 发表于 2020-2-2 13:45

学习借鉴

yox 发表于 2020-2-2 13:50

了解一下...

zgmn001 发表于 2020-2-2 13:56

男人的喜好:lol

lntuer 发表于 2020-2-2 13:59

加上多线程或者是scrapy岂不是更爽,你这也太慢了{:301_971:}

QingYeMuRong 发表于 2020-2-2 14:02

lntuer 发表于 2020-2-2 13:59
加上多线程或者是scrapy岂不是更爽,你这也太慢了

没有使用scrapy框架,这个就是随便写的。改天我用scrapy写一个。

airborne 发表于 2020-2-2 14:18

学习借鉴,谢谢

zkq970413 发表于 2020-2-2 14:23

不错不错!非常感谢
页: [1] 2 3 4 5
查看完整版本: python爬取 优美图库 美女写真