Levin-e 发表于 2020-2-18 21:39:21

萌新献丑,爬取整套高清写真原图的爬虫

本帖最后由 Levin-e 于 2020-3-24 10:25 编辑

第二弹已发布
https://fishc.com.cn/thread-162027-1-1.html

这是我第一次发帖,在论坛逛了好久,看到许多大佬们写的爬虫,自己也想试一试
于是用了一天时间写了这个爬虫,基本功能可以实现,但是细节上还有待优化,希望有大佬可以修改完善
额外依赖的包有requests和bs4中的BeautifulSoup

网页来源:https://www.nvshens.net/
爬取的是高清原图,不是缩略图
运行过程中console会显示下载信息,提示一个error不用担心,连续出现两个error则说明特定的一张图片下载失败
这个bug有待改进
具体使用方法在代码的注释中
最后放出源码:
import re, math
import requests
from bs4 import BeautifulSoup

if __name__ == '__main__':
    headers = {
      'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36 Edg/80.0.361.54'
    }
    first_url = 'https://www.nvshens.net/g/31118/'#需手动更改链接,参照这个样式
    r = requests.get(first_url,headers=headers)
    html = r.text
    bf = BeautifulSoup(html,'lxml')
    page_info = bf.find('div',id='dinfo').find('span').get_text()   #获取套图照片总数以计算页码
    pic_num = re.findall(r'\d+',page_info)
    page_num = math.ceil(int(pic_num)/3)
    print('该套图总共有%d页' %page_num)
    print('该套图包含%s' %page_info)

    img_url = bf.find('div', class_='gallery_wrapper').find_all('img')
    for each in img_url:
      name = each.get('alt') + '.jpg'
      img_src = each.get('src')
      replace_src = img_src.replace('/s','')
      path = r'E:\Movie\photo\azhua'#自定义存储位置
      file_name = path + '\\' + name
      try:
            # print(replace_src)
            req1 = requests.get(replace_src,headers=headers)
            with open(file_name, 'wb') as f:
                f.write(req1.content)
            print('%s is download' %file_name)
            time.sleep(3)
            req1 = requests.get(first_url,headers=headers)
      except:
            print('Error')
    page = 2
    while page<=page_num:
      url = 'https://www.nvshens.net/g/31118/%d.html'%page#手动设置最终页码,以及图片地址
      req = requests.get(url,headers=headers)
      html = req.text
      bf = BeautifulSoup(html, 'lxml')
      #page_url = 'https://www.nvshens.net' + bf.find('div', id_='pages').find('a', class_='a1')
      #print(page_url)
      img_url = bf.find('div', class_='gallery_wrapper').find_all('img')
      # print(img_url)
      for each in img_url:
            name = each.get('alt') + '.jpg'
            img_src = each.get('src')
            replace_src = img_src.replace('/s','')
            path = r'E:\'#自定义存储位置
            file_name = path + '\\' + name
            try:
                # print(replace_src)
                req1 = requests.get(replace_src,headers=headers)
                with open(file_name, 'wb') as f:
                  f.write(req1.content)
                print('%s is download' %file_name)
                time.sleep(3)
                req1 = requests.get(url,headers=headers)
            except:
                print('Error')
      page=page+1

Sungne_jer 发表于 2020-2-19 10:18:14

优秀

Levin-e 发表于 2020-2-19 10:48:24

自己顶一下,欢迎交流{:10_297:}

烟肖雨晨 发表于 2020-2-19 11:02:40

感谢分享~学习爬虫奋斗中{:10_265:}

biubiucat 发表于 2020-2-19 11:32:37

2333

jjlntjs 发表于 2020-2-20 19:03:52

金秋梦话 发表于 2020-2-20 20:10:27

蒂花之秀

妲树 发表于 2020-2-20 20:14:23

想看看高清图,裤子都脱了,发现需要回复,生气。

kirte 发表于 2020-2-20 20:27:48

看看

25368899 发表于 2020-2-20 21:24:12

学习了

kedapc 发表于 2020-2-21 17:05:30

感谢分享~学习爬虫奋斗中

j4551234 发表于 2020-2-21 17:15:34

感谢分享

cmmylove 发表于 2020-2-21 19:31:12

学习

sgwe 发表于 2020-2-22 17:03:00

12321

kkk999de 发表于 2020-2-23 09:41:19

向你学习

PythonLV 发表于 2020-2-23 09:50:26

为了看隐藏

PythonLV 发表于 2020-2-23 09:53:25

楼主啊,我的版本是3.7,复制过来运行不了呀,我就想看图{:5_109:}

MCDULLtotto 发表于 2020-2-23 10:46:28

爱我的违法

Levin-e 发表于 2020-2-23 13:45:39

本帖最后由 Levin-e 于 2020-2-23 13:47 编辑

PythonLV 发表于 2020-2-23 09:53
楼主啊,我的版本是3.7,复制过来运行不了呀,我就想看图

emmm,你是依赖的包没有安装,还是没有设定图片保存的路径,我也是3.7的,想看图的话代码里面的地址打开就行{:10_256:}

Levin-e 发表于 2020-2-23 13:46:29

妲树 发表于 2020-2-20 20:14
想看看高清图,裤子都脱了,发现需要回复,生气。

哈哈哈哈哈,动动手,勤劳致富{:10_279:}
页: [1] 2 3 4 5 6 7
查看完整版本: 萌新献丑,爬取整套高清写真原图的爬虫