弎 金 說

一句两句说不清

使用Python工具对微博内容批量抓取

Research Code 0 评

序言

 很久没有上来写东西了,今天偶然间打开电脑清理下文件。发现了之前用来做“八卦”的python程序,年轻的时候有颗躁动八卦的心,喜欢翻各种微博热搜里主人公的微博,但是奈何出了大事儿之后,人家删微博的速度肯定比网友们手动翻的速度快,所以总会因为错过某些重要证据,陈年往事感到心累。
 于是我搞了一个python程序用来抓取微博数据,这下总不能慢了吧。轻松一条程序,就可以把某人微博从第一篇到最后一篇全抓取到本地,文本内容是电子表格,视频和图片也会分门别类的存在相关文件夹里。

准备阶段

  • 开发语言:python2/python3
  • 系统: Windows/Linux/macOS

 下载脚本并安装依赖文件

 $ git clone https://github.com/dataabc/weibospider.git
 $ pip install -r requirements.txt

必要数据获取

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。

抓取微博内容

python weibospider.py

config文件自定义

 打开config.json文件,你会看到如下内容:

{
"user_id_list": ["1669879400"],
"filter": 1,
"since_date": "2018-01-01",
"write_mode": ["csv", "txt"],
"pic_download": 1,
"video_download": 1,
"cookie": "your cookie",
"mysql_config": {
    "host": "localhost",
    "port": 3306,
    "user": "root",
    "password": "123456",
    "charset": "utf8mb4"
}

设置user_id_list
 user_id_list是我们要爬取的微博的id,可以是一个,也可以是多个,例如:

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

设置filter
 filter控制爬取范围,值为1代表爬取全部原创微博,值为0代表爬取全部微博(原创+转发)。例如,如果要爬全部原创微博,请使用如下代码:

"filter": 1,

设置since_date
 since_date值可以是日期,也可以是整数。如果是日期,代表爬取该日期之后的微博,格式应为“yyyy-mm-dd”,如:

"since_date": "2018-01-01",

 代表爬取从2018年1月1日到现在的微博。如果是整数,代表爬取最近n天的微博,如:

"since_date": 10,

 代表爬取最近10天的微博,这个说法不是特别准确,准确说是爬取发布时间从10天前到本程序开始执行时之间的微博。
设置write_mode
 write_mode控制结果文件格式,取值范围是csv、txt、json、mongo和mysql,分别代表将结果文件写入csv、txt、json、MongoDB和MySQL数据库。write_mode可以同时包含这些取值中的一个或几个,如:

"write_mode": ["csv", "txt"],

 代表将结果信息写入csv文件和txt文件。特别注意,如果你想写入数据库,除了在write_mode添加对应数据库的名字外,还应该安装相关数据库和对应python模块,具体操作见设置数据库部分。
设置pic_download
 pic_download控制是否下载微博中的图片,值为1代表下载,值为0代表不下载,如

"pic_download": 1,

 代表下载微博中的图片。
设置video_download
 video_download控制是否下载微博中的视频,值为1代表下载,值为0代表不下载,如

"video_download": 1,

 代表下载微博中的视频。
设置cookie
 请按照如何获取cookie,获取cookie,然后将“your cookie”替换成真实的cookie值。

群晖服务器使用DNSPOD配置外网访问
快来做第一个评论的人吧~