版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~
https://blog.csdn.net/xiaoduan_/article/details/80835220
淘女郎个人信息爬取
淘宝的模特小姐姐们贼好看,就想爬一波小姐姐们的个人信息喽,大致就是这个图片啦
1.寻找接口
通过网络请求分析发现是json传递的信息
接口就是“https://v.taobao.com/micromission/req/selectCreatorV3.do”
这个接口的翻页参数是currentPage 把这个参数每次更改然后提交就能获得某一页小姐姐们的信息啦!
2.反反扒策略
淘女郎网站当然有一些反扒策略,如果直接请求接口会返回非法请求,小姐姐是没有的哦!但是不得不说该网站的反扒策略简直侮辱爬虫人的智商。这是这个接口的请求头信息
我通过把headers里面的信息在请求的时候逐个删除,发现只要有referer参数就可以成功请求,连user-agent都不需要的。
3.获取小姐姐信息的代码
通过接口爬下来直接扔到MongoDB里
import requests
from pymongo import MongoClient
import time
client = MongoClient()
db = client.taonvlang
my_set = db.database
# url = 'https://mm.taobao.com/tstar/search/tstar_model.do?_input_charset=utf-8'
url="https://v.taobao.com/micromission/req/selectCreatorV3.do"
def get_data(page):
for i in range(1, page + 1):
headers = {
"referer": "https://v.taobao.com/v/content/live?catetype=704"
}
data = {
'currentPage': i
}
try:
r = requests.post(url, data=data,headers=headers)
response = r.json()['data']['result']
if r.status_code == 200:
print("正在爬取第{}页".format(i))
# print(response.count)
my_set.insert(response)
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
time.sleep(1)
except Exception as e:
print("出现异常!")
print(e)
continue
print("爬取完成")
if __name__ == '__main__':
get_data(5)
这就是结果喽,可以看到有一项是picUrl,就是小姐姐们的图片的链接嘛!(我记得2017年的时候返回的信息更多,身高体重所在地区都有,唉,无奈喽)
4.通过连接爬去图片保存到本地
有了链接不爬图片简直不能忍。写个脚本爬下来吧
这段代码是2017年返回的json数据对应的,当时是利用的 名字-身高-体重-城市命名的,主要就是MongoDB中获取数据,我没有再重写,大家做个参考就好喽
from pymongo import MongoClient
import requests
clien = MongoClient()
db = clien.taonvlang
my_Coll = db.database
cursor = my_Coll.find()
def get_tu(tuurl):
url = 'http:{}'.format(tuurl)
r = requests.get(url)
return r.content
def get_fullname(doc):
name = doc['realName']
weight = doc['weight']
height = doc['height']
city = doc['city']
namelist = [name,city,height,weight]
fullname = '{}-{}-{}-{}.jpg'.format(*namelist)
return fullname
def save_tu(content,fullname):
with open(r'C:\Users\15810\Desktop\python代码\jpg\{}'.format(fullname), 'wb') as f:
f.write(content)
print('{} 保存成功\n'.format(fullname))
if __name__ == '__main__':
for doc in cursor:
# print(doc['avatarUrl'])
tu = get_tu(doc['avatarUrl'])
name = get_fullname(doc)
save_tu(tu,name)