本内容仅供参考学习
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'
我们可以获取网站源码,并从中找出我们需要的信息,即微博内容,该话题页数,同时我们可以获取每个微博的地址
利用上述这些信息我们可以获取该话题下的微博内容
如若评论不止一页修改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
该网址页面如下:
利用2.1中的代码可获取该网页源码,提取其中的信息如转发数、评论数、点赞数、日期等
如若评论不止一页修改page参数即可,例如:
https://weibo.cn/2390836491/LjTolidwA?page=2
注意:每次访问网页后设置一些随机休眠的时间,防止被封
3. 抓取结果示例
每条微博抓取的数据示例:
抓取某一个话题下的所有微博示例:
无非是对抓取一条的多次使用而已
示例如下,文本命名为对应微博网址如https://weibo.cn/2390836491/LjTolidwA?page=2 截取其中的cn后面的数据,因为该数据具有唯一性
详细代码请联系本人: http://yanzw.cn/er/about