淘女郎个人信息爬取

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄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)

猜你喜欢

转载自blog.csdn.net/xiaoduan_/article/details/80835220