# weibo-crawler **Repository Path**: wind_juvenile_admin/weibo-crawler ## Basic Information - **Project Name**: weibo-crawler - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-09 - **Last Updated**: 2024-12-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 如何获取user_id 1.打开网址,搜索我们要找的人,如"迪丽热巴",进入她的主页; ![](https://picture.cognize.me/cognize/github/weibospider/user_home.png) 2.按照上图箭头所指,点击"资料"链接,跳转到用户资料页面; ![](https://picture.cognize.me/cognize/github/weibospider/user_info.png) 如上图所示,迪丽热巴微博资料页的地址为"",其中的"1669879400"即为此微博的user_id。 事实上,此微博的user_id也包含在用户主页()中,之所以我们还要点击主页中的"资料"来获取user_id,是因为很多用户的主页不是""的形式,而是""或""的形式。其中"微号"和user_id都是一串数字,如果仅仅通过主页地址提取user_id,很容易将"微号"误认为user_id。 ## 添加cookie与不添加cookie的区别(可选) 对于微博数2000条及以下的微博用户,不添加cookie可以获取其用户信息和大部分微博;对于微博数2000条以上的微博用户,不添加cookie可以获取其用户信息和最近2000条微博中的大部分,添加cookie可以获取其全部微博。以2020年1月2日迪丽热巴的微博为例,此时她共有1085条微博,在不添加cookie的情况下,可以获取到1026条微博,大约占全部微博的94.56%,而在添加cookie后,可以获取全部微博。其他用户类似,大部分都可以在不添加cookie的情况下获取到90%以上的微博,在添加cookie后可以获取全部微博。具体原因是,大部分微博内容都可以在[移动版](https://m.weibo.cn/)匿名获取,少量微博需要用户登录才可以获取,所以这部分微博在不添加cookie时是无法获取的。 有少部分微博用户,不添加cookie可以获取其微博,无法获取其用户信息。对于这种情况,要想获取其用户信息,是需要cookie的。 如需抓取微博转发,请添加cookie。 ## 如何获取cookie(可选) 1.用Chrome打开; 2.输入微博的用户名、密码,登录,如图所示: ![](https://picture.cognize.me/cognize/github/weibospider/cookie1.png) 登录成功后会跳转到; 3.按F12键打开Chrome开发者工具,在地址栏输入并跳转到,跳转后会显示如下类似界面: ![](https://picture.cognize.me/cognize/github/weibospider/cookie2.png) 4.依此点击Chrome开发者工具中的Network->Name中的weibo.cn->Headers->Request Headers,"Cookie:"后的值即为我们要找的cookie值,复制即可,如图所示: ![](https://picture.cognize.me/cognize/github/weibospider/cookie3.png) ## 如何检测cookie是否有效(可选) 本程序cookie检查的逻辑是:使用cookie来源账号发布**限定范围的**微博,若cookie可用,则可以读取到该微博,否则读取不到。 **操作方法** 1. 使用cookie的来源账号发布一条微博,该账号和微博需要满足以下条件: * 该微博必须是**非公开可见**的,后续需要根据可见性判断cookie是否有效; * 该微博需要是最近5条微博,不能在发布测试用微博内容后又发很多新微博; * 在`config.json`配置中的since_date之后,该账号必须有大于9条微博。 2. 将`const.py`文件中`'CHECK': False`中的`False`改为`True`,`'HIDDEN_WEIBO': '微博内容'`中的`微博内容`改为你发的限定范围的微博。 3. 将提供cookie的微博id放置在`config.json`文件中`"user_id_list"`设置项数组中的第一个。例如提供cookie的微博id为`123456`,则`"user_id_list"`设置为`"user_id_list":["123456", "<其余id...>"]`。 注:本方法也将会抓取提供cookie账号的微博内容。 在间歇运行程序时,cookie无效会导致程序不能按照预设目标执行,因此可以打开cookie通知功能。本项目使用开源项目[pushdeer](https://github.com/easychen/pushdeer)进行通知,在使用前用户需要申请push_key,具体可查看官网了解。打开方法为: 1. 在`const.py`文件中,将`'NOTIFY': False`中的`False`设为`True`; 2. 将`'PUSH_KEY': ''`的`''`替换为`'<你的push_key>'` ## 打包 mac or linux ``` pyinstaller --onefile --name="微博用户数据获取" \ --add-data "logging.conf:." \ --add-data "favicon.ico:." \ --add-data "util:util" \ --icon=favicon.ico \ --noconsole \ --windowed \ --collect-all wx \ main.py ``` win ``` pyinstaller --onefile --name="微博用户数据获取" ^ --add-data "logging.conf;." ^ --add-data "favicon.ico;." ^ --add-data "util;util" ^ --icon=favicon.ico ^ --noconsole ^ --windowed ^ --collect-all wx ^ main.py ``` 一行 ``` pyinstaller --onefile --name="微博用户数据获取" --add-data "logging.conf;." --add-data "favicon.ico;." --add-data "util;util" --icon=favicon.ico --noconsole --windowed --collect-all wx main.py ```