专栏首页Python攻城狮使用Selenium抓取QQ空间好友说说1.安装Selenium2.在Python中使用Selenium获取QQ空间好友说说3.代码实现(基于Python3)

使用Selenium抓取QQ空间好友说说1.安装Selenium2.在Python中使用Selenium获取QQ空间好友说说3.代码实现(基于Python3)

代码参考http://www.jianshu.com/p/a6769dccd34d 刚接触Selenium的戳这里Selenium与PhantomJS PS:代码的不足在于只能抓取第一页的说说内容,代码的改进之处在于增加了与数据库的交互,进行了存储

1.安装Selenium

pip install Selenium

2.在Python中使用Selenium获取QQ空间好友说说

分析网页结构

说说内容

发表说说的时间

3.代码实现(基于Python3)

# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import pymongo

# #使用Selenium的webdriver实例化一个浏览器对象,在这里使用Phantomjs
# driver = webdriver.PhantomJS(executable_path=r"D:\phantomjs-2.1.1-windows\bin\phantomjs.exe")
# #设置Phantomjs窗口最大化
# driver.maximize_window()


# 登录QQ空间
def get_shuoshuo(qq):
    #建立与MongoClient的链接
    client = pymongo.MongoClient('localhost', 27017)
    #得到数据库
    db = client['shuoshuo']
    #得到一个数据集合
    sheet_tab = db['sheet_tab']

    chromedriver = r"E:\mycode\chromedriver.exe"
    driver = webdriver.Chrome(chromedriver)
    #使用get()方法打开待抓取的URL
    driver.get('http://user.qzone.qq.com/{}/311'.format(qq))
    time.sleep(5)
    #等待5秒后,判断页面是否需要登录,通过查找页面是否有相应的DIV的id来判断
    try:
        driver.find_element_by_id('login_div')
        a = True
    except:
        a = False
    if a == True:
        #如果页面存在登录的DIV,则模拟登录
        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(3)
    driver.implicitly_wait(3)

    #判断好友空间是否设置了权限,通过判断是否存在元素ID:QM_OwnerInfo_Icon
    try:
        driver.find_element_by_id('QM_OwnerInfo_Icon')
        b = True
    except:
        b = False
    #如果有权限能够访问到说说页面,那么定位元素和数据,并解析
    if b == True:
        driver.switch_to.frame('app_canvas_frame')
        content = driver.find_elements_by_css_selector('.content')
        stime = driver.find_elements_by_css_selector('.c_tx.c_tx3.goDetail')
        for con, sti in zip(content, stime):
            data = {
                'time': sti.text,
                'shuos': con.text
            }
            print(data)
            sheet_tab.insert_one(data)
        pages = driver.page_source
        soup = BeautifulSoup(pages, 'lxml')

    #尝试一下获取Cookie,使用get_cookies()
    cookie = driver.get_cookies()
    cookie_dict = []
    for c in cookie:
        ck = "{0}={1};".format(c['name'], c['value'])
        cookie_dict.append(ck)
    i = ''
    for c in cookie_dict:
        i += c
    print('Cookies:', i)


    driver.close()
    driver.quit()


if __name__ == '__main__':
    get_shuoshuo('好友的QQ号')

注意:使用前记得安装chromedriver这个插件,使用的过程中会呼起一个谷歌浏览器。如果写了绝对路径还报错的话,就加入环境变量。

通过Robo 3T(数据库MongoDB的一款功能强大的数据库管理工具)可以看到我们已经将拿到的数据库存储于数据库中

接下来我们应该通过拿到的数据做一些数据分析...可是我不会!!!

正在努力学习数据分析中.....

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Selenium 的使用1.网站模拟登录2.动态页面模拟点击3.执行 JavaScript 语句

    Python攻城狮
  • 文件的打开与关闭-IO1.文件的目的2.文件的打开与关闭 3.文件的读写 4.应用

    就是把一些存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力

    Python攻城狮
  • Selenium与PhantomJS

    Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可...

    Python攻城狮
  • python爬虫入门(五)Selenium模拟用户操作

    爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider) 之间恢宏壮阔的斗争... 小莫想要某站上所有的电影,写了...

    zhang_derek
  • Appium自动化(三)常用的API接口

    后续会继续分享,也会总结一些大家会问我的问题,在公众号内,给大家分享出来。解答更多的疑惑。如果你有疑惑或者有问题可以在评论区留言。有问题也可以单独私聊我也可以。...

    雷子
  • 基于python的appium例子

    版权声明:如需转载本文章,请保留出处! https://blog.csdn.net/xc_zhou/article/details/89643551 ...

    周小董
  • python+selenium+PhantomJS抓取网页动态加载内容

    按照系统环境下载phantomjs,下载完成之后,将phantomjs.exe解压到python的script文件夹下

    砸漏
  • python appium操作手机及ap

    py3study
  • 一日一技:使用上下文管理器来强制关闭 Chromedriver

    当我们使用 Selenium 通过 Chromedriver 启动 Chrome 浏览网页时,可能会由于某些异常情况导致程序崩溃,但 Chromedriver ...

    青南
  • selenium切换窗口后定位元素出现问题的解决方案

    在做UI自动化的过程中,有时需要由一个窗口跳转到另一个窗口,这时直接去定位页面元素,可能会出现问题,这时,我们需要将driver与新的窗口进行绑定。

    流柯

扫码关注云+社区

领取腾讯云代金券