• 抓取赶集app数据


    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    
    import json
    import requests
    
    url = "https://app.ganji.com/datashare/"
    
    headers = {
                "Content-Type": "application/x-www-form-urlencoded",
                "userid": "C1ED10776D9B6108D8FEFEE4EA53058A",
                "model":"Generic/iphone",
                "customerid":"705",
                "clientagent":"iPhone 6S Plus#414*736#11.0.3",
                "versionid":"8.3.0",
                "os":"ios",
                "net":"wifi",
                "dv":"iPhone 6S Plus",
                "interface":"SearchPostsByJson3",
                "accept-language":"zh-cn",
            }
    
    def req(url, headers, data):
        content = None
        try:
            r = requests.post(url, headers=headers, data=data, timeout=5)
            content = r.json()
        except Exception as e:
            print("requests error: ", e, "requests url: ", url)
        return content
    
    def get_ganji_list_data():
        # 获取列表数据
        data = 't=-576747455&&showType=0&showtype=0&jsonArgs={"pageSize":20,"cityScriptIndex":2300,"majorCategoryScriptIndex":7,"queryFilters":[],"categoryId":7,"andKeywords":[{"name":"title","value":"%E5%95%86%E9%93%BA%E5%87%BA%E5%94%AE"}],"customerId":"705","sortKeywords":[{"field":"post_at","sort":"desc"}],"pageIndex":1}'
        ganji_data = req(url, headers, data)
        if ganji_data is not None:
            return ganji_data
        return None
    
    def get_article_data():
        ganji_data = get_ganji_list_data()
        if ganji_data is not None:
            data_list = ganji_data["posts"]
            print("count: ", ganji_data["total"])
    
            for data_ in data_list:
                title, d_sign, puid = data_["title"], data_["d_sign"], data_["puid"]
                print(title, d_sign)
                data_article = "d_sign={0}&cityId=176&post_type_for_maidian=5&categoryId=7&spfy=0".format(d_sign)
                # 根据 puid 获取详细信息. puid  需放在headers中
                headers["interface"] = "GetPostByPuid"
                headers["puid"] = puid
                content_data = req(url, headers, data_article)
                if content_data["status"] == 0:
                    data = content_data["data"]
                    end_data = {}
                    end_data["price"] = data["price"]["v"]
                    end_data["price_unit"] = data["price"]["u"]
                    end_data["title"] = data["title"]
                    end_data["city"] = data["city"]
                    end_data["description"] = data["description"]
                    end_data["district_name"] = data["district_name"]
                    end_data["street_name"] = data["street_name"]
                    end_data["latlng"] = data["latlng"]
                    end_data["id"] = data["id"]
    
                time.sleep(2)
    

    header里东西真多,最终测试 只需要这几种,累死宝宝了,

     教程仅供技术研究学习使用,若有侵权,联系本人删除

  • 相关阅读:
    库函数strstr的实现
    用两个队列实现一个栈
    二叉树的镜像
    VMware网络连接模式—桥接、NAT以及仅主机模式的详细介绍和区别
    CentOS6.5下搭建Samba服务实现与Windows系统之间共享文件资源
    CentOS6.5下搭建ftp服务器(三种认证模式:匿名用户、本地用户、虚拟用户)
    CentOS6.5下搭建VNC服务器
    MySQL数据库自动备份
    MySql登陆密码忘记了怎么办?MySQL重置root密码方法
    CentOS6.5使用yum快速搭建LAMP环境
  • 原文地址:https://www.cnblogs.com/dockers/p/7811514.html
Copyright © 2020-2023  润新知