利用selenium
实现后台自动爬取指定关键词下发布的所有微博及其相关数据, 进一步可根据用户主页爬取用户基本信息
更新了用于爬取用户基本信息的程序userSpider.py
, 并将原爬虫程序Spider.py
更名为blogSpider.py
。
更新了账号登录函数weibo_login
, 更新后可以输入任意多次的验证码, 当系统不要求再次输入验证码后, 需要在python界面中输入字符——N 程序才会继续运行
优:能够应对任意多次验证码输入请求
劣:无法自行判断是否需要再次输入验证码, 需要人工帮助判断
-
目前该程序只能在Firefox或Google Chrome上运行, 运行程序前请确保计算机已经安装了其中一款浏览器
-
运行程序前, 需要根据自己使用的浏览器下载对应的浏览器驱动, 并将驱动与python.exe放置在同一文件夹中, 这里给出了两种浏览器驱动的压缩文件, 也可以自行上网下载
浏览器名称 驱动名 Firefox geckodriver.exe Chrome chromedriver.exe
内容 | 变量名 | 数据类型 |
---|---|---|
用户名 | ID | str |
用户主页 | Href | str |
微博博文 | Blog | str |
发布时间 | PubTime | str |
点赞数 | Like | int |
评论数 | Comment | int |
转发数 | Transfer | int |
内容(变量名) | 数据类型 | 内容(变量名) | 数据类型 |
---|---|---|---|
昵称 | str | 血型 | str |
真实姓名 | str | 博客地址 | str |
所在地 | str | 个性域名 | str |
性别 | str | 简介 | str |
性取向 | str | 注册时间 | str |
感情状况 | str | href | str |
生日 | str |
先爬取关键词微博下的前20页微博信息, 接着每隔半小时(1800s)更新一次数据
csv_file = 'C:/test.csv' # 数据文件保存路径
my_username = 'abcdefg' # 微博账号
my_password = '11111111' # 密码
keyword = '微博' # 要搜索的关键词
my_browser = 'Chrome' # 浏览器类型(注:仅有Firefox或Chrome两种)
Standby(keyword, csv_file, my_username, my_password, maxpage=20, sleeptime=1800, browser=my_browser)
可输入单个用户主页或用户主页列表(程序目前仅可识别list/array/tuple)
主函数userinfo
中有两个bool类型参数:saved
、newfile
, 分别代表是否将爬取的数据保存为csv格式数据、保存的文件是否覆盖原文件/创建新文件
注意: saved与newfile只要其中一个为True, 输入中都应包括filepath
爬取单个用户主页并仅返回爬取数据:
myhref = 'https://weibo.com/weibokefu'
myusername = '123456'
mypassword = '123456'
only_data = userinfo(myhref, myusername, mypassword) # 仅获取爬取的数据
爬取E:/hrefs.csv中的多个用户主页并将数据保存到C盘:
import csv
myusername = '123456'
mypassword = '123456'
myfilepath = 'C:/test.csv'
f = csv.reader(open('E:/hrefs.csv', encoding='utf-8'))
myhrefs = [href for href in f]
mybrowser = 'Chrome' # 默认使用Firefox
userinfo(myhrefs, myusername, mypassword, browser=mybrowser, filepath=myfilepath, saved=True, newfilw=True)