摘要:前言利用实现抓取微博评论数据,废话不多说。让我们愉快地开始吧开发工具版本相关模块模块模块模块模块模块以及一些自带的模块。环境搭建安装并添加到环境变量,安装需要的相关模块即可。
利用Python实现抓取微博评论数据,废话不多说。
让我们愉快地开始吧~
**Python版本:**3.6.4
相关模块:
requests模块;
re模块;
pandas模块;
lxml模块;
random模块;
以及一些Python自带的模块。
安装Python并添加到环境变量,pip安装需要的相关模块即可。
本文以爬取微博热搜《霍尊手写道歉信》为例,讲解如何爬取微博评论!
网页地址
https://m.weibo.cn/detail/4669040301182509
网页分析
微博评论是动态加载的,进入浏览器的开发者工具后,在网页上向下拉取会得到我们需要的数据包
得到真实URL
https://m.weibo.cn/comments/hotflow?id=4669040301182509&mid=4669040301182509&max_id_type=0https://m.weibo.cn/comments/hotflow?id=4669040301182509&mid=4669040301182509&max_id=3698934781006193&max_id_type=0
两条URL区别很明显,首条URL是没有参数max_id的,第二条开始max_id才出现,而max_id其实是前一条数据包中的max_id
但有个需要注意的是参数max_id_type,它其实也是会变化的,所以我们需要从数据包中获取max_id_type
代码实现
import reimport requestsimport pandas as pdimport timeimport randomdf = pd.DataFrame()try: a = 1 while True: header = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36" } resposen = requests.get("https://m.weibo.cn/detail/4669040301182509", headers=header) # 微博爬取大概几十页会封账号的,而通过不断的更新cookies,会让爬虫更持久点... cookie = [cookie.value for cookie in resposen.cookies] # 用列表推导式生成cookies部件 headers = { # 登录后的cookie, SUB用登录后的 "cookie": f"WEIBOCN_FROM={cookie[3]}; SUB=; _T_WM={cookie[4]}; MLOGIN={cookie[1]}; M_WEIBOCN_PARAMS={cookie[2]}; XSRF-TOKEN={cookie[0]}", "referer": "https://m.weibo.cn/detail/4669040301182509", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36" } if a == 1: url = "https://m.weibo.cn/comments/hotflow?id=4669040301182509&mid=4669040301182509&max_id_type=0" else: url = f"https://m.weibo.cn/comments/hotflow?id=4669040301182509&mid=4669040301182509&max_id={max_id}&max_id_type={max_id_type}" html = requests.get(url=url, headers=headers).json() data = html["data"] max_id = data["max_id"] # 获取max_id和max_id_type返回给下一条url max_id_type = data["max_id_type"] for i in data["data"]: screen_name = i["user"]["screen_name"] i_d = i["user"]["id"] like_count = i["like_count"] # 点赞数 created_at = i["created_at"] # 时间 text = re.sub(r"<[^>]*>", "", i["text"]) # 评论 print(text) data_json = pd.DataFrame({"screen_name": [screen_name], "i_d": [i_d], "like_count": [like_count], "created_at": [created_at],"text": [text]}) df = pd.concat([df, data_json]) time.sleep(random.uniform(2, 7)) a += 1except Exception as e: print(e)df.to_csv("微博.csv", encoding="utf-8", mode="a+", index=False)print(df.shape)
效果展示
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/122995.html
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
摘要:所以说,我们所看到的微博页面的真实数据并不是最原始的页面返回的,而是后来执行后再次向后台发送了请求,拿到数据后再进一步渲染出来的。结果提取仍然是拿微博为例,我们接下来用来模拟这些请求,把马云发过的微博爬取下来。 上一篇文章:Python3网络爬虫实战---34、数据存储:非关系型数据库存储:Redis下一篇文章:Python3网络爬虫实战---36、分析Ajax爬取今日头条街拍美图 ...
摘要:今天为大家整理了个爬虫项目。地址新浪微博爬虫主要爬取新浪微博用户的个人信息微博信息粉丝和关注。代码获取新浪微博进行登录,可通过多账号登录来防止新浪的反扒。涵盖链家爬虫一文的全部代码,包括链家模拟登录代码。支持微博知乎豆瓣。 showImg(https://segmentfault.com/img/remote/1460000018452185?w=1000&h=667); 今天为大家整...
摘要:楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,。本文来源知乎作者路人甲链接楚江数据提供网站数据采集和爬虫软件定制开发服务,服务范围涵盖社交网络电子商务分类信息学术研究等。 楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,http://www.chujiangdata.com。 第一:Python爬虫学习系列教程(来源于某博主:htt...
摘要:当我们试图从新浪微博抓取数据时,我们会发现网页上提示未登录,无法查看其他用户的信息。三模拟登录下面将介绍使用获取新浪微博,然后使用提交从而实现模拟登录。 当我们试图从新浪微博抓取数据时,我们会发现网页上提示未登录,无法查看其他用户的信息。模拟登录是定向爬虫制作中一个必须克服的问题,只有这样才能爬取到更多的内容。 showImg(https://segmentfault.com/img/...
阅读 758·2021-11-18 10:02
阅读 2407·2021-11-11 16:54
阅读 2704·2021-09-02 09:45
阅读 623·2019-08-30 12:52
阅读 2621·2019-08-29 14:04
阅读 2707·2019-08-29 12:39
阅读 402·2019-08-29 12:27
阅读 1866·2019-08-26 13:23