案例一:网站模拟登录

  1. # douban.py
  2.  
  3. from selenium import webdriver
  4. from selenium.webdriver.common.keys import Keys
  5. import time
  6.  
  7. driver = webdriver.PhantomJS()
  8. driver.get("http://www.douban.com")
  9.  
  10. # 输入账号密码
  11. driver.find_element_by_name("form_email").send_keys("xxxxx@xxxx.com")
  12. driver.find_element_by_name("form_password").send_keys("xxxxxxxx")
  13.  
  14. # 模拟点击登录
  15. driver.find_element_by_xpath("//input[@class='bn-submit']").click()
  16.  
  17. # 等待3秒
  18. time.sleep(3)
  19.  
  20. # 生成登陆后快照
  21. driver.save_screenshot("douban.png")
  22.  
  23. with open("douban.html", "w") as file:
  24. file.write(driver.page_source)
  25.  
  26. driver.quit()

案例二:动态页面模拟点击

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3.  
  4. # python的测试模块
  5. import unittest
  6. from selenium import webdriver
  7. from bs4 import BeautifulSoup
  8.  
  9. class douyuSelenium(unittest.TestCase):
  10. # 初始化方法
  11. def setUp(self):
  12. self.driver = webdriver.PhantomJS()
  13.  
  14. #具体的测试用例方法,一定要以test开头
  15. def testDouyu(self):
  16. self.driver.get('http://www.douyu.com/directory/all')
  17. while True:
  18. # 指定xml解析
  19. soup = BeautifulSoup(driver.page_source, 'xml')
  20. # 返回当前页面所有房间标题列表 和 观众人数列表
  21. titles = soup.find_all('h3', {'class': 'ellipsis'})
  22. nums = soup.find_all('span', {'class': 'dy-num fr'})
  23.  
  24. # 使用zip()函数来可以把列表合并,并创建一个元组对的列表[(1,2), (3,4)]
  25. for title, num in zip(nums, titles):
  26. print u"观众人数:" + num.get_text().strip(), u"\t房间标题: " + title.get_text().strip()
  27. # page_source.find()未找到内容则返回-1
  28. if driver.page_source.find('shark-pager-disable-next') != -1:
  29. break
  30. # 模拟下一页点击
  31. self.driver.find_element_by_class_name('shark-pager-next').click()
  32.  
  33. # 退出时的清理方法
  34. def tearDown(self):
  35. print '加载完成...'
  36. self.driver.quit()
  37.  
  38. if __name__ == "__main__":
  39. unittest.main()

案例三:执行 JavaScript 语句

1.隐藏百度图片

  1. from selenium import webdriver
  2.  
  3. driver = webdriver.PhantomJS()
  4. driver.get("https://www.baidu.com/")
  5.  
  6. # 给搜索输入框标红的javascript脚本
  7. js = "var q=document.getElementById(\"kw\");q.style.border=\"2px solid red\";"
  8.  
  9. # 调用给搜索输入框标红js脚本
  10. driver.execute_script(js)
  11.  
  12. #查看页面快照
  13. driver.save_screenshot("redbaidu.png")
  14.  
  15. #js隐藏元素,将获取的图片元素隐藏
  16. img = driver.find_element_by_xpath("//*[@id='lg']/img")
  17. driver.execute_script('$(arguments[0]).fadeOut()',img)
  18.  
  19. # 向下滚动到页面底部
  20. driver.execute_script("$('.scroll_top').click(function(){$('html,body').animate({scrollTop: '0px'}, 800);});")
  21.  
  22. #查看页面快照
  23. driver.save_screenshot("nullbaidu.png")
  24.  
  25. driver.quit()

2.模拟滚动条滚动到底部

  1. from selenium import webdriver
  2. import time
  3.  
  4. driver = webdriver.PhantomJS()
  5. driver.get("https://movie.douban.com/typerank?type_name=剧情&type=11&interval_id=100:90&action=")
  6.  
  7. # 向下滚动10000像素
  8. js = "document.body.scrollTop=10000"
  9. #js="var q=document.documentElement.scrollTop=10000"
  10. time.sleep(3)
  11.  
  12. #查看页面快照
  13. driver.save_screenshot("douban.png")
  14.  
  15. # 执行JS语句
  16. driver.execute_script(js)
  17. time.sleep(10)
  18.  
  19. #查看页面快照
  20. driver.save_screenshot("newdouban.png")
  21.  
  22. driver.quit()

  

Python爬虫开发【第1篇】【爬虫案例】的更多相关文章

  1. python网页爬虫开发之四-串行爬虫代码示例

    实现功能:代理.限速.深度.反爬 import re import queue import urllib.parse import urllib.robotparser import time fr ...

  2. Python爬虫开发与项目实战pdf电子书|网盘链接带提取码直接提取|

    Python爬虫开发与项目实战从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言与HTML基础知识引领读者入门,之后根据当前风起云涌的云计算.大数据热潮,重点讲述了云计算的相关内容及其在爬虫中的应 ...

  3. Python爬虫开发与项目实战

    Python爬虫开发与项目实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1MFexF6S4No_FtC5U2GCKqQ 提取码:gtz1 复制这段内容后打开百度 ...

  4. 洗礼灵魂,修炼python(72)--爬虫篇—爬虫框架:Scrapy

    题外话: 前面学了那么多,相信你已经对python很了解了,对爬虫也很有见解了,然后本来的计划是这样的:(请忽略编号和日期,这个是不定数,我在更博会随时改的) 上面截图的是我的草稿 然后当我开始写博文 ...

  5. 爬虫开发python工具包介绍 (1)

    本文来自网易云社区 作者:王涛 本文大纲: 简易介绍今天要讲解的两个爬虫开发的python库 详细介绍 requests库及函数中的各个参数 详细介绍 tornado 中的httpcilent的应用 ...

  6. Python 3网络爬虫开发实战》中文PDF+源代码+书籍软件包

    Python 3网络爬虫开发实战>中文PDF+源代码+书籍软件包 下载:正在上传请稍后... 本书书籍软件包为本人原创,在这个时间就是金钱的时代,有些软件下起来是很麻烦的,真的可以为你们节省很多 ...

  7. Python 3网络爬虫开发实战中文 书籍软件包(原创)

    Python 3网络爬虫开发实战中文 书籍软件包(原创) 本书书籍软件包为本人原创,想学爬虫的朋友你们的福利来了.软件包包含了该书籍所需的所有软件. 因为软件导致这个文件比较大,所以百度网盘没有加速的 ...

  8. Python 3网络爬虫开发实战中文PDF+源代码+书籍软件包(免费赠送)+崔庆才

    Python 3网络爬虫开发实战中文PDF+源代码+书籍软件包+崔庆才 下载: 链接:https://pan.baidu.com/s/1H-VrvrT7wE9-CW2Dy2p0qA 提取码:35go ...

  9. 《Python 3网络爬虫开发实战中文》超清PDF+源代码+书籍软件包

    <Python 3网络爬虫开发实战中文>PDF+源代码+书籍软件包 下载: 链接:https://pan.baidu.com/s/18yqCr7i9x_vTazuMPzL23Q 提取码:i ...

  10. Python 3网络爬虫开发实战书籍

    Python 3网络爬虫开发实战书籍,教你学会如何用Python 3开发爬虫   本书介绍了如何利用Python 3开发网络爬虫,书中首先介绍了环境配置和基础知识,然后讨论了urllib.reques ...

随机推荐

  1. SCOI2013 数数

    题目描述 题解: 很玄学的一道数位$dp$,看了很多篇题解才懂. 直接挂$l$的题解. 代码: #include<cstdio> #include<cstring> #incl ...

  2. mysql alter修改数据库表结构用法

    1.alter操作表字段 (1)增加字段 alter table 表名 add 字段名 字段类型: alter table student add name varchar(10): (2)修改字段 ...

  3. c++_等差素数列

    标题:等差素数列 2,3,5,7,11,13,....是素数序列.类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列.上边的数列公差为30,长度为6. 2004年 ...

  4. matlab ()的用法

    经常见到标识符+(),用法比如阵列Y().函数f()..... 时机到了,会总结一下.

  5. 大数据学习——Linux-SSH报错:Could not resolve hostname centos02: Temporary failure in name resolution

    https://blog.csdn.net/mcb520wf/article/details/83303792 随笔异常 ssh: Could not resolve hostname centos0 ...

  6. python--如何在线上环境优雅的修改配置文件?

    1.如何在线上环境优雅的修改配置文件? 原配置文件 #原配置文件 global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 ...

  7. [USACO10FEB]慢下来Slowing down

    线段树  树的dfs序 来自   洛谷 P1982   的翻译 by  GeneralLiu 来自 jzyz 的翻译 %mzx 线段树  dfs序 数据结构的应用 “数据结构 是先有需求 再有应用” ...

  8. [luoguP2948] [USACO09OPEN]滑雪课Ski Lessons(DP)

    传送门 f[i][j]表示i时刻能力值为j的最大滑雪数 显然f[0][1]=0,开始搜索 三种转移: ①美美的喝上一杯**:f[i+1][j]=max(f[i+1][j],f[i][j]) ②滑雪,f ...

  9. [luoguP3694] 邦邦的大合唱站队/签到题(状压DP)

    传送门 来自kkk的题解: 70分做法:枚举每个学校顺序,暴力. 100分:状压dp.从队列头到尾DP, 状态:f[i]表示i状态下最小的出列(不一致)的个数. 比如f[1101]表示从头到位为1/3 ...

  10. loadrunner 并发操作集合点配置

    在loadrunner的虚拟用户中,术语concurrent(并发)和simultaneous(同时)存在一些区别,concurrent 是指虚拟场景中参于运行的虚拟用户.而simultaneous与 ...