python跳过登录验证抓取微博话题中的每个微博内容,评论,点赞,时间等信息,使用selenium库

本内容仅供参考学习

1. 爬取环境准备

需要使用微博搜索网站:https://s.weibo.com 和 微博3g网站 http://weibo.cn
爬取采用python库:selenium
需要浏览器及驱动:谷歌chorme浏览器和chormedriver.exe,下载地址:http://chromedriver.storage.googleapis.com/index.html ,其他亦可,需下载对应驱动
浏览器打开上述两个网址,并使用自己微博账号登录,如若弹出保存密码,cookies之类的提示,请一定点击保存,我们需要使用这些信息绕过登录,关闭浏览器。
在程序运行时务必不要打开浏览器

2. 主要爬取方式

使用selenium获取网站信息

2.1 获取网页源码或者某个元素下的内容信息

主要代码:

"""
author:yzw
"""
profile_directory = r'--user-data-dir=C:\Users\yzw\AppData\Local\Google\Chrome\User Data'
# 加载配置数据,该部分文件夹具体位置查看方法为:在浏览器地址栏输入chrome://version/,
#可看见个人资料路径,删除掉后面的”\Default“,本设置个够使用本地浏览器配置,跳过登录。
option = webdriver.ChromeOptions()
option.add_argument('log-level=3')
option.add_argument(profile_directory)
# 启动浏览器配置
driver = webdriver.Chrome(chrome_options=option)   # 打开chrome浏览器

#访问网页
driver.switch_to.window(driver.window_handles[-1])#如需要再一个浏览器打开多个网页,加上这一句
driver.get(url)#访问网页

content = driver.page_source#获取网页源码
commmentTimeEm = driver.find_elements_by_class_name('ct')
#获取元素类ct下的内容,该部分获取方式众多(如根据标签获取之类,程序代码不同而已),可根据需求使用

2.2 爬取微博信息

例如话题:西安封城及其网址
topic="西安封城"
url='https://s.weibo.com/weibo?q=%23%E8%A5%BF%E5%AE%89%E5%B0%81%E5%9F%8E%23'
image.png

我们可以获取网站源码,并从中找出我们需要的信息,即微博内容,该话题页数,同时我们可以获取每个微博的地址

image.png
image.png

利用上述这些信息我们可以获取该话题下的微博内容
如若评论不止一页修改page参数即可,例如:
https://s.weibo.com/weibo?q=%23%E8%A5%BF%E5%AE%89%E5%B0%81%E5%9F%8E%23&page=2

2.2 获取点赞数,评论数,评论内容

从2.1可知,我们在这个页面上无法直观的获取评论内容,所以我们需要使用3g微博网站
http://weibo.cn

以2.2中获取每个微博的地址为例,2.1图中右上角红框中的地址:https://weibo.com/2390836491/LjTolidwA?refer_flag=1001030103_
我们使用该地址,取出地址中的 2390836491/LjTolidwA 拼接在3g网址后可得:
http://weibo.cn/2390836491/LjTolidwA

该网址页面如下:
image.png

利用2.1中的代码可获取该网页源码,提取其中的信息如转发数、评论数、点赞数、日期等
image.png

如若评论不止一页修改page参数即可,例如:
https://weibo.cn/2390836491/LjTolidwA?page=2

注意:每次访问网页后设置一些随机休眠的时间,防止被封

3. 抓取结果示例

每条微博抓取的数据示例:
image.png

抓取某一个话题下的所有微博示例:
无非是对抓取一条的多次使用而已
示例如下,文本命名为对应微博网址如https://weibo.cn/2390836491/LjTolidwA?page=2 截取其中的cn后面的数据,因为该数据具有唯一性
image.png

详细代码请联系本人: http://yanzw.cn/er/about