Code Monkey home page Code Monkey logo

weibo-follow's Introduction

爬取一个或多个指定微博用户关注列表中的微博账号,批量获取其user_id,并写入user_id_list.txt文件。
程序支持读文件,一个用户最多可以获取200个user_id,写入user_id_list.txt文件;然后可以用生成的user_id_list.txt作为config.json文件“user_id_list”参数的值,继续获取user_id,生成文件,最多可以获得200X200=40000个use_id;然后又可以利用这40000个user_id获得40000X200=8000000个user_id,以此类推,可以获得大量user_id。

使用方法

获取程序

$ git clone https://github.com/dataabc/weibo-follow.git

安装依赖

$ pip install -r requirements.txt

配置config.json文件

{
    "user_id_list": "user_id_list.txt",
    "cookie": "your cookie"
}

user_id_list可以填目标用户user_id文件路径,上面填的就是路径,user_id_list.txt内容是user_id,可以写多个,每个user_id一行,可以像下面这样填:

1669879400
1223178222

具体如何获取一个微博用户的user_id,见如何获取user_id, 也可以添加注释,这样填:

1669879400 Dear-迪丽热巴
1223178222 胡歌

也可以直接填目标用户user_id,如:

     "user_id_list": ["1669879400", "1223178222"]

上面的意思是分别获取user_id为“1669879400”、“1223178222”的用户的关注列表,并将被关注者的user_id写入user_id_list.txt;
cookie是微博爬虫cookie,具体如何获取cookie见如何获取cookie,获取后用真实的cookie替换“your cookie”就可以。

运行程序

$ python weibo_follow

如何获取cookie

1.用Chrome打开https://passport.weibo.cn/signin/login
2.输入微博的用户名、密码,登录,如图所示: 登录成功后会跳转到https://m.weibo.cn;
3.按F12键打开Chrome开发者工具,在地址栏输入并跳转到https://weibo.cn,跳转后会显示如下类似界面: 4.依此点击Chrome开发者工具中的Network->Name中的weibo.cn->Headers->Request Headers,"Cookie:"后的值即为我们要找的cookie值,复制即可,如图所示:

如何获取user_id

1.打开网址https://weibo.cn,搜索我们要找的人,如"迪丽热巴",进入她的主页;
2.按照上图箭头所指,点击"资料"链接,跳转到用户资料页面;
如上图所示,迪丽热巴微博资料页的地址为"https://weibo.cn/1669879400/info",其中的"1669879400"即为此微博的user_id。
事实上,此微博的user_id也包含在用户主页(https://weibo.cn/u/1669879400?f=search_0)中,之所以我们还要点击主页中的"资料"来获取user_id,是因为很多用户的主页不是"https://weibo.cn/user_id?f=search_0"的形式,而是"https://weibo.cn/个性域名?f=search_0"或"https://weibo.cn/微号?f=search_0"的形式。其中"微号"和user_id都是一串数字,如果仅仅通过主页地址提取user_id,很容易将"微号"误认为user_id。

weibo-follow's People

Contributors

dataabc avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

weibo-follow's Issues

问题:“cookie无效或提供的user_id无效”

运行时报错,显示cookie无效或提供的user_id无效
image
请问这里的json我是填错了吗?还是哪里可能出现的问题?我看网上有的cookie的格式和我这个不太一样,我这个只有sub,subp,SSOLoginState,_T_WM及M_WEIBOCN_PARAMS五个key-vale的形式
感谢!

你好,出现xpath问题

你好,运行的时候出现以下errors:
Error: 'NoneType' object has no attribute 'xpath'
Traceback (most recent call last):
File "D:\github_clone\weibo-follow\weibo_follow.py", line 132, in start
self.get_follow_list() # 爬取微博信息
File "D:\github_clone\weibo-follow\weibo_follow.py", line 84, in get_follow_list
page_num = self.get_page_num()
File "D:\github_clone\weibo-follow\weibo_follow.py", line 58, in get_page_num
if selector.xpath("//input[@name='mp']") == []:
AttributeError: 'NoneType' object has no attribute 'xpath'
请问如何解决?谢谢!

可否增加一项user.csv输出功能?

大佬。
目前的weibo_follow.py可以获得user_id_list.txt。
可不可以增加一项输出,获取id的详细信息,单独输出user.csv。
像weibocrawler存出的user.csv一样。

file_path = file_dir + os.sep + 'users.csv' result_headers = [ '用户id', '昵称', '性别', '生日', '所在地', '学习经历', '公司', '注册时间', '阳光信用', '微博数', '粉丝数', '关注数', '简介', '主页', '头像', '高清头像', '微博等级', '会员等级', '是否认证', '认证类型', '认证信息' ]

想要随机获取列表中的x个人

您好,请问,如果我有一个很长的user_id_list,但是为了节约时间我不需要把他们的关注列表全都爬下来,只想要随机获取每个id关注的10个人,或者可以指定是他们关注列表里每一页的前2个人。请问可以怎样通过修改代码实现呢?
谢谢您!

关于提示cookies无效时

大佬:

我获取了一个微博号的1000个关注id,
再从这1000个关注,去获取他们每个人的关注。
脚本从这开始运行。一开始没有异样,然后就挂机了,
等第二天去检查时,发现获取了3万8千条结果。

然后cmd窗口显示:
用户关注页数1
cookie无效或提供的user_id无效。

猜大概是这个原因,导致某个时间点开始,之后的id全部没有获取,跳过了。

所以想求个新功能,当脚本提示cookies无效时,脚本自动暂停。

这样的话,当去检查时,就可以更新cookie。。再接着爬了。

想了解迪丽热巴关注了哪些账号

大佬,如果只需要下载关注列表,不需要下载列表里的人的微博
要如何修改脚本。
只要得到 微博名 微博id 微博首页链接 等简单信息
weibo.cn/1669879400/follow

运行了停不下来

原本200多个id,现在已经循环到三万多了,也有重复的😄
不是一次200吗?现在不知道到哪了😂

请问大佬,有没有爬取微博转发路径的功能?

假如有个微博正文Z 由三个用户A、B、C转发,然后进一步转发至 a1, b1,b2,b3, c1,c2,

Z -> A -> a1
Z -> B -> b1,b2,b3
Z -> C -> c1,c2

因此,传播影响力最大的用户可能是B

我想画类似于上图的传播路径,也愿意得出来那些影响力最大的用户B。
貌似大佬的repo中没有这种功能的项目。如果有,请您提醒我一下;如果没有,请您指教通过什么样的改进能实现这样的功能。

崔凯(2020)的一文《破圈:粉丝群体爱国主义网络行动的扩散历程》中, 他们成功获取了微博Z https://m.weibo.cn/detail/4405680359897741 的转发路径。不知以下的方法是否能落实到weibo-follow项目中。

“我们通过转发内容是否存在其他用户昵称可以判定是否转发自其他用户,由此可以形成一整条转发的关系数据,最终获取数据量为228665的数据集。”

谢谢!

依赖安装失败

pip install lxml == 4.3.4
报错说可能pip版本不对?
Try to run this command from the system terminal. Make sure that you use the correct version of 'pip' installed for your Python interpreter located at 'D:\360MoveData\Users\Lenovo\Desktop\SummerProject\weibo-follow\venv\Scripts\python.exe'.

能否支持没有有效cookie时爬取

我严格按照cookie获取的方式,但是依然有问题,并且在weiboSpider检查了一下确实是cookie无效导致的。所以请问能否提供支持没有有效cookie时爬取的版本?

页面限制

想问下是否可以从m.weibo.cn这个站点获取关注/粉丝列表,因为weibo.cn这个站点限制只能爬20页,但是m.weibo.cn相比于weibo.cn可以获取多得多的页面。

59行偶尔报错

('Error: ', AttributeError("'NoneType' object has no attribute 'xpath'",))
Traceback (most recent call last):
File "weibo_follow.py", line 135, in start
self.get_follow_list() # 爬取微博信息
File "weibo_follow.py", line 85, in get_follow_list
page_num = self.get_page_num()
File "weibo_follow.py", line 59, in get_page_num
if selector.xpath("//input[@name='mp']") == []:
AttributeError: 'NoneType' object has no attribute 'xpath'

不做任何改动,有时候过了几分钟再运行就好了,但是运行到某一处又会报这个错误然后停下来

想要爬取关注关系

想要爬取很多用户的关注关系,就目前返回的结果是没有关系链条(边)的,例如我在txt里面列了100个user id,我分想分别爬取这100个人的关注,如“黄渤”关注“央视新闻”,“胡歌”关注“央视新闻”。但返回的结果来看,这100个人的关注者都混在一块了。请问有好的方法可以解决我这个需求吗?谢谢~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.