title: python + selenium +chrome爬取qq空间好友说说并存入mongodb数据库

准备阶段

在正式开始在前需要先准备好做爬虫的工具,本例使用chrome无头浏览器进行爬取工作,也可使用其他浏览器,程序中的其他可替代工具在此之后不再一一赘述,有一些不明白的地方可以自行百度,有错误的地方欢迎大家指正,大家共同学习共同进步!!

需要用到的库:

pymongo

selenium

csv

time

爬虫思路分析

从csv文件读取好友qq号码构造url链接

使用chrome + selenium登录QQ,选择账号密码的等率方式

爬取好友说说的发表的时间信息

把爬取到的信息存储在mongodb中

从qq邮箱获取好友列表,存储为csv文件

打开qq邮箱选择通讯录 > 工具 > 导出联系人文件选择部分好友文件导出,保存为csv文件,之后便于从csv文件读取好友qq号

qq空间好友说说的链接为http://user.qzone.qq.com/{好友qq号码}/311,首次打开需登录

观察源码,选择适当的筛选方法

写入数据库

爬虫代码如下:

#导入程序需要的库

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

import time

import csv

import pymongo

#链接数据库

client = pymongo.MongoClient('localhost',27017)

#创建数据库和数据集合

net_speader = client['net_speader']

qq_data = net_speader['qq_data']

chrome_options = Options()

#选择无头chrome,并设置窗口最大化

chrome_options.add_argument('--headless')

driver = webdriver.Chrome(chrome_options=chrome_options)

driver.maximize_window()

#定义获取信息的函数

def get_info(qq):

#声明变量

global time

#请求url隐式等待15s

driver.get('https://user.qzone.qq.com/{}/311'.format(qq))

driver.implicitly_wait(15)

#判断页面是否需要登陆,通过查找是否有ID为login_div的div标签来进行判断

try:

driver.find_element_by_id('login_div')

a = True

except:

a = False

#如果需要登陆则切换到需要登陆的框架进行登陆

if a == True:

driver.switch_to.frame('login_frame')

driver.find_element_by_id('switcher_plogin').click()

driver.find_element_by_id('u').clear()

driver.find_element_by_id('u').send_keys('你的qq号码')

driver.find_element_by_id('p').clear()

driver.find_element_by_id('p').send_keys('你的qq号密码')

driver.find_element_by_id('login_button').click()

time.sleep(5)

driver.implicitly_wait(3)

#通过查找是否有ID为QM_OwnerInfo_Icon的div标签来判断是否有权限访问好友的qq空间

try:

driver.find_element_by_id('QM_OwnerInfo_Icon')

b = True

except:

b = False

#如果可以访问则切换到好友说说框架进行数据的爬取和储存

if b == True:

driver.switch_to.frame('app_canvas_frame')

contents = driver.find_elements_by_css_selector('.content')

times = driver.find_elements_by_css_selector('.c_tx.c_tx3.goDetail')

for content,time in zip(contents,times):

data = {

'time':time.text,

'content':content.text

}

print(data)

qq_data.insert_one(data)

#主程序入口,通过csv库读取通讯录文件,存入列表

if __name__ == '__main__':

qq_lists = []

fp = open(r'W:\text\qqmail.csv',encoding='gb18030',errors='ignore')

reader = csv.DictReader(fp)

for row in reader:

qq_lists.append(row['qqmail'].split('@')[0])

fp.close()

print(qq_lists)

for i in qq_lists:

get_info(i)

python爬取好友qq空间_python + selenium +chrome爬取qq空间好友说说并存入mongodb数据库...相关推荐

  1. Python网络爬虫(四):selenium+chrome爬取美女图片

    说明: Python版本:Python IDE:PyCharm chrome版本:我的版本63 chromedriver.exe:因为是模拟浏览器访问,chrome需要再下载一个驱动,具体方式在我的上 ...

  2. python + selenium +chrome爬取qq空间好友说说并存入mongodb数据库

    python + selenium +chrome爬取qq空间好友说说并存入mongodb数据库 准备阶段 在正式开始在前需要先准备好做爬虫的工具,本例使用chrome无头浏览器进行爬取工作,也可使用 ...

  3. 使用selenium + chrome爬取中国大学Mooc网的计算机学科的所有课程链接

    目的:使用selenium + chrome爬取中国大学Mooc网计算机学科的所有的课程链接列表 思路:找到每个分页的节点属性为class="m-course-list" 的div ...

  4. python批量读取图片并批量保存_Python实现批量读取图片并存入mongodb数据库的方法示例...

    本文实例讲述了Python实现批量读取图片并存入mongodb数据库的方法.分享给大家供大家参考,具体如下: 我的图片放在E:\image\中,然后使用python将图片读取然后,显示一张,存入取一张 ...

  5. centos7+TP5.1+selenium+chrome抓取搜狗微信推文

    centos7+TP5.1+selenium+chrome抓取搜狗微信推文 一.Composer 引入 "require": {"php-webdriver/webdri ...

  6. Kafka实战 - 06 Kafka消费者:从指定Topic拉取工单处置记录信息并存入MongoDB数据库

    文章目录 1. 处置记录表 t_disposal_record 2. kafka 主题和消费者配置 3. 定义一个线程任务 KafkaTask 1. kafka Topic中的数据:KafkaDisp ...

  7. python爬去百度百科词条_python简单爬虫爬取百度百科python词条网页

    目标分析: 目标:百度百科python词条相关词条网页 - 标题和简介 入口页:https://baike.baidu.com/item/Python/407313 URL格式: - 词条页面URL: ...

  8. python登录qq邮箱_Python + Selenium 登录QQ邮箱

    Python + Selenium 自动化登录QQ邮箱 准备工作 Windows或则Linux 安装Python 安装Selenium 安装Chrome Driver 环境选择Windows 10 安 ...

  9. python爬取链家新房_Python爬虫项目--爬取链家热门城市新房

    本次实战是利用爬虫爬取链家的新房(声明: 内容仅用于学习交流, 请勿用作商业用途) 环境 win8, python 3.7, pycharm 正文 1. 目标网站分析 通过分析, 找出相关url, 确 ...

最新文章

  1. Y1ng‘s BabyCode
  2. Markdown中数学公式整理
  3. android sdk 封装html5,Android平台以WebView方式集成HTML5+SDK方法
  4. Gallery 3D+倒影 滑动切换图片示例(转)
  5. Redis执行monitor命令报错 (error) NOAUTH Authentication required.
  6. pointofix 全局快捷键_屏幕画笔(Pointofix)
  7. android APK加密、签名
  8. ERP系统功能之生产管理
  9. 【vscode】MarkDown 插入视频标签
  10. 软件测试的自我修养之学习自动化测试
  11. MySQL8 一文读懂存储过程
  12. 数据分析师三个等级_【数据分析课|这三个等级的数据分析师报考条件,一定是你需要的】- 环球网校...
  13. Android 实现从网络获取视频URL显示在视频播放器(IjkVideoView)能全屏和保存视频到手机的功能
  14. org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map java.util.Map
  15. 研发的首要目的是什么——一个容易被忽略的问题
  16. 你说学习重要,还是经营人脉重要
  17. 【嵌入式系统开发】Keil 实现LED灯闪烁 详细教程及完整代码
  18. 时间的计算的隐私政策
  19. 前100名分数都超过383分!复旦大学计算机考研分数统计
  20. 基于SSM+MySQL+Layui+Echarts的酒店入住管理系统

热门文章

  1. ChatGPT想干掉开发人员,做梦去吧
  2. php ci csrf,CI的CSRF的改造
  3. 基于情感词典的文本情感分析方法
  4. 西财计算机研究生专硕复试分数线,2017年西南财经大学考研复试分数线
  5. 三国杀里面有哪些是和历史吻合的比较好的例子?
  6. Java线程及Jvm监控工具
  7. 浅谈上、下拉电阻的作用
  8. 给准研究生和在读研究生的一封信
  9. 【Linux】Linux编辑器-gcc/g++使用
  10. 2022广州市黄埔区萝岗街道招聘社区党建专职组织员仿真试题及答案