- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
自动化测试工程师发展技术提升-在Python中使用Selenium获取QQ空间好友动态
自动化测试工程师发展技术提升-在Python中使用Selenium获取QQ空间好友动态 我们接触到的,很多都是使用requests+BeautifulSoup组合对静态网页进行请求和数据解析,若是JS生成的内容,也介绍了通过寻找API借口来获取数据。 但是有的时候,网页数据由JS生成,API借口又死活找不着或者是API借口地址随机变换,时间不等人。那就只能使用Selenium了。 一、Selenium简介 Selenium是一个用于Web应用的功能自动化测试工具,Selenium 直接运行在浏览器中,就像真正的用户在操作一样。 由于这个性质,Selenium也是一个强大的网络数据采集工具,其可以让浏览器自动加载页面,获取需要的数据,甚至页面截图,或者是判断网站上某些动作是否发生。 Selenium自己不带浏览器,需要配合第三方浏览器来使用。支持的浏览器有Chrome、Firefox、IE、Phantomjs等。 如果使用Chrome、FireFox或IE,我们可以看得到一个浏览器的窗口被打开、打开网站、然后执行代码中的操作。 但是,让程序在后台中运行更符合我们爬虫的气质,所以自己多使用Phantomjs作为浏览器载体,本篇文章也以Phantomjs作介绍 Phantomjs是一个“无头”浏览器,也就是没有界面的浏览器,但是功能与普通的浏览器无异。 二、在Python中使用Selenium获取QQ空间好友说说 之前使用pip安装好了selenium,直接在代码中import即可。 下面我们以一个实际的例子——获取一个QQ空间好友的说说信息,来简单讲解一下Selenium+Phantomjs的使用。 我们需要爬取的页面时这样的: QQ空间好友说说的链接为:/{好友QQ号}/311我们抓取他发的说说的时间和内容。 python3运行代码 依旧先上代码: # -*- coding:utf-8 -*- from bs4 import BeautifulSoup from selenium import webdriver import time # #使用Selenium的webdriver实例化一个浏览器对象,在这里使用Phantomjs # driver = webdriver.PhantomJS(executable_path=rD:\phantomjs-2.1.1-windows\bin\phantomjs.exe) # #设置Phantomjs窗口最大化 # driver.maximize_window() # 登录QQ空间 def get_shuoshuo(qq): ? ?chromedriver = rD:\soft\chromedriver_win32\chromedriver.exe ? ?driver = webdriver.Chrome(chromedriver) ? ?#使用get()方法打开待抓取的URL ? ?driver.get(/{}/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 ?
文档评论(0)