专栏首页python学习教程python爬虫,老司机带你用python来爬取妹子图

python爬虫,老司机带你用python来爬取妹子图

一:Python爬虫入门-利用requsets库爬取煎蛋网妹子图

其实之前是想利用煎蛋网来联系一下scrapy的ImagesPipeline爬取煎蛋网的妹子图并下载下来保存到本地,无奈这个ImagePipeline一点都不给面子一直报404错误,而且我还不知道问题出在哪里,所以一怒之下就不用框架了,直接爬一下。

先来一张:

从下图可以看出总的页数:

在翻页的过程中URL中只有页数是在发生改变的,这个就比较好构建URL了,而且图片的信心在原始的请求里面就能够找到图片的链接地址,这个也比较好办:

于是可以开始写代码了:

import requests
from pyquery import PyQuery as pq
from requests.exceptions import RequestException
import os
from hashlib import md5
from multiprocessing import Pool

headers={
    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Encoding':'gzip, deflate, sdch',
    'Referer':'http://jandan.net/ooxx',
    'Referer':'http://jandan.net/ooxx',
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    'Cookie':'__cfduid=d0f8f8aef303ad3b55cd071a426e7a59c1504854664; _ga=GA1.2.986719823.1501079288; _gid=GA1.2.1585289570.1506061387',
}

def get_page(url):
    response=requests.get(url,headers=headers)
    try:
        if response.status_code==200:
            return response.text
        return None
    except RequestException:
        return None

def parse_page(html):
    doc=pq(html)
    links=doc('.commentlist .row .text p a')
    for link in links:
        image_url='http:'+pq(link).attr('href')
        yield image_url

def download_image(url):
    response=requests.get(url,headers=headers)
    try:
        if response.status_code==200:
            return response.content
        return None
    except RequestException:
        return None

def save_image(content):
    path_name='{0}/{1}.{2}'.format(os.getcwd(),md5(content).hexdigest(),'jpg')
    if not os.path.exists(path_name):
        with open(path_name,'wb') as f:
            f.write(content)
            f.close()

def main(page):
    print('===============开始抓取第%r页==============='%page)
    url = 'http://jandan.net/ooxx/page-{}#comments'.format(page)
    html=get_page(url)
    if html:
        urls=parse_page(html)
        for url in urls:
            print('正在下载:%r'%url)
            content=download_image(url)
            save_image(content)

if __name__=='__main__':
    pool=Pool()
    pool.map(main,[page*1 for page in range(1,137)])

运行结果如下:

总共下载下来3560几张图片:

PS:如果觉得本篇文章对您有所帮助,欢迎关注、订阅!帮忙点个 再看 转发一下 分享出去

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

本文分享自微信公众号 - python教程(pythonjc),作者:小雨

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python爬虫学习 爬取幽默笑话网站

    这篇文章主要介绍了python爬虫爬取幽默笑话网站,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    python学习教程
  • Python开发个人专属表情包网站

    “表情包”是一种利用图片来表示感情的一种方式。表情包是在社交软件活跃之后,形成的一种流行文化,表情包流行于互联网上面,基本人人都会发表情。

    python学习教程
  • 利用Python批量下载自己喜欢听得音乐

    文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

    python学习教程
  • 多线程爬取 unsplash 图库

    我公众号文章的封面配图都在 Unsplash 上找的。因为 Unsplash 是一个完全免费的、无版权的高清图片资源网站。

    猴哥yuri
  • Python之Scrapy海报资源海量下载

    今天小编给大家带来的是使用 Python 的 scrapy 框架快速写一个“千图网”的海报原图下载的爬虫,可以给设计专业的相关的人下载图片参考设计海报,也可在活...

    用户6825444
  • ElasticSearch 中的地理类型和特殊类型,这个周末圆满了!

    松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程

    江南一点雨
  • Dubbo——服务发布原理

    在使用Dubbo的时候你一定会好奇它是怎么实现RPC的,而要了解它的调用过程,必然需要先了解其服务发布/订阅的过程,本篇将详细讨论Dubbo的发布过程。

    夜勿语
  • Dubbo——服务引用

    上一篇我们分析了服务发布的原理,可以看到默认是创建了一个Netty server,并通过Invoker调用服务,同样,在客户端也会创建一个Inovker对象,下...

    夜勿语
  • 用aiohttp和uvloop实现一个高性能爬虫

    asyncio于Python3.4引入标准库,增加了对异步I/O的支持,asyncio基于事件循环,可以轻松实现异步I/O操作。接下来,我们用基于asyncio...

    周小董
  • Scala中的语言特性是如何实现的?

    image.png #思特沃克好声音# (图片:网络) 我们学东西不止要知其然,还要知其所以然。成都办公室的崔鹏飞在学Scala的时候,不止学习如何使用Scal...

    ThoughtWorks

扫码关注云+社区

领取腾讯云代金券