今天带你爬取P站各种数据资源,是不是很兴奋,是不是很刺激?[Python基础]

python

前言

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

以下文章来源于青灯教育 ,作者清风

Python爬虫、数据分析、网站开发等案例教程视频免费在线观看

https://space.bilibili.com/523606542

基本开发环境

相关模块的使用

import os

import re

import requests

看标题是爬取P站的数据资源,是不是很兴奋,是不是很刺激?

 

“啊?P站?哪个P站?”,

我不知道你们说的P站是哪个P站,主要面向二次元的P站,应该只有一个吧。

 

pixiv是一个以插图、漫画和小说、艺术为中心的社交网络服务里的虚拟社区网站。于2007年9月10日推出第一个测试版。公司总部位于日本东京都涩谷区千驮谷。pixiv创办初衷是为全球艺术家提供一个能发表他们的作品,并透过评级系统反应其他用户意见的地方。网站以用户投稿的原创图画为中心,辅以标签、书签、作品回应、排行榜等功能形成具有其特色的社交网络。

百度百科

 

 

这些图片壁纸还是非常高清的,这个网站有一个非常有意思的地方:

你复制图片地址,第一次可以访问,点击刷新第二次就会是403

 

 

这些问题都不大,经过测试,当你给了cookie 以及 Referer 就可以下载爬取,哪怕是第二次也是可以的。

如何获取图片地址

1、网站是瀑布流加载,打开开发者工具,下滑网页就可以看到相关的数据接口了。

 

里面有图片的名字以及图片的ID 链接等等。

 

数据接口中获取的图片地址和真实的图片地址还是有点差别的

比如:

# 数据接口中的图片地址

# https://i.pximg.net/img-original/img/2021/01/03/02/51/59/86774115_p0.jpg

# 图片真实地址

# https://original.img.pixivic.net/img-original/img/2021/01/03/02/51/59/86774115_p0.jpg

所以提取url之后需要对其拼接。

完整代码

import os

import re

import requests

def get_response(html_url):

headers = {

"cookie": "你自己的cookie",

"Referer": "https://pixivic.com/",

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"

}

response = requests.get(url=html_url, headers=headers)

return response

def save(img_url, title):

path = "img"

ifnot os.path.exists(path):

os.makedirs(path)

img_data = get_response(img_url).content

with open(path + title, mode="wb") as f:

f.write(img_data)

print(title)

def main(html_url):

html_data = get_response(html_url).text

img_url = re.findall(""original":"(.*?)"", html_data)

title = re.findall(""title":"(.*?)"", html_data)

picture_data = zip(img_url, title)

for i in picture_data:

# 正则匹配的地址

# https://i.pximg.net/img-original/img/2021/01/03/02/51/59/86774115_p0.jpg

# 图片真实地址

# https://original.img.pixivic.net/img-original/img/2021/01/03/02/51/59/86774115_p0.jpg

picture_1 = i[0].split("net/")[-1] # img-original/img/2021/01/03/02/51/59/86774115_p0.jpg

picture_2 = i[0].split("/")[-1] # 86774115_p0.jpg

picture_url = "https://original.img.pixivic.net/" + picture_1

picture_title = i[1] + picture_2

save(picture_url, picture_title)

if__name__ == "__main__":

for page in range(1, 11):

url = f"https://pix.ipv4.host/ranks?page={page}&date=2021-01-04&mode=day&pageSize=30"

main(url)

最后说明

虽然可以爬取数据,但是爬取的速度相对而言有点慢了。因为有一些图片数据比较大。

 

 

以上是 今天带你爬取P站各种数据资源,是不是很兴奋,是不是很刺激?[Python基础] 的全部内容, 来源链接: utcz.com/z/530772.html

回到顶部