文章采集api(如何看出来它是否是动态加载的呢?教大家一个可以肉眼可查 )
优采云 发布时间: 2021-09-06 04:30文章采集api(如何看出来它是否是动态加载的呢?教大家一个可以肉眼可查
)
内容
前言
大家好,我叫山年。这是Python爬虫实战案例持续更新的第七天。感觉很多东西不好写,不知道写什么案例。
你可以给我反馈采集你想要哪个网站,或者你需要发布哪些网站函数,或者脚本,或者一些基础知识的解释。
写好文章,拒绝各种表情换人文章,原创干货现在每篇都写了,没那么多时间逗你了。
开始
Target网站:鱼脸的锚
嗯,没想到会有几个男同胞...
我们需要的很简单,采集cover 图片然后进行人脸值检测,然后对检测到的分数进行排序。
分析(x0)
简单看一下网页的元素,可以看到我们需要的图片在li标签的img标签的src属性中。每个 li 标签都收录一个主机的信息。
这样的图片加载我已经讲过很多次了。最有可能是动态加载的,也就是我们拉动滑块的时候,图片会自动刷新,就像之前的【Python】完美采集某宝数据,到底YYDS A和B是哪个? (有完整的源代码和视频教程)是一样的。
那么如何判断它是否是动态加载的呢?
1.教你一个肉眼可以查到的方法,那就是手动快速拉动浏览器的滚动条。你会发现很多图片需要时间来加载。当它们第一次出现时,它是一个白板,然后它们被加载。图片!
2. 即直接查看网页元素。如果是动态加载的,而我们的浏览器还没有向下滑动,则说明下图一定不能加载。
那我们直接检查li标签中是否有我们的图片数据:
显然这张图片格式不同,打不开,是白板图片。
好的,这意味着这又是一个动态加载的网站,那么我们开始抓包吧。
分析(x1)
刷新网页并获取包裹。你可以看到这个东西。它有两张图片,rs1 和 rs6。 rs1是大图,另一个是小图。你可以想到采集。我在这里采集大图。
分析这个请求,它是一个get请求。老实说,我没想到它是一个get,所以它有点特别。我们之前只分析了网页元素。按道理,我们需要的数据也应该在网页源代码中。 ...不过没关系,自己去看看吧,不建议从源码中获取数据。
原因是:你可以看到第二页和第一页的URL没有变化,你注意到了吗?如果从网页的源代码中获取,那么就可以获取到第二页的数据。怎么拿到第一页?所以不要从网页的源代码中提取数据。我们没有办法构造url。
如果你是一个包,分析起来很容易。你只需要把url后面的1改成2就可以成为第二页了。你还有这样的热情吗?我不相信只是抢包裹。
是的,如果您有多个采集页面,只需构建网址即可。
采集 的 Python 代码
import requests
import jsonpath
import os
from urllib.request import urlretrieve
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}
if not os.path.exists('./pic'):
os.mkdir('./pic')
for i in range(1, 100000):
try:
url = f'https://www.douyu.com/gapi/rknc/directory/yzRec/{i}'
r = requests.get(url, headers=headers)
names = jsonpath.jsonpath(r.json(), '$..nn')
pngs = jsonpath.jsonpath(r.json(), '$..rs1')
for name, png in zip(names, pngs):
urlretrieve(png, './pic' + '/' + name + '.png')
print(names)
print(pngs)
except:
exit()
采集的效果
人脸值检测函数的结构
注册百度只能云:地址
根据图片选择我们需要的服务:
自己查看技术文档:
点击立即使用-创建应用程序:
正常填写即可
创建后,点击管理应用
获取 API Key 和 Secret Key
看技术文档,不用过多解释就开始构建我们的函数
提醒:模块安装
pip install baidu-aip
facerg.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2019/5/7 23:20
# @Author : 善念
# @Software: PyCharm
from aip import AipFace
import base64
def face_rg(file_Path):
""" 你的 api_id AK SK """
api_id = '你的id'
api_key = 'ni de aipkey'
secret_key = '你自己的key'
client = AipFace(api_id, api_key, secret_key)
with open(file_Path, 'rb') as fp:
data = base64.b64encode(fp.read())
image = data.decode()
imageType = "BASE64"
options = {}
options["face_field"] = 'beauty'
""" 调用人脸检测 """
res = client.detect(image, imageType, options)
score = res['result']['face_list'][0]['beauty']
return score
排序源代码
from facerg import face_rg
path = r'图片文件夹路径'
images = os.listdir(path)
print(images)
yz = []
yz_dict = {}
for image in images:
try:
name = image[0:-4]
score = face_rg(path + '\\' + image)
yz_dict[score] = name
yz.append(score)
except:
pass
yz.sort(reverse=True)
for a, b in enumerate(yz):
print('*敏*感*词*姐的名字是:{}丨颜值名次是:第{}名丨她的颜值分数为:{}'.format(yz_dict[b], a+1, b))
结果展示
完成所有源代码
import requests
import jsonpath
import os
from urllib.request import urlretrieve
# headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}
#
# if not os.path.exists('./pic'):
# os.mkdir('./pic')
# for i in range(1, 100000):
# try:
# url = f'https://www.douyu.com/gapi/rknc/directory/yzRec/{i}'
# r = requests.get(url, headers=headers)
# names = jsonpath.jsonpath(r.json(), '$..nn')
# pngs = jsonpath.jsonpath(r.json(), '$..rs1')
# for name, png in zip(names, pngs):
# urlretrieve(png, './pic' + '/' + name + '.png')
# print(names)
# print(pngs)
# except:
# exit()
from facerg import face_rg
path = r'C:\Users\admin\PycharmProjects\pythonProject\1A演示\斗鱼\pic'
images = os.listdir(path)
print(images)
yz = []
yz_dict = {}
for image in images:
try:
name = image[0:-4]
score = face_rg(path + '\\' + image)
yz_dict[score] = name
yz.append(score)
except:
pass
yz.sort(reverse=True)
for a, b in enumerate(yz):
print('*敏*感*词*姐的名字是:{}丨颜值名次是:第{}名丨她的颜值分数为:{}'.format(yz_dict[b], a+1, b))
只需将 facerg.py 作为自写模块调用即可。
视频教程地址
程序员相亲:一张Python老大采集相亲网的合影,打造排行榜!
我有话要说
——当你毫无保留地信任一个人时,最终只会有两种结果。不是生活中的那个人,也不是生活中的一课。
文章的话现在就写好了,每一个文章我都会说的很详细,所以需要很长时间,通常两个多小时。每一个赞和评论集都是我每天更新的动力。
原创不易,再次感谢您的支持。
①2000多本Python电子书(主流经典书籍应有)
②Python标准库资料(最全中文版)
③项目源码(四十或五十个有趣经典的动手项目及源码)
④Python基础、爬虫、Web开发、大数据分析视频(适合小白学习)
⑤ Python 学习路线图(告别不受影响的学习)
在我的Q.,Q技术交流群可以自己拿走。如果在学习或工作中遇到问题,群里会有大神帮忙解答。有时你会想一天。编号928946953。