美文网首页编程地带
千图网图片爬虫

千图网图片爬虫

作者: MA木易YA | 来源:发表于2019-01-12 08:13 被阅读0次

利用正则表达式和requests下载千图网高清图片,非会员图片哦

    网页整体规则性比较一致,多翻阅几个页面就可以发现规律了,无非是
html_url = "http://www.58pic.com/tupian/jianshen-0-0-{}.html".format(n),n不断增加,而且对于03或者3也没有特别区分,所以翻页构造基本就可以直接处理了

    for n in range(0, 11):
        print("******** 正在下载第%s页的图片 ********" % (n+1))
        html_url = "http://www.58pic.com/tupian/jianshen-0-0-{}.html".format(n)
        PicThousand().run(html_url)

    对图片的获取直接右键检查就可以看到url了,打开进去预览就可以看到图片了

image.png
image.png
    但是这里的后缀和平常图片的.jpg格式不太一样,按理说应该是对图片的格式方面做了处理,将后缀去掉应该就是想要的高清图了

image.png

    但是网页却显示了40310014的错误码,有心的小伙伴们应该有了解过这个是违反了防盗链规则,后面的英文翻译也能直接明白,我们再回去检查图片的headers,发现了referer里面规定了图片下载时为空

image.png

    这里就可以简单的在每次下载时把当前地址复制给headers里面的referer即可

       url = url_list[index].replace('!qt324', '')
            self.getHtmlHeaders['Referer'] = url

    网页源码以及url都可以直接使用正则表达式获取,比较简单

    def getHtml(self, url):
        response = requests.get(url, self.getHtmlHeaders).text
        return response

    def getUrl(self, text):
        image_urls = re.compile('data-original="(.*?)"', re.S).findall(text)
        return image_urls

完整代码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
@author: maya
@software: Pycharm
@file: pic.py
@time: 2018/12/19 16:13
@desc:
'''
import requests
import re
import time


class PicThousand():
    def __init__(self):
        self.getHtmlHeaders={
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3493.3 Safari/537.36',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh;q=0.9,en-GB;q=0.8,en;q=0.7',

        }


    def getHtml(self, url):
        response = requests.get(url, self.getHtmlHeaders).text
        print(response)
        return response

    def getUrl(self, text):
        image_urls = re.compile('data-original="(.*?)"', re.S).findall(text)
        print(image_urls)
        return image_urls

    def img_Download(self, url_list):
        for index in range(len(url_list)):
            url = url_list[index].replace('!qt324', '')
            self.getHtmlHeaders['Referer'] = url
            file_name = url.replace('!qt324', '').split('/')[-1]
            print("正在下载第%s张图片:%s" % (index + 1, file_name))
            response = requests.get(url, headers= self.getHtmlHeaders)
            with open('img/'+file_name, 'wb') as f:
                f.write(response.content)

    def run(self, url):
        text = self.getHtml(url)
        list = self.getUrl(text)
        self.img_Download(list)


if __name__ == '__main__':

    start = time.time()
    for n in range(0, 11):
        print("******** 正在下载第%s页的图片 ********" % (n+1))
        html_url = "http://www.58pic.com/tupian/jianshen-0-0-{}.html".format(n)
        PicThousand().run(html_url)
    end = time.time()
    print("******** 下载完成,共用时%.2f    ********" % (end-start))

  • 更多爬虫代码详情参考Github

相关文章

  • 千图网图片爬虫

    利用正则表达式和requests下载千图网高清图片,非会员图片哦 网页整体规则性比较一致,多翻阅几个页面就可以发现...

  • 「爬虫」09图片爬虫(以千图网为例)

    1.图片爬虫 从互联网中自动把对方服务器上的图片爬下来的爬虫程序。 2.实例:爬取千图网电影海报专栏的图片 (1)...

  • 爬煎蛋网妹子图

    利用 BeautifulSoup + Requests 爬取 煎蛋网 妹子图 一、爬煎蛋网一页图片 此爬虫只能爬取...

  • scrapy之千图网全站爬虫

    好久没写爬出了,这段时间都这折腾别的,今天看了个视频爬图片,自己无聊也写了个千图网的爬虫,结果写了好久,真是生疏,...

  • 培训笔记:教育教学资源软件

    图片、ppt课件:千库网 Hippter 千图网 包图网 淘宝网搜配音师 在线视频下载、片头模板:视频鱼,稞麦,硕...

  • 有用的网站汇总

    图片网站 阿里icon Easyicon包图网 全景网花瓣网 昵图网千图 工具&软件网站 UI中国 WEUI...

  • 好用的网站分享(一):素材类

    【图片素材(收费)】 千图网:https://www.58pic.com/ 千库网:https://588ku.c...

  • 去哪儿网图片爬虫及Scrapy使用详解

    本文分为两部分,去哪儿网图片爬虫和Scrapy使用详解。Scrapy使用详解基于去哪儿网图片爬虫进行解析说明。 去...

  • 多线程提提速吧

    爬虫用线程提速吧,用斗图网来做个对比。 普通爬虫,没用线程的例子: 这里获取一页68图片,看一下运行速度: 生产者...

  • 喜欢就去做,大不了失败呗

    图片源自千图网。 年纪越大,越觉得“梦想”是个奢侈的东西。 ...

网友评论

    本文标题:千图网图片爬虫

    本文链接:https://www.haomeiwen.com/subject/lvizrqtx.html