前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python爬虫,老司机带你用python来爬取妹子图

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

作者头像
python学习教程
发布2020-03-05 14:52:45
1.3K0
发布2020-03-05 14:52:45
举报
文章被收录于专栏:python学习教程

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

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

先来一张:

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

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

于是可以开始写代码了:

代码语言:javascript
复制
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:如果觉得本篇文章对您有所帮助,欢迎关注、订阅!帮忙点个 再看 转发一下 分享出去

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档