v000085712 发表于 2020-4-29 16:34

【python】+基础简单语言爬取妹子图,初学者编写(大佬勿喷)适合小白...

本帖最后由 wushaominkk 于 2020-4-30 15:48 编辑

import requests
from lxml import etree
import os
import time

header = {
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36",
'referer': 'https://www.mzitu.com/'
}
'''列出来所有分页'''
url = 'https://www.mzitu.com/page/1/'#要爬取的地址
r = requests.get(url,headers =header).text#解析网页并转成文本
html = etree.HTML(r)#把解析好的网页转成xpath可爬取类型
max_page = html.xpath('//*[@class="nav-links"]/a/text()')#下面列表倒数第二个是总页数max_page[-2]
print(max_page[-2])
list_name = (''.join(html.xpath('//*[@class="main-image"]/p/a/img/@alt')))
i = 0#设定起点
while i < int(max_page[-2]):#循环输出列表页码
    i = i + 1#循环一遍url+1
    list_url = 'https://www.mzitu.com/page' + '/' + str(i)#拼接url
    print(list_url)#输出每一页的url
    '''获取分页中的图集url地址'''
    r = requests.get(list_url, headers=header).text# 解析网页并转成文本
    html = etree.HTML(r)# 把解析好的网页转成xpath可爬取类型
    list_page_url = html.xpath('//*[@id="pins"]/li/a/@href')#获取列表中的图集url
    for page_url in list_page_url:
      print(page_url)#输出图集url
      '''开始获取分页url'''
      r = requests.get(page_url, headers=header).text# 解析网页并转成文本
      html = etree.HTML(r)# 把解析好的网页转成xpath可爬取类型
      max_page = html.xpath('//*[@class="pagenavi"]/a/span/text()')# 下面列表倒数第二个是总页数max_page[-2]
      list_name = (''.join(html.xpath('//*[@class="main-image"]/p/a/img/@alt')))
      if not os.path.exists(list_name):
            os.mkdir(list_name)
      i = 0# 设定起点
      while i < int(max_page[-2]):# 循环输出图集页码
            i = i + 1# 循环一遍url+1
            list_url = page_url + '/' + str(i)# 拼接url
            print(list_url)#输出url
            time.sleep(1)# 每爬取一页停留一秒,给网站一个休息时间
            '''开始下载图片'''
            r = requests.get(list_url, headers=header).text# 解析网页并转成文本
            html = etree.HTML(r)# 把解析好的网页转成xpath可爬取类型
            pic_name = html.xpath('/html/body/div/div/h2/text()')# 图片标题
            pic_url = html.xpath('/html/body/div/div/div/p/a/img/@src')# 图片下载地址

            for pic_name in pic_name:# 循环获取图片名字
                for pic_url in pic_url:# 获取要下载图片的地址
                  with open(list_name + '/' + pic_name + '.jpg', 'wb') as pic:
                        pic_url = requests.get(pic_url, headers=header).content
                        pic.write(pic_url)
                        print(pic_name)#输出图片名称

第一品霄 发表于 2020-4-29 16:40

学习一下了{:1_927:}

v000085712 发表于 2020-5-4 08:25

indian806 发表于 2020-4-29 17:18
总是找借口,导致现在都没去学

我也是断断续续的学习,偶然间工作轻松了点好好的学习了一下.现在也就会爬取一些简单不是很富在的网站,大家一起加油学习

1676TKMS 发表于 2020-4-29 16:43

学习了,感谢谢分享

BBoy蓝牙 发表于 2020-4-29 16:48

学习了,感谢谢分享

https://cdn.jsdelivr.net/gh/hishis/forum-grandmaster-for-discuz/public/images/patch.gif

王星星 发表于 2020-4-29 17:00

chishingchan 发表于 2020-4-29 17:13

这个语言好像很受欢迎!不知道有没有论坛,想去学习一下。

酋长萨尔A 发表于 2020-4-29 17:17

芜湖起飞{:301_997:}

cwinner 发表于 2020-4-29 17:18

学习学习。感谢谢分享!

indian806 发表于 2020-4-29 17:18

总是找借口,导致现在都没去学{:1_907:}

gtbyang 发表于 2020-4-29 17:25

楼主坚持住,不要像我这样学了几天就开小差了
页: [1] 2 3
查看完整版本: 【python】+基础简单语言爬取妹子图,初学者编写(大佬勿喷)适合小白...