快手刷双击100:微博粉丝链接

功能

持续抓取一个或多个新浪微博用户(如迪丽热巴、郭碧婷)的数据,并将结果信息写入文件。 书面信息几乎包含了用户微博的所有数据,主要有两大类:用户信息和微博信息。 前者包括用户昵称、关注数、粉丝数、微博数等; 后者包括微博的正文、发帖数等。时间、发布工具、评论数等。由于内容太多,这里不再赘述。 有关详细信息,请参阅参考资料部分。 具体写入文件类型如下:

如果您只对用户信息感兴趣,不需要爬取用户的微博,还可以设置只爬取微博用户信息的功能。 程序还可以自动更新爬取结果,也就是说,如果现在爬取了目标用户的微博,几天后,目标用户可能会发布新的微博。 通过设置,您可以每隔几天增量抓取用户发布的新微博帖子。 具体方法见。

快手刷双击100:微博粉丝链接

输出

用户信息

微博信息

例子

以爬取迪丽热巴微博为例,我们需要修改config.json文件。 文件内容如下:

{
    "user_id_list": ["1669879400"],
    "only_crawl_original": 1,
    "since_date": "1900-01-01",
    "query_list": [],
    "write_mode": ["csv"],
    "original_pic_download": 1,
    "retweet_pic_download": 0,
    "original_video_download": 1,
    "retweet_video_download": 0,
    "cookie": "your cookie"
}

这里仅简单介绍上述参数的含义和取值范围。 查看具体信息。

user_id_list代表我们要爬取的微博用户的user_id。 可以是一个或多个,也可以是文件路径。 微博用户迪丽热巴的user_id为1669879400,具体参见如何获取user_id; only_crawl_original的值为1表示抓取所有原创微博,值为0表示抓取所有微博(原创+转发); since_date表示我们要抓取since_date之后发布的微博,因为我要抓取迪丽热巴博客的所有原创微博,所以since_date设置为一个很早的值; query_list表示要抓取的微博关键词,如果为空([])则全部抓取; write_mode代表结果文件的保存类型,我想将结果写入csv文件和json文件,所以它的值为[“csv”,“json”]。 如果要写入数据库,请看具体设置; Original_pic_download的值为1表示下载原微博中的图片,值为0表示不下载。 ; retweet_pic_download值为1表示下载并转发微博图片,值为0表示不下载; Original_video_download值为1表示下载微博原视频,值为0表示不下载; retweet_video_download 值为 1 表示下载并转发微博中的视频,值为 0 表示不下载; cookie为可选参数,可以填写也可以不填写。 看看具体的区别。

配置完成后,运行程序:

python weibo.py

程序会自动生成一个weibo文件夹,以后我们爬取的所有微博都会存放在weibo文件夹中。 然后程序会在这个文件夹下生成一个名为“亲爱的-迪丽热巴”的文件夹,迪丽热巴所有的微博抓取结果都在里面。 “亲爱的迪丽热巴”文件夹包含一个csv文件、一个img文件夹和一个video文件夹。 img文件夹用于存放下载的图片,video文件夹用于存放下载的视频。 如果您设置了保存数据库功能,该信息也会保存在数据库中。 请参阅数据库设置部分。

csv 文件结果如下所示:

1669879400.csv

这个csv文件就是爬取“所有微博”(原始微博+转发微博)的结果文件。 由于迪丽热巴的很多微博帖子都没有图片、发布工具、地点、主题、@users等信息,当这些内容不存在时,对应的位置为空。 “是否原创”栏用于标记该微博是否原创。 当是转发的微博时,该文件还包含转发的微博的信息。 为了简单起见,我们将转发微博中转发的原始微博称为源微博。 其用户ID、昵称、微博ID等均以来源一词开头,以与目标用户发布的微博保持一致。 博区别。 对于转发微博,程序除了获取用户原始部分信息外,还会获取源用户id、源用户昵称、源微博id、源微博文字、源微博原图url、源微博位置、源微博日期、来源微博工具、来源微博点赞、来源微博评论、来源微博转发、来源微博话题、来源微博@user等信息。由于原始微博没有这些转发信息,所以对应的位置为空。 如果抓取“全部原创微博”,则csv文件将不包含“是否原创”及后续转发属性列;

为了说明json结果文件格式,这里以迪丽热巴2019年12月27日至2019年12月28日发布的两条微博为例。

json结果文件格式如下:

{
    "user": {
        "id": "1669879400",
        "screen_name": "Dear-迪丽热巴",
        "gender": "f",
        "birthday": "双子座",
        "location": "上海",
        "education": "上海戏剧学院",
        "company": "嘉行传媒",
        "registration_time": "2010-07-02",
        "sunshine": "信用极好",
        "statuses_count": 1121,
        "followers_count": 66395881,
        "follow_count": 250,
        "description": "一只喜欢默默表演的小透明。工作联系jaywalk@jaywalk.com.cn ",
        "profile_url": "https://m.weibo.cn/u/1669879400?uid=1669879400&luicode=10000011&lfid=1005051669879400",
        "profile_image_url": "https://tvax2.sinaimg.cn/crop.0.0.1080.1080.180/63885668ly8gb5sqc19mqj20u00u0mz5.jpg?KID=imgbed,tva&Expires=1584108150&ssig=Zay1N7KhK1",
        "avatar_hd": "https://wx2.sinaimg.cn/orj480/63885668ly8gb5sqc19mqj20u00u0mz5.jpg",
        "urank": 44,
        "mbrank": 7,
        "verified": true,
        "verified_type": 0,
        "verified_reason": "嘉行传媒签约演员 "
    },
    "weibo": [
        {
            "user_id": 1669879400,
            "screen_name": "Dear-迪丽热巴",
            "id": 4454572602912349,
            "bid": "ImTGkcdDn",
            "text": "今天的#星光大赏#  ",
            "pics": "https://wx3.sinaimg.cn/large/63885668ly1gacppdn1nmj21yi2qp7wk.jpg,https://wx4.sinaimg.cn/large/63885668ly1gacpphkj5gj22ik3t0b2d.jpg,https://wx4.sinaimg.cn/large/63885668ly1gacppb4atej22yo4g04qr.jpg,https://wx2.sinaimg.cn/large/63885668ly1gacpn0eeyij22yo4g04qr.jpg",
            "video_url": "",
            "location": "",
            "created_at": "2019-12-28",
            "source": "",
            "attitudes_count": 551894,
            "comments_count": 182010,
            "reposts_count": 1000000,
            "topics": "星光大赏",
            "at_users": ""
        },
        {
            "user_id": 1669879400,
            "screen_name": "Dear-迪丽热巴",
            "id": 4454081098040623,
            "bid": "ImGTzxJJt",
            "text": "我最爱用的娇韵诗双萃精华穿上限量“金”装啦,希望阿丝儿们跟我一起在新的一年更美更年轻,喜笑颜开没有细纹困扰!限定新春礼盒还有祝福悄悄话,大家了解一下~",
            "pics": "",
            "video_url": "",
            "location": "",
            "created_at": "2019-12-27",
            "source": "",
            "attitudes_count": 190840,
            "comments_count": 43523,
            "reposts_count": 1000000,
            "topics": "",
            "at_users": "",
            "retweet": {
                "user_id": 1684832145,
                "screen_name": "法国娇韵诗",
                "id": 4454028484570123,
                "bid": "ImFwIjaTF",
                "text": "#点萃成金 年轻焕新# 将源自天然的植物力量,转化为滴滴珍贵如金的双萃精华。这份点萃成金的独到匠心,只为守护娇粉们的美丽而来。点击视频,与@Dear-迪丽热巴 一同邂逅新年限量版黄金双萃,以闪耀开运金,送上新春宠肌臻礼。 跟着迪迪选年货,还有双重新春惊喜,爱丽丝们看这里! 第一重参与微淘活动邀请好友关注娇韵诗天猫旗舰店,就有机会赢取限量款热巴新年礼盒,打开就能聆听仙女迪亲口送出的新春祝福哦!点击网页链接下单晒热巴同款黄金双萃,并且@法国娇韵诗,更有机会获得热巴亲笔签名的礼盒哦! 第二重转评说出新年希望娇韵诗为你解决的肌肤愿望,截止至1/10,小娇将从铁粉中抽取1位娇粉送出限量版热巴定制礼盒,抽取3位娇粉送出热巴明信片1张~ #迪丽热巴代言娇韵诗#养成同款御龄美肌,就从现在开始。法国娇韵诗的微博视频",
                "pics": "",
                "video_url": "http://f.video.weibocdn.com/003vQjnRlx07zFkxIMjS010412003bNx0E010.mp4?label=mp4_hd&template=852x480.25.0&trans_finger=62b30a3f061b162e421008955c73f536&Expires=1578322522&ssig=P3ozrNA3mv&KID=unistore,video",
                "location": "",
                "created_at": "2019-12-27",
                "source": "微博 weibo.com",
                "attitudes_count": 18389,
                "comments_count": 3201,
                "reposts_count": 1000000,
                "topics": "点萃成金 年轻焕新,迪丽热巴代言娇韵诗",
                "at_users": "Dear-迪丽热巴,法国娇韵诗"
            }
        }
    ]
}

1669879400.json

下载的图像如下所示:

img 文件夹

这次下载了788张图片,总大小1.21GB,包括她原微博中的所有图片。 图片名称采用yyyymmdd+微博ID的形式。 如果一条微博帖子中有多张图片,图片名称中还会包含其在微博图片中的序号。 如果图片下载失败,程序会将错误微博ID和图片URL以“weibo_id:pic_url”的形式写入同一文件夹下的not_downloaded.txt中; 如果所有图片都下载成功,则不会生成not_downloaded.txt;

下载的视频如下所示:

视频文件夹

这次下载了66个视频,分别是她原来的微博中的视频和她原来的微博直播照片中的视频。 视频名称采用yyyymmdd+微博ID的形式。 由于网络原因,三个视频未能下载。 该程序将其微博 ID 和视频 URL 以“weibo_id:video_url”的形式写入同一文件夹中的 not_downloaded.txt。

因为我本地没有安装MySQL数据库和MongoDB数据库,所以暂时设置不写入数据库。 如果要将爬取结果写入数据库,只需先安装数据库(MySQL或MongoDB),然后安装相应的包(pymysql或pymongo),然后将mysql_write或mongodb_write值设置为1即可。 MySQL 需要用户名、密码和其他配置信息。 请参阅有关如何设置这些配置的部分。

操作环境

使用说明

1.下载脚本

git clone https://github.com/dataabc/weibo-crawler.git

运行上述命令将该项目下载到当前目录。 如果下载成功,当前目录下会出现一个名为“weibo-crawler”的文件夹;

2.安装依赖

pip install -r requirements.txt

3. 程序设置

打开config.json文件,您将看到以下内容:

{
    "user_id_list": ["1669879400"],
    "only_crawl_original": 1,
    "remove_html_tag": 1,
    "since_date": "2018-01-01",
    "write_mode": ["csv"],
    "original_pic_download": 1,
    "retweet_pic_download": 0,
    "original_video_download": 1,
    "retweet_video_download": 0,
    "download_comment":1,
    "comment_max_download_count":1000,
    "download_repost": 1,
    "repost_max_download_count": 1000,
    "user_id_as_folder_name": 0,
    "cookie": "your cookie",
    "mysql_config": {
        "host": "localhost",
        "port": 3306,
        "user": "root",
        "password": "123456",
        "charset": "utf8mb4"
    },
    "mongodb_URI": "mongodb://[username:password@]host[:port][/[defaultauthdb][?options]]",
    "post_config": {
        "api_url": "https://api.example.com",
        "api_token": ""
    }
}

下面解释一下各个参数的含义和设置方法。

设置用户id列表

user_id_list是我们要抓取的微博的ID。 可以是一个,也可以是多个,例如:

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

上面的代码意思是我们要连续抓取三个user_id为“1223178222”、“1669879400”、“1729370543”的用户的微博。 请参阅如何获取user_id。

user_id_list的值也可以是文件路径。 我们可以将所有要爬取的微博用户的user_id写入一个txt文件中,然后将文件位置路径赋给user_id_list。

在txt文件中,每个user_id占一行。 您还可以在user_id后面添加注释(可选),例如用户昵称等信息。 user_id 和评论之间必须有空格。 文件名任意,类型为txt,位置在本程序的同一目录中,文件内容示例如下:

1223178222 胡歌
1669879400 迪丽热巴
1729370543 郭碧婷

如果文件名为user_id_list.txt,则user_id_list设置代码为:

"user_id_list": "user_id_list.txt",

设置only_crawl_original

only_crawl_original 控制抓取范围。 值为1表示抓取所有原创微博,值为0表示抓取所有微博(原创+转发)。 例如,如果要抓取所有微博原创帖子,请使用以下代码:

"only_crawl_original": 1,

设置since_date

since_date 值可以是日期或整数。 如果是日期,则表示抓取该日期之后的微博,格式为“yyyy-mm-dd”,如:

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

代表2018年1月1日至今爬取的微博。

如果是整数,则表示爬取最近n天的微博,如:

"since_date": 10,

就是爬取最近10天的微博。 这个说法并不是特别准确。 准确来说,就是抓取发布时间10天前到本期节目开始之间的微博。

since_date是所有用户的爬取开始时间,非常不灵活。 如果要爬取多个用户,并且想为每个用户单独设置一个since_date,可以使用方法2中的方法。这种方法可以为多个用户设置不同的since_date,非常灵活。

设置query_list(可选)

query_list是关键字字符串列表或以关键字分隔的字符串,用于指定关键字搜索和爬取。 如果为空[]或“”,则抓取所有微博。 例如,要抓取用户包含“梦想”和“希望”的微博帖子,设置如下:

"query_list": ["梦想","希望"],
"query_list": "梦想,希望",

请注意,关键字搜索必须设置cookie信息。 query_list是所有用户的爬取关键字,非常不灵活。 如果要爬取多个用户,并且想为每个用户单独设置一个query_list,可以使用方法2中的方法。这种方法可以为多个用户设置不同的query_list,非常灵活。

设置remove_html_tag

remove_html_tag 控制是否去除捕获的微博文本和评论中的html标签。 值为1表示移除,值为0表示不移除,例如

"remove_html_tag": 1,

表示删除html标签。 比如独家新创意,从颜色开始~@Louis Vuitton CAPUCINES手袋正是我想要的,开辟了励志包包的新搭配方式! 将其加工成专属新创意,色彩衬托~@Louis Vuitton CAPUCINES手袋正是我想要的,开启了灵感包包的新搭配方式! 。

设置写入模式

write_mode 控制结果文件的格式。 取值范围为csv、json、post、mongo、mysql和sqlite,分别表示将结果写入csv、json文件并通过POST发送到MongoDB、MySQL和SQLite数据库。 write_mode可以同时包含其中一个或多个值,例如:

"write_mode": ["csv", "json"],

表示将结果信息写入csv文件和json文件中。 特别注意,如果要写入数据库,除了在write_mode中添加对应数据库的名称外,还应该安装相关数据库和对应的python模块。 具体操作见章节。

设置original_pic_download

Original_pic_download控制是否下载原微博中的图片。 值为1表示正在下载,值为0表示不下载,如

"original_pic_download": 1,

代表从原微博下载图片。

设置 retweet_pic_download

retweet_pic_download 控制是否下载转发微博中的图片。 值为1表示正在下载,值为0表示不下载,如

"retweet_pic_download": 0,

意味着微博里的图片不会被下载。 特别注意,该设置仅在爬取所有微博(原创+转发)时生效,即only_crawl_original值为0时生效,否则程序会跳过从转发微博下载图片。

设置original_video_download

Original_video_download控制是否下载原微博中的视频和原微博直播照片中的视频。 值为1表示正在下载,值为0表示不下载,如

"original_video_download": 1,

代表下载原微博视频和原微博直播照片视频。

设置 retweet_video_download

retweet_video_download 控制是否下载微博转发的视频和微博直播照片转发的视频。 值为1表示正在下载,值为0表示不下载,如

"retweet_video_download": 0,

这意味着微博转发的视频和微博直播照片转发的视频将不会被下载。 特别注意,该设置仅在爬取所有微博(原创+转发)时生效,即only_crawl_original值为0时生效,否则程序会跳过下载转发微博的视频。

设置 user_id_as_folder_name

user_id_as_folder_name 控制结果文件的目录名称。 可能的值为0和1,默认为0:

"user_id_as_folder_name": 0,

值为0表示将结果文件保存在以用户昵称命名的文件夹中,这样结果更清晰; 值为 1 表示将结果文件保存在以用户 ID 命名的文件夹中,这可确保多次爬网。 由于用户昵称是可变的,而用户id是不可变的,因此获得了一致性。

设置download_comment

download_comment 控制是否下载每条微博下的一级评论(不包括评论的评论)。 仅当有sqlite处于write_mode时才有效。 可能的值为0和1,默认为1:

"download_comment": 1,

值为1表示下载微博评论; 值为0表示不下载微博评论。

设置comment_max_download_count

comment_max_download_count 控制下载评论的最大数量。 仅当有sqlite处于write_mode时才有效。 默认值为 1000:

"comment_max_download_count": 1000,

设置download_repost

download_repost 控制是否下载每个微博帖子的转发。 仅当有sqlite处于write_mode时才有效。 可能的值为0和1,默认为1:

"download_repost": 1,

值为1表示下载微博转发; 值为0表示不下载微博转发。

设置 repost_max_download_count

repost_max_download_count 控制最大转发下载次数。 仅当有sqlite处于write_mode时才有效。 默认值为 1000:

"repost_max_download_count": 1000,

该值为1000,表示每条微博最多可下载1000条转发。

设置cookie(可选)

Cookie是一个可选参数,可以填写也可以不填写。 看看具体的区别。 默认的cookie配置如下:

"cookie": "your cookie",

如果您想设置cookie,您可以按照中的方法获取cookie,并将上面的“您的cookie”替换为真实的cookie。

设置 mysql_config(可选)

mysql_config 控制mysql参数配置。 如果不需要将结果信息写入mysql,则可以忽略该参数,即删除或者保留都没有关系; 如果您需要写入mysql,并且config.json文件中mysql_config的配置与您的mysql配置不同,请更改此值 更改为您自己在mysql中的参数配置。

设置 mongodb_URI(可选)

mongodb_URI是mongodb的连接字符串。 如果不需要将结果信息写入mongodb,则可以忽略该参数,即删除或者保留都没有关系; 如果需要写入mongodb,则需要将其配置为完整的mongodb URI。

设置起始页(可选)

start_page是抓取微博的初始页码。 默认参数为1,表示从被爬取用户当前微博内容的第一页开始爬取。 如果大批量微博爬取受到限制,中途中断,可以在csv文件中查看目前已爬取的微博数量,除以10,向下取整的值为中断的页面数,可手动设置。 start_page 参数是中断页数。 重新运行可以继续从中断的节点爬取剩余的微博内容。

4. 设置数据库(可选)

这部分是可选的。 如果不需要将爬取的信息写入数据库,可以跳过此步骤。 该程序目前支持MySQL数据库和MongoDB数据库。 如果需要写入其他数据库,可以参考这两个数据库的写入方法自己编写。

MySQL数据库编写

要将爬取信息写入MySQL,请根据自己的系统环境安装MySQL,然后执行命令行:

pip install pymysql

MongoDB数据库编写

要将爬取信息写入MongoDB,请根据自己的系统环境安装MongoDB,然后执行命令行:

pip install pymongo

MySQL和MongDB数据库的写入内容是一样的。 程序会首先创建一个名为“weibo”的数据库,然后创建“user”表和“weibo”表,包括所有爬取的内容。 爬取到的微博用户信息,无论是插入还是更新,都会存储在用户表中; 爬取到的微博信息,无论是插入还是更新,都会存储在weibo表中,两个表通过user_id关联起来。 如果您想了解两个表的具体字段,请点击“详细信息”。

细节

用户表

id:微博用户ID,如“1669879400”;

screen_name:微博用户昵称,如“亲爱的迪丽热巴”;

性别:微博用户性别,取值为f或m,分别代表女性和男性;

生日:生日;

地点:地点;

教育:教育经历;

公司: 公司;

阳光:阳光信用;

Registration_time:注册时间;

statuses_count:微博帖子数;

follower_count:粉丝数量;

follow_count:关注者数量;

描述:微博简介;

profile_url:微博主页,如;

profile_image_url:微博头像url;

avatar_hd:微博高清头像url;

urank:微博级别;

mrank:微博会员级别,普通用户会员级别为0;

verified:微博是否经过认证,值为true、false;

verified_type:微博认证类型,无认证值为-1,个人认证值为0,企业认证值为2,政府认证值为3。这些类型仅是个人猜测,可能不完整。 您可以根据实际情况判断;

verified_reason:微博认证信息。 只有经过身份验证的用户才具有此属性。

微博表

user_id:存储微博用户ID,如“1669879400”;

screen_name:存储微博昵称,如“亲爱的迪丽热巴”;

id:存储微博id;

text:存储微博的文字;

Article_url:存储微博头条文章的URL。 如果微博中有头条文章,则获取头条文章的URL,否则值为'';

pics:存储原微博的原图网址。 如果一条微博有多张图片,则会存储多个URL,以逗号分隔; 如果微博没有图片,则该值为 '';

video_url:存储原始微博视频URL和Live Photo中的视频URL。 如果一条微博有多个视频,则会存储多个网址,以英文分号分隔; 如果微博没有视频,则值为 '';

location:存储微博的发布位置。 如果微博没有位置信息,则值为“”;

created_at:存储微博的发布时间;

来源:存储微博的发布工具;

Attitudes_count:存储微博收到的点赞数;

comments_count:存储微博获得的评论数;

reposts_count:存储微博获得的转发次数;

topic:存储微博主题,即两个#中的内容。 如果微博没有主题信息,则值为“”;

at_users:存储微博@的用户。 如果微博帖子中没有@用户,则值为'';

retweet_id:存储转发微博中原微博的微博id。 如果一条微博是原创微博,则值为“”。

**SQLite数据库编写**

该脚本将自动创建并配置数据库文件weibodata.db。

5.运行脚本

您可以根据自己的运行环境选择运行模式。 Linux可以使用

python weibo.py

跑步;

6.根据需要修改脚本(可选)

此部分是可选的。 如果您不需要自己修改代码或添加新功能,可以忽略此部分。

该程序的所有代码都位于weibo.py文件中。 节目的主体是微博课。 以上所有功能都是通过在main函数中调用Weibo类来实现的。 默认调用代码如下:

        if not os.path.isfile('./config.json'):
            sys.exit(u'当前路径:%s 不存在配置文件config.json' %
                     (os.path.split(os.path.realpath(__file__))[0] + os.sep))
        with open('./config.json') as f:
            config = json.loads(f.read())
        wb = Weibo(config)
        wb.start()  # 爬取微博信息

用户可以根据自己的需要调用或修改微博类。

通过执行这个程序,我们可以得到很多信息:

wb.user:存储目标微博用户信息;

wb.user包含爬取的微博用户信息,如用户id、用户昵称、性别、生日、所在地区、教育经历、公司、阳光信用、微博注册时间、微博发帖数、粉丝数、关注数、简介、首页地址、头像网址、高清头像网址、微博级别、会员级别、是否认证、认证类型、认证信息等。您可以点击“详细”查看具体使用情况。

细节

id:微博用户id,取值方式为wb.user['id'],由一系列数字组成;

screen_name:微博用户昵称,取值方法为wb.user['screen_name'];

Gender:微博用户性别,取值为wb.user['gender'],取值为f或m,分别代表女性和男性;

birthday:微博用户的生日,值为wb.user['birthday'],如果用户不填写该信息,值为'';

location:微博用户的位置,值为wb.user['location'],如果用户不填写该信息,则值为'';

教育程度:微博用户就读的学校。 该值为 wb.user['education']。 如果用户不填写此信息,则值为'';

公司:微博用户所属的公司。 该值为 wb.user['company']。 如果用户不填写此信息,则值为'';

Sunshine:微博用户的阳光信用,值为wb.user['sunshine'];

Registration_time:微博用户注册时间,取值方法为wb.user['registration_time'];

statuses_count:微博帖子数,取值方法为wb.user['statuses_count'];

followers_count:微博粉丝数,取值方法为wb.user['followers_count'];

follow_count:微博关注者数量,取值方法为wb.user['follow_count'];

description:微博简介,值为wb.user['description'];

profile_url:微博主页,值为wb.user['profile_url'];

profile_image_url:微博头像url,取值方法为wb.user['profile_image_url'];

avatar_hd:微博高清头像网址,取值方法为wb.user['avatar_hd'];

urank:微博级别,值为wb.user['urank'];

mbrank:微博会员等级,取值方式为wb.user['mrank'],普通用户会员等级为0;

verified:微博是否经过认证,取值方法为wb.user['verified'],取值为true和false;

verified_type:微博认证类型,取值方式为wb.user['verified_type'],无认证值为-1,个人认证值为0,企业认证值为2,政府认证值为3,这些类型仅供个人猜测,应该不全面,大家可以根据实际情况判断;

verified_reason:微博认证信息,值为wb.user['verified_reason'],只有通过认证的用户才有该属性。

wb.weibo:存储所有爬取的微博信息;

wb.weibo 包含了所有爬取的微博信息,如微博id、文字、原图网址、视频网址、位置、日期、发布工具、点赞数、转发数、评论数、主题、@users等。您抓取的所有微博(原创+转发),除了上述信息外,还包括原始用户id、原始用户昵称、原始微博id、原始微博文字、原始微博原图url、原始微博位置、原始微博日期、原创微博工具、原创微博点赞数、原创微博评论数、原创微博转发数、原创微博话题、原创微博@用户等信息。 wb.weibo 是一个包含所有爬取的微博信息的列表。 wb.weibo[0] 是抓取到的第一条微博,wb.weibo[1] 是抓取到的第二条微博,以此类推。 当only_crawl_original=1时,wb.weibo[0]为第一个爬取的原创微博,以此类推。 wb.weibo[0]['id'] 是第一条微博的 id,wb.weibo[0]['text'] 是第一条微博的文本,wb.weibo[0]['created_at' ] 是第一条微博的发布时间,还有很多其他信息我就不一一赘述了。 您可以点击下方“详情”查看具体用法。

细节

user_id:存储微博用户ID。 例如,wb.weibo[0]['user_id']是最新微博的用户ID;

screen_name:存储微博昵称。 例如,wb.weibo[0]['screen_name']是最新微博的昵称;

id:存储微博ID。 例如wb.weibo[0]['id']是最新微博的id;

text:存储微博的文本。 例如,wb.weibo[0]['text']是最新微博的文本;

Article_url:存储微博头条文章的URL。 例如,wb.weibo[0]['article_url']是最新的微博头条文章的URL。 如果微博中没有头条文章,则值为“”;

pics:存储原微博的原图网址。 例如,wb.weibo[0]['pics']是最新微博的原始图片URL。 如果微博有多张图片,则会存储多个URL,用英文逗号分隔; 如果微博没有图片,则值为'';

video_url:存储原微博视频网址和原微博直播照片中的视频网址。 例如,wb.weibo[0]['video_url']是最新微博的视频URL。 如果微博有多个视频,则会存储多个URL,以英文分号分隔; 如果微博没有视频,则值为'';

location:存储微博的发布位置。 例如,wb.weibo[0]['location']是最新微博的发布位置。 如果微博没有位置信息,则值为“”;

created_at:存储微博的发布时间。 例如wb.weibo[0]['created_at']是最新微博的发布时间;

来源:存储微博的发布工具。 例如,wb.weibo[0]['source']是最新微博的发布工具;

Attitudes_count:存储微博获得的点赞数。 例如,wb.weibo[0]['attitudes_count']是最新微博帖子获得的点赞数;

comments_count:存储微博获得的评论数。 例如wb.weibo[0]['comments_count']是最新微博收到的评论数;

reposts_count:存储微博获得的转发次数。 例如wb.weibo[0]['reposts_count']是最新微博收到的转发数;

topic:存储微博主题,即两个#中的内容。 例如,wb.weibo[0]['topics'] 是最新微博的主题。 如果微博没有主题信息,则值为“”;

at_users:存储微博@的用户。 例如,wb.weibo[0]['at_users']是最新微博@的用户。 如果该微博中没有@用户,则值为'';

转发:转发的微博中存储了原微博的所有信息。 如果wb.weibo[0]是转发的微博,那么wb.weibo[0]['retweet']就是转发该微博的原始微博。 它存储的属性与wb.weibo[0]相同,只是没有转发。 属性; 如果该微博是原创微博,则wb[0]不具有“转发”属性。 您可以点击“详情”查看具体使用情况。

细节

假设爬取的第i条微博为转发微博,则包含以下信息:

user_id:存储原始微博用户ID。 wb.weibo[i-1]['retweet']['user_id']为原微博的用户ID;

screen_name:存储原微博昵称。 wb.weibo[i-1]['retweet']['screen_name']为原微博昵称;

id:存储原始微博id。 wb.weibo[i-1]['retweet']['id']为原微博id;

text:存储微博原文。 wb.weibo[i-1]['retweet']['text'] 为原微博文本;

Article_url:存储原微博中头条文章的URL。 例如,wb.weibo[i-1]['retweet']['article_url']是原始微博的标题文章URL。 如果原微博中没有头条文章,则值为“”;

pics:存储原微博的原图网址。 wb.weibo[i-1]['retweet']['pics'] 为原微博的原图网址。 如果原微博有多张图片,则会存储多个网址,用英文逗号分隔; 如果原微博没有图片,则值为'';

video_url:存储原微博的视频url和原微博直播照片中的视频url。 例如,wb.weibo[i-1]['retweet']['video_url']是原始微博的视频URL。 如果原微博有多个视频,则会存储多个网址,以英文分号分隔; 如果微博没有视频,则值为“”;

location:存储原微博的发布位置。 wb.weibo[i-1]['retweet']['location'] 为原微博的发布位置。 如果原始微博没有位置信息,则值为“”;

Create_at:存储原始微博的发布时间。 wb.weibo [i-1] ['retweet'] ['create_at']是原始Weibo的发布时间;

资料来源:存储原始微博的出版工具。 wb.weibo [i-1] ['retweet'] ['source']是原始Weibo的发布工具;

attitudes_count:存储原始微博获得的点赞的数量。 wb.weibo [i-1] ['retweet'] ['attitudes_count']是原始微型获得的点赞的数量;

comment_count:存储原始微型获得的注释数量。 wb.weibo [i-1] ['retweet'] ['comment_count']是原始微微量的评论数;

reposts_count:存储原始微博获得的重新启动数。 wb.weibo [i-1] ['retweet'] ['reposts_count']是原始Weibo获得的recrost次数;

主题:存储原始的微博主题微博粉丝链接,即两个#中的内容。 wb.weibo [i-1] ['retweet'] ['主题']是原始微型的主题。 如果原始微博没有主题信息,则值为“”;

AT_USERS:存储原始Weibo @的用户。 wb.weibo [i-1] ['retweet'] ['at_users']是原始weibo @的用户。 如果原始微博没有 @的用户,则值为'”。

7.定期自动爬网(可选)

爬行微博后,许多微博帐户可能已经发布了一些新的微博。 定期自动爬行的微博意味着每隔一段时间自动运行程序,以自动爬行此期间生成的新的微博(忽略了先前的爬行旧微毒)。 本节是可选的,如果不需要,可以忽略。

这个想法是使用第三方软件(例如Crontab)定期运行该程序。 因为有必要跳过以前被爬行的旧微博,而只是爬上了新的微博。 因此,自_date以来,您需要设置动态。 我们使用的自来是固定的,例如_date =“ 2018-01-01”,该程序将遵循此设置,并在2018-01-01的发布时间(包括此时间)从最新的Weibo到微博(包括此时间) )。 因为我们想添加新的Weibo并跳过旧的微博。 当第二次爬行时,fastate值应该是从当前时间到最后一个爬网的时间。 如果我们使用最原始的方式来实施附加爬行,则应该这样:

假如程序第一次执行时间是2019-06-06,since_date假如为2018-01-01,那这一次就是爬取从2018-01-01到2019-06-06这段时间用户所发的微博;
第二次爬取,我们想要接着上次的爬,需要手动将since_date值设置为上次程序执行的日期,即2019-06-06

上面的方法太麻烦了,因为因为_date必须每次手动设置。 因此微博粉丝链接,我们需要动态设置自_DATE自动设置,也就是说,程序会根据实际情况自动生成fater。 自_date以来,有两种动态更新的方法:

方法1:将自_DATE设置为整数

在config.json文件中设置fast f.date to:

"since_date": 10,

这种配置告诉程序将抓取过去10天的微博。 更确切地说,它在10天前的出版时间与执行该程序的执行时间之间进行了微博。 这样,自_date是一个动态变量。 每次执行程序时,其值是当前日期减去10.每9或10天执行Crontab,就可以实现定期的额外爬行。

方法2:写上次执行到文件的时间(建议)

此方法非常简单,也就是说,用户写入用户ID以爬到txt文件中,然后将文件路径分配给config.json中的user_id_list参数。

TXT文件名称格式可以参考设置User_id_list零件,因此设置已经结束。

让我们谈谈这种方法的原理和好处。 如果您的TXT文件的内容是:

1669879400
1223178222 胡歌
1729370543 郭碧婷 2019-01-01

第一次执行时,由于第一行和第二行没有时间写入时间,因此该程序将根据config.json文件中的after_date的值爬网。 如果第三行包含时间“ 2019-01-01”,则该程序将爬网。 这次被视为自_date。 每个用户爬网后,程序将自动更新TXT文件。 每行的第一部分是User_id,第二部分是用户的昵称,第三部分是程序准备爬网的第一个微博(最新微博)的日期。 爬三个用户后,TXT文件的内容自动更新为:

1669879400 Dear-迪丽热巴 2020-01-18
1223178222 胡歌 2020-01-18
1729370543 郭碧婷 2020-01-18

下次我们抓取微博时,该程序将使用_date以来每行的时间数据。 这样做的优点是,由于_date,程序自动更新,因此无需修改。 其次,每个用户自_date以来都可以拥有自己的自己。 每个用户的自来是_date彼此独立的,并且不会彼此干扰。 格式是yyyy-mm-dd或整数。 例如,添加了新用户。 以Yang Zi的微博为例,如果您想从2018-01-23获取她的所有微博,则可以像这样修改TXT文件:

1669879400 迪丽热巴 2020-01-18
1223178222 胡歌 2020-01-18
1729370543 郭碧婷 2020-01-18
1227368500 杨紫 3 梦想,希望

请注意,每行中的用户配置参数都被空间分开。 如果第一个参数完全由数字组成,则该程序将认为该行是用户的配置。 否则,该程序将认为该行只是评论并跳过行。 第二个参数可以以任何格式,建议编写用户昵称; 如果第三个以日期格式(yyyy-mm-dd),则该程序将自_date以来将日期设置为用户自己的日期,否则在config.json中以自_DATE抓取用户的MicroBlog BO,您无需填写第二个参数和第三个参数。 还可以设置第四个参数,将读取为query_list。

方法3:更改const.py文件中的运行模式以附加

除了附加模式外,运行程序。 每个ID中的每个ID仅获取最新的微博,而不是全部,避免频繁备份导致过度请求的微博。

注意:

8.使用Docker

码头运行

docker build -t weibo-crawler .
docker run -it -d \
  -v path/to/config.json:/app/config.json \
  -v path/to/weibo:/app/weibo \
  -e schedule_interval=1 \ # 可选:循环间隔(分钟)
  weibo-crawler

码头工人组成

version: '3'
services:
  weibo-crawler:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - path/to/config.json:/app/config.json
      - path/to/weibo:/app/weibo
    environment:
      - schedule_interval=1 # 可选:循环间隔(分钟)

如何获得user_id

1.打开URL并搜索我们正在寻找的人,例如“ Dili Reba”,输入她的主页;

2.根据上图中的箭头,单击“数据”链接,然后跳到用户数据页面;

如上图所示,DILI REBA的微博信息页面的地址为“ https://weibo.cn/16669879400/info”,而“ 1669879400”是此Weibo的User_id。

实际上,此微博的User_id也包含在用户主页()中。 我们仍然要在主页上单击“信息”以获取user_id的原因,因为许多用户的主页不是“ https://weibo.cn/user_id_id_id?f = search_0”,而是“ https:// weibo。 CN/个人域名? 其中,“ Micro -Number”和User_id是数字字符串。 如果您仅通过主页地址提取user_id,那么想想user_id的“ micro -signs”很容易误解。

添加cookie和不添加cookie(可选)之间的区别

对于具有2,000微博及以下的微博用户,请勿添加cookie以获取其用户信息和大多数微博; 对于具有2,000多个微博号的微博用户,请勿添加cookie以获取其用户信息,而在2000年2000年的最后一个微博中,大多数微博,添加cookie可以获取所有微博。 以Di Lierba的微博为例。 目前,她总共有1085个微博。 如果不添加cookie,就可以获得1026微博,约占所有微博的94.56。 %,在添加cookie之后,您可以获得所有的微博。 其他用户是相似的。 他们中的大多数可以在不添加cookie的情况下获得90%以上的微博,并且在添加cookie后,您可以获得所有的微博。 具体原因是,大多数微博内容都可以在移动版本上匿名获得,并且少数微博需要登录用户以获取,因此如果不添加cookie,就无法获得微博的这一部分。

有少数的微博用户可以在不添加cookie而无法获取其用户信息的情况下获取微博。 对于这种情况,Cookie需要获得其用户信息。

如果您需要捕获微博,请添加cookie。

如何获得cookie(可选)

1.用Chrome打开它;

2.输入微博的用户名和密码,如图所示:

登录成功后,它将跳到;

3.按F12键打开Chrome Developer工具,输入并跳到地址栏并跳到它。 跳跃后,类似的接口将显示如下:

4.单击网络中的网络 - >名称 - > name->标题 - >网络 - > head中的请求标头。 显示:

如何检测cookie是否有效(可选)

此过程cookie检查的逻辑是:使用cookie源帐户发布有限的微博范围。 如果有cookie可用,则可以阅读微博,否则您将不会阅读它。

如何操作

发行带有cookie的源帐户的微博。 该帐户和微博需要满足以下条件:

将const.py文件中的false更改为false中的false中的true,然后在“ sideen_weibo'':'':weibo content'的微博内容中,将false更改为有限的范围。

将cookie的微博ID放在config.json文件中的“ user_id_list”设置项目阵列中。 例如,cookie的微博ID为123456,然后“ user_id_list”设置为“ user_id_list”:[“ 123456”,“”]。

注意:此方法还将捕获提供Cookie帐户的微博内容。

间歇性操作时,无效的cookie将导致程序不根据预设目标执行,因此可以打开cookie通知功能。 该项目使用开源项目Pushdeer通知它。 使用之前,用户需要申请push_key。 详情请查看官方网站。 打开的方式是:

在const.py文件中,将“ notify”:false:'push_key':''':''':''':':':'的false设置false

发表评论