如何用python爬虫爬取pixivic网站的图片

来源:博主自写 发布时间:2020-03-06 22:45:34 作者:admin 阅读量:341

      首先这个pixivic这个是一个图片网站,网址如下:https://pixivic.com/,上面的图片基本是p站上转过来的,具有搜索功能,于是我想到要图片懒得翻墙去p站上找了,直接爬他的网站不香吗?

     我们需要准备的工具如下:

  1. python3.6版本以及pycharm编辑器(自选)
  2. 一些依赖库(requests)


下面开始分析网站:

  1. 打开网站控制台,每种浏览器打开方式都不一样,多数是f12,网站首页是一个搜索框,比较简单。
  2. 一般这种搜索都是观察他输入后,发送了哪些请求到服务器,我们查看控制台可以发现(我输入的是蕾姆)

  3. 通过构造这个url来实现搜索功能,以及构造一个referer请求头,为了安全,可以多加几个user-agent浏览器标识具体如下:

# 浏览器标识
User_Agent = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0',
'Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Trident/4.0;SE2.XMetaSr1.0;SE2.XMetaSr1.0;.NETCLR2.0.50727;SE2.XMetaSr1.0)',
'Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;360SE)',
'Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;AvantBrowser)',
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36'
]

# 初始化请求头
header = {
'referer': 'https://pixivic.com/popSearch',
'user-agent': ''
}


通过控制台我们可以发现,网站response响应了一个json格式的数据,其中图片的url就包含在里面:



通过对json数据的筛选就可以得到图片的url,然后写好对应的下载函数就可以实现下载了,下面是代码实现过程,有详细的解释:

# -*- coding: utf-8 -*-

import requests
import os

# 返回网页源码
def get_page_url(url):
try:
response = requests.get(url) # 获取到返回对象
if response.status_code == 200: # 200代表返回成功
return response.json() # json格式return
else:
print("访问网站失败!")
except requests.RequestException:
return '失败!'

# 获取图片url,返回为list类型
def get_data(title,page):

img_url_list = [] # 存放图片url列表

url = "https://api.pixivic.com/illustrations?keyword={}&page={}".format(title, page) # 构造url
data = get_page_url(url) # 获取该页面html源码

try: # 通过分析json数据筛选图片url
url_data = data['data']

if url_data != '':
for j in url_data:
img_url = 'https://bigimg.cheerfun.dev/get/' + j['imageUrls'][0]['original']
img_url_list.append(img_url) # 将图片url加到列表中

print("找到资源: {}".format(img_url))

return img_url_list # 返回
else:
print("未找到 '{}' 资源,当前页数为:{} ".format(title, i))
except KeyError as e:
print("输入页数必须>=0!")
def down(User_Agent, header, title, img_url_list , page):

path = 'E:/pixivic图片/{}/{}'.format(title, page) # 下载路径
if not os.path.exists(path): # 创建路径文件夹
os.makedirs(path)

num = 1 # 计数器
for url_name in img_url_list:
name = url_name.split('/')[-1] # 图片名字
path_1 = path + '/' + name # 图片下载路径

# 生成指定请求头
if num % 2 == 0:
header['user-agent'] = User_Agent[0]

if num % 2 != 0:
header['user-agent'] = User_Agent[4]

# 下载图片需要加上我们构造好的请求头,否则会下载失败
r = requests.get(url_name, headers=header)
with open(path_1, 'wb') as f:
f.write(r.content) # 写入文件
f.close() # 关闭文件

print("资源 {} 下载完成!".format(name))
num += 1

if __name__ == '__main__':

title = input("请输入需要搜索的名字:")
page_start = input("请输入开始下载的页数:")
page_stop = input("请输入停止下载的页数:")

# 浏览器标识
User_Agent = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0',
'Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Trident/4.0;SE2.XMetaSr1.0;SE2.XMetaSr1.0;.NETCLR2.0.50727;SE2.XMetaSr1.0)',
'Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;360SE)',
'Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;AvantBrowser)',
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36'
]

# 初始化请求头
header = {
'referer': 'https://pixivic.com/popSearch',
'user-agent': ''
}

for i in range(int(page_start), int(page_stop)+1):
img_url_list = get_data(title, i)

# 下载方法
down(User_Agent, header, title, img_url_list, i)
print("\n ====== {} 页下载完成======\n".format(i))


最后看一下运行结果:





Original article, reproduced please specify:如何用python爬虫爬取pixivic网站的图片 | xiaoger

(本站所有资源来源于网络,仅供学习交流使用,本站不承担关于本资源的任何法律责任。)

我要评论 登录后才能发布评论

  Article archive

感谢鲶鱼博客提供的模板   我要留言
中央许可免备案
Catfish(鲶鱼) CMS V 5.9.15