iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python爬虫实战项目之爬取pixiv图片
  • 213
分享到

python爬虫实战项目之爬取pixiv图片

2024-04-02 19:04:59 213人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

自从接触python以后就想着爬pixiv,之前因为梯子有点问题就一直搁置,最近换了个梯子就迫不及待试了下。 爬虫无非request获取html页面然后用正则表达式或者beautif

自从接触python以后就想着爬pixiv,之前因为梯子有点问题就一直搁置,最近换了个梯子就迫不及待试了下。

爬虫无非request获取html页面然后用正则表达式或者beautifulsoup之类现成工具截取我们想要的页面,pixiv也不例外。

首先我们来实现模拟登陆,虽然大多数情况不需要我们实现模拟登录,但如果你是会员之类的,登录和不登录网页就有区别。思路是登录时抓包抓到post请求,看pixiv构建的post的数据表格是什么格式,我们根据这个格式构建fORM,然后调用post方法去请求,再保存到session中,之后访问相关页面用session替代requests即可。

可以看到pixiv登录的网址如下,直接复制:

 抓包找到提交数据的请求:

可以看到表单数据主要是这几个,经过几次尝试,我们在模拟的时候只需要构建passWord、pixiv_id、post_key再加上一个return_to(第二张)即可。pixiv_id就是我们的账号,password是密码,return_to照着填就行,但这个post_key却是随机的。

但我们也有办法,它是我们每次访问登录页面时动态生成的,这就好办了,再登录前先爬取一次登录前的页面,找到posTKEy。

看到下图红圈里面:

 那就可以直接正则爬取:

def get_postkey():
    login_url='https://accounts.pixiv.net/login?return_to=Https%3A%2F%2Fwww.pixiv.net%2F&lang=zh&source=pc&view_type=page'
    response=requests.get(url=login_url,headers=headers,verify=False)
    html=response.text
    # print(html)
    postkey=re.findall('"pixivAccount.postKey":"(.*?)","pixivAccount.recaptchaEnterpriseCheckboxSiteKey"',html)
    return postkey[0]

 然后我们就可以构建数据包:

pixiv_id="账号" # 你的pixiv账号
password='xxxxx' # 你的pixiv密码
return_to='https://www.pixiv.net/'
post_key=get_postkey()

实例化一个session对象,然后post提交就能完成模拟登陆: 

session=requests.Session()
 
form_data={
    'pixiv_id':pixiv_id,
    'password':password,
    'return_to':return_to,
    'post_key':post_key
}
login_url1='https://accounts.pixiv.net/login?return_to=https%3A%2F%2Fwww.pixiv.net%2F&lang=zh&source=pc&view_type=page'
res=session.post(url=login_url1,headers=headers,data=form_data)
# 至此模拟登录成功

到此模拟登录就成功了,接下来就是爬我们想要的图片,以爬排行榜为例:

打开排行榜页面,鼠标悬停图片,右键检查,可以找到对应的代码位置:

找到每张图片的相似结构,我们可以用BeautifulSoup 找到节点,然后正则爬我们想要的网址:

先找到包含每张图片各种信息的节点,通过类名查找,然后对于每一个节点进行正则提取,提取出对应图片的下载链接,不过需要特别注意的是,pixiv直接显示的图片源是骗你的,真正的图片链接的形式应该是:

https://i.pximg.net/img-original/img/xxxx/xx/xx/xx/xx/xx/xxxxxxxx_p0.png

这样的,直接把这个网址复制网页栏访问会显示403,因为pixiv限制了必须从pixiv网页点进这个网址,所以我们首先必须headers构建refer-to,然后通过排行榜提取到信息后还需要自己手动构建正确的网址:

headers = {'Referer': 'https://www.pixiv.net/',
       
           }
def get_accurate_url(url):
    urll='https://i.pximg.net/img-original/img/' + str(url) + "_p0.jpg"
    return urll

 这里的代码偷了个懒,全部当作jpg来处理,下载的时候再处理png的情况

下载的具体函数,我们对每一个网址的后续部分提取出来作名字,随机睡眠1到4秒防止pixiv认出我们是爬虫把我们ip给封了,之后就是对网址进行访问下载,这里如果访问返回的状态码是404说明它其实是个png格式的图片,所以对png格式的文件重新构建正确的网址即可:

def download(list,filename):
    i=1
    for url in list:
        pic_name=re.findall("https://i.pximg.net/img-original/img/(.*?)_p0.jpg",str(url))
        pic_name1=str(pic_name[0]).replace("/",".")
        r = random.randint(1, 4)
        time.sleep(r)
        response=requests.get(url=url,headers=headers,verify=False)
        if(response.status_code==404):
            the_url='https://i.pximg.net/img-original/img/' + str(pic_name[0]) + "_p0.png"
            response = requests.get(url=the_url, headers=headers, verify=False)
            with open(path + filename + '/' + str(pic_name1) + '.png', 'wb') as f:
                f.write(response.content)
                print("第" + str(i) + "张图片已下载成功!!")
        else:
            with open(path + filename + '/' + str(pic_name1) + '.jpg', 'wb') as f:
                f.write(response.content)
                print("第" + str(i) + "张图片已下载成功!!")
        i+=1

最后就是成功下载排行榜的图片:

另外我在爬的时候发现pixiv很多网页获取时会隐藏body部分的内容,包括但不限于各个tag的网页和单个id图片的网页,一开始以为是没有登录的原因,但是实现登录后发现依然如此,推测可能是body部分内容是子网页或者javsscript生成之类的,反正前端有一万种方法达成这个目的,这个之后再研究怎么爬。

总结

到此这篇关于python爬虫实战项目之爬取pixiv图片的文章就介绍到这了,更多相关Python爬取pixiv图片内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python爬虫实战项目之爬取pixiv图片

本文链接: https://www.lsjlt.com/news/119215.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python爬虫实战项目之爬取pixiv图片
    自从接触python以后就想着爬pixiv,之前因为梯子有点问题就一直搁置,最近换了个梯子就迫不及待试了下。 爬虫无非request获取html页面然后用正则表达式或者beautif...
    99+
    2024-04-02
  • python实战项目:爬取某网帅哥图片
    前言我也不知道说啥了, 看呗,就当是一个案例练习吧,首先导入库from bs4 import BeautifulSoupfrom urllib.request import url...
    99+
    2023-06-02
  • python爬虫如何爬取图片
    这篇文章主要介绍了python爬虫如何爬取图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pytho...
    99+
    2023-06-14
  • Python爬虫爬取网站图片
    此次python3主要用requests,解析图片网址主要用beautiful soup,可以基本完成爬取图片功能, 爬虫这个当然大多数人入门都是爬美女图片,我当然也不落俗套,首先也...
    99+
    2024-04-02
  • Python爬虫实战之爬取携程评论
    目录一、分析数据源二、分析数据包三、采集全部评论一、分析数据源 这里的数据源是指html网页?还是Aajx异步。对于爬虫初学者来说,可能不知道怎么判断,这里辰哥也手把手过一遍。 提示...
    99+
    2024-04-02
  • Python爬虫之教你利用Scrapy爬取图片
    目录Scrapy下载图片项目介绍使用Scrapy下载图片项目创建项目预览创建爬虫文件项目组件介绍Scrapy爬虫流程介绍页面结构分析最终目录树项目运行爬取结果后记Scrapy下载图片...
    99+
    2024-04-02
  • 使用Python爬虫爬取妹子图图片
            最近在学习Python的爬虫部分。看到有网友在分享使用爬虫爬取各种网站的图片的代码,也想自己写个玩玩。今天花时间分析了一下妹子图网站的结构和HTML代码,使用urllib2和BeautifulSoup写出了一个自动下载妹子图...
    99+
    2023-01-31
    爬虫 妹子 图图
  • Python爬虫实战之爬取某宝男装信息
    目录知识点介绍实现步骤1. 分析目标网站2. 获取单个商品界面3. 获取多个商品界面4. 获取商品信息5. 保存到MySQL数据库完整代码知识点介绍 本次爬取用到的知识点有: 1. ...
    99+
    2024-04-02
  • python图片爬虫
    #!/usr/bin/env python# -*- coding:utf-8 -*-import argparseimport osimport reimport sysimport urllibi...
    99+
    2023-08-31
    python 爬虫 开发语言
  • python实现简单爬虫--爬图片
    首先有两个功能需求:第一:获取到要爬的页面html内容;第二:使用正则表达式进行匹配并进行保存到本地。#!/usr/bin/env python #encoding:utf-8 import urllib import re def get...
    99+
    2023-01-31
    爬虫 简单 图片
  • python爬虫实战之爬取百度首页的方法
    这篇文章给大家分享的是有关python爬虫实战之爬取百度首页的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代...
    99+
    2023-06-14
  • Python爬虫 自动爬取图片并保存
    一、准备工作   用python来实现对图片网站的爬取并保存,以情绪图片为例,搜索可得到下图所示 f12打开源码 在此处可以看到这次我们要爬取的图片的基本信息是在img - scr中 二、代码实现 这次的爬取主要用了如下的第三方库...
    99+
    2023-10-09
    爬虫 python 数据挖掘
  • Python爬虫项目--爬取猫眼电影To
     本次抓取猫眼电影Top100榜所用到的知识点: 1. python requests库 2. 正则表达式 3. csv模块 4. 多进程 正文 目标站点分析 通过对目标站点的分析, 来确定网页结构, 进一步确定具体的抓取方式. 1. 浏...
    99+
    2023-01-30
    爬虫 猫眼 项目
  • Python爬虫实战之虎牙视频爬取附源码
    目录知识点开发环境分析目标url开始代码最开始还是线导入所需模块数据请求获取视频标题以及url地址获取视频id保存数据调用函数运行代码,得到数据知识点 爬虫基本流程 ...
    99+
    2024-04-02
  • python实战之Scrapy框架爬虫爬取微博热搜
    前言:大概一年前写的,前段时间跑了下,发现还能用,就分享出来了供大家学习,代码的很多细节不太记得了,也尽力做了优化。 因为毕竟是微博,反爬技术手段还是很周全的,怎么绕过反爬的话要在这...
    99+
    2024-04-02
  • 爬虫实例(二)—— 爬取高清4K图片
    大家好,我是 Enovo飞鱼,今天继续分享一个爬虫案例,爬取高清4K图片,加油💪。     目录 前言 增加异常处理 增加代码灵活性 基本环境配置 爬取目标网站 分析网站页面 具体代码实现 图片下载示例 感谢支持...
    99+
    2023-09-08
    爬虫 python 开发语言
  • python爬虫怎么获取图片
    这篇文章主要讲解了“python爬虫怎么获取图片”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python爬虫怎么获取图片”吧!首先导入库给文件加入头信息,伪装成模拟浏览器访问实现翻页翻页多...
    99+
    2023-06-02
  • Python爬虫项目--爬取自如网房源信
    本次爬取自如网房源信息所用到的知识点: 1. requests get请求 2. lxml解析html 3. Xpath 4. MongoDB存储 正文 1.分析目标站点 1. url: http://hz.ziroom.com/z/nl...
    99+
    2023-01-30
    爬虫 自如 房源
  • Python爬虫项目--爬取某宝男装信息
    本次爬取用到的知识点有: 1. selenium 2. pymysql 3  pyquery 正文 1. 分析目标网站 1. 打开某宝首页, 输入"男装"后点击"搜索", 则跳转到"男装"的搜索界面. 2. 空白处"右击"再点击"检查"审...
    99+
    2023-01-30
    爬虫 男装 项目
  • python爬虫怎么批量爬取百度图片
    这篇文章将为大家详细讲解有关python爬虫怎么批量爬取百度图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作