鱼C论坛

 找回密码
 立即注册
查看: 2300|回复: 8

[作品展示] 爬取妹子图

[复制链接]
发表于 2019-6-20 15:54:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 金刚 于 2019-6-20 15:59 编辑

用法演示.png


  1. import requests
  2. from bs4 import BeautifulSoup
  3. from lxml import etree
  4. import os
  5. from time import sleep


  6. def rs_func_one(url):
  7.         headers = {
  8.         "referer": "https://www.mzitu.com/jiepai/",
  9.         "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
  10.         }
  11.         rs = requests.get(url, headers=headers)
  12.         # print(rs.status_code)
  13.         return rs

  14. def rs_func_two(url):
  15.         headers = {
  16.         "referer": "https://www.mzitu.com/all/",
  17.         "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
  18.         }
  19.         cookies = {
  20.         'cookie': 'Hm_lvt_dbc355aef238b6c32b43eacbbf161c3c=1560850727,1560931430,1560994737; Hm_lpvt_dbc355aef238b6c32b43eacbbf161c3c=1560998871'
  21.         }
  22.         rs = requests.get(url, headers=headers, cookies=cookies)
  23.         sleep(1)
  24.         # print(rs.status_code)
  25.         return rs

  26. def parse_html(html, start_group, end_group):
  27.         # print(html)
  28.         '''tree = etree.HTML(html)
  29.         # url_list = tree.xpath('//div[@class="all"]/ul[@class="archives"]//a[@class]/@href')
  30.         url_list = tree.xpath('//div[@class="all"]/ul[@class="archives"]//a[@target="_blank"]/@href')
  31.         # print(url_list)
  32.         # print(len(url_list))'''
  33.         soup = BeautifulSoup(html, "lxml")
  34.         url_list = soup.select('.all > .archives a[target="_blank"]')
  35.         url_list = url_list[start_group-1:end_group]
  36.         # print(url_list)
  37.         # print(len(url_list))
  38.         group_url_list = list()
  39.         for tag_object in url_list:
  40.                 # print(tag_object['href'])
  41.                 # print(type(tag_object['href']))
  42.                 # exit()
  43.                 group_url_list.append(tag_object['href'])
  44.         return group_url_list


  45. def parse_html_person(html):
  46.         tree = etree.HTML(html)
  47.         # img_sum_person_list = tree.xpath('//a/span[@class]/text()')
  48.         img_sum_person_list = tree.xpath("//div[@class='pagenavi']/a/span/text()")
  49.         # print(img_sum_person_list[-2])
  50.         # print(type(img_sum_person_list[-2]))
  51.         return img_sum_person_list[-2]

  52. def parse_last_page_html(html):
  53.         tree = etree.HTML(html)
  54.         # jpg_url = tree.xpath("//p[@class]/a/img/@src")
  55.         jpg_url_list = tree.xpath("//div[@class='main-image']/p/a/img/@src")
  56.         # print(jpg_url_list)
  57.         # exit()
  58.         return jpg_url_list


  59. def save_img(img, url, folder):
  60.         filename = url.split('/')[-1]
  61.         print('正在下载:', filename)
  62.         with open('./{}/{}'.format(folder, filename), 'wb') as fp:
  63.                 fp.write(img)

  64. # 主函数
  65. def main():
  66.         folder = input('请输入图片保存的文件夹:')
  67.         os.mkdir(folder)
  68.         # 输入阿拉伯数字,用法例:5-10  到现在为止有2997组图片,可以输入1-2997。之后还会更新
  69.         start_group = int(input('请输入起始组图:'))
  70.         end_group = int(input('请输入结束组图:'))
  71.         syn_url = "https://www.mzitu.com/all/"
  72.         # 请求
  73.         rs = rs_func_one(syn_url)
  74.         # print(rs.status_code)
  75.         # print(rs.url)
  76.         html = rs.text
  77.         # print(html)
  78.         # 组图url保存到列表
  79.         url_list = parse_html(html, start_group, end_group)
  80.         # print(url_list)
  81.         start = start_group
  82.         for group_url in url_list:
  83.                 print('开始下载第{}页'.format(start))
  84.                 rs = rs_func_two(group_url)
  85.                 html_person = rs.text
  86.                 # print(html_person)
  87.                 # 每个图片的总数量
  88.                 img_sum_person = parse_html_person(html_person)
  89.                 # print(img_sum_person)
  90.                 for img_num_url in range(1, int(img_sum_person)+1):
  91.                         # each_img_url = group_url + '/' + img_num_url
  92.                         each_img_url = '{}{}{}'.format(group_url, '/', img_num_url)
  93.                         # print(each_img_url)
  94.                         rs = rs_func_two(each_img_url)
  95.                         last_page_html = rs.text
  96.                         # print(last_page_html)
  97.                         # exit()
  98.                         jpg_url_list = parse_last_page_html(last_page_html)
  99.                         # print(jpg_url_list)
  100.                         # 一个图片地址
  101.                         jpg_url = jpg_url_list[0]
  102.                         rs = rs_func_two(jpg_url)
  103.                         # print(rs.status_code)
  104.                         # exit()
  105.                         img = rs.content
  106.                         save_img(img, jpg_url, folder)
  107.                 print('结束下载第{}页'.format(start))
  108.                 start += 1


  109. if __name__ == '__main__':
  110.         main()
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-4 01:02:29 | 显示全部楼层
缺了request 与  lxml模块,补上了还有点问题,能再教我一下吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-4 10:54:50 | 显示全部楼层
myhic 发表于 2020-6-4 01:02
缺了request 与  lxml模块,补上了还有点问题,能再教我一下吗?

什么意思?我这个已经很久了,可能源网站的api接口全都变了,我这个爬的都失效了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-7 21:53:27 | 显示全部楼层
在无意之中看到在ooxx2文件夹下有很多妹子的图片,质量一般,也算成功了吧,继续努力会有所收获的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-8 21:40:28 | 显示全部楼层
myhic 发表于 2020-6-7 21:53
在无意之中看到在ooxx2文件夹下有很多妹子的图片,质量一般,也算成功了吧,继续努力会有所收获的。

嗯,模仿着自己思考着写挺好,下一期也考虑学一下scrapy框架
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-9 06:21:38 | 显示全部楼层
scrapy框架是什么还不懂,以后要学的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-9 11:37:36 | 显示全部楼层
myhic 发表于 2020-6-9 06:21
scrapy框架是什么还不懂,以后要学的

爬虫框架
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-25 04:15:03 | 显示全部楼层
Traceback (most recent call last):
  File "C:/Users/Ason/Desktop/666.py", line 1, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-25 08:27:54 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-28 20:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表