需求背景:

很多网页通过复杂的JS函数组合,来实现对信息的加密、异步信息处理等,导致很难分析出网页接口。

那么最快速度的实现爬虫功能,是模拟浏览器的行为,加载运行JS,才能破解页面。

模拟浏览器行为,在python中的最佳实践方案是使用selenium包。被模拟的浏览器可以使用chromedriver(有界面浏览器)或者phantomjs(无界面浏览器)。

所有复杂的登录、JS加密、AJAX异步,如果无法分析出网页接口,都可以使用selenium+browserdriver方案,来模拟浏览器上网。

知识点

一、什么是selenium?

selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。

selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。

selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。

二、如果配置被模拟的浏览器?

那chromedriver举例

先在百度搜chromedriver,并且下载到本地。(朱毅chromedriver.exe对应的版本要和实际安装的chrome.exe版本一致。)

三、举例一段模拟登陆某个网页,并且获取cookies的过程

下面是一段登陆网盘的模块。如果cookies是空,那么就使用selenium打开网页登陆一次保存cookies。如果不空,那么就直接使用缓存中的cookies。

1 from etc importjboxenv2 from selenium importwebdriver3 from selenium.webdriver.common.by importBy4 from selenium.webdriver.support importexpected_conditions as EC5 from selenium.webdriver.support.wait importWebDriverWait6

7 logger =jboxenv.JBOX_LOGGER8 __jbox_cookies ={}

12 __header ={13 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36'}14

15

16 defget_user_cookies(username, password):17 '''

18 获取JBOX的登录cookies19 模块第一次使用时通过账号密码获取cookie20 登录成功以后再申请cookie,读取模块中的缓存21 :param username: 用户名22 :param password: 密码23 :return: 返回一个dict,保存了cookies字典24 '''

25 #打开首页获取cookies

26 global __jbox_cookies

27 if __jbox_cookies.keys():28 return __jbox_cookies

29 else:30 driver = webdriver.Chrome(r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')31 try:32 driver.get("http://pan.jd.com/")33 name = driver.find_element_by_id('account')34 name.send_keys(username)35 psd = driver.find_element_by_id('password')36 psd.send_keys(password)37 btn = driver.find_element_by_class_name('btnsubmint')38 btn.click()39 #等待新页面出现的某个元素出现

40 wait = WebDriverWait(driver, 10)41 wait.until(EC.presence_of_element_located((By.ID, 'showMine')))42 if len(driver.get_cookies())>0:43 for c indriver.get_cookies():44 __jbox_cookies[c.get('name')] = c.get('value')45 finally:46 driver.close()47 #如果没有登录成功,就提醒需要重新登录

48 if not __jbox_cookies.keys():49 logger.error('通过登录JBOX申请cookies,登录结果:失败')50 print(__jbox_cookies)51 return __jbox_cookies

52

53

54 if __name__ == '__main__':55 print(get_user_cookies('shwujiang', 'Fig@2016092404'))

python 模拟浏览器selenium_python爬虫10:使用selenium模拟浏览器登录账号相关推荐

  1. python 模拟浏览器selenium_python爬虫:使用Selenium模拟浏览器行为

    前几天有位微信读者问我一个爬虫的问题,就是在爬去百度贴吧首页的热门动态下面的图片的时候,爬取的图片总是爬取不完整,比首页看到的少.原因他也大概分析了下,就是后面的图片是动态加载的.他的问题就是这部分动 ...

  2. python 模拟浏览器selenium 微信_Spider-Python爬虫之使用Selenium模拟浏览器行为

    分析 他的代码比较简单,主要有以下的步骤:使用BeautifulSoup库,打开百度贴吧的首页地址,再解析得到id为new_list标签底下的img标签,最后将img标签的图片保存下来. header ...

  3. python 模拟浏览器selenium_从零开始写Python爬虫 --- 3.1 Selenium模拟浏览器

    本来说好要写Mechanize模拟浏览器的,结果一看居然只支持2.x版本的Python,而且已经长久没有更新维护了,本着学新不学旧的原则,我决定跳过他,直接开学Selenium(其实就是我懒,逃 Se ...

  4. python 浏览器模拟手机_Python爬虫关于移动端模拟

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云,作者:测试小兵 坚持梦想 就算所有人都不支持你.这条路会很曲 ...

  5. 网络爬虫pyppeteer、selenium模拟浏览器抓取数据

    项目场景: 1.抓取数据时,响应状态码为412,即状态码412含义为:Precondition Failed,服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个.这个状态码允许客户端 ...

  6. python 无头浏览器xhr 文件_Python对Selenium调用浏览器进行封装包括启用无头浏览器,及对应的浏览器配置文件...

    """ 获取浏览器 打开本地浏览器 打开远程浏览器 关闭浏览器 打开网址 最大化 最小化 标题 url 刷新 python对selenium封装浏览器调用 ------b ...

  7. python自动输入账号密码_Python如何基于selenium实现自动登录博客园

    这篇文章主要介绍了Python如何基于selenium实现自动登录博客园,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要做的准备: 本文章是使用 ...

  8. Python用selenium实现自动登录账号,密码

    1.今天的网站是学习通来测试登录 2.内容如下 (1).登录网站 (2).找标签我们可以根据id标签找到账号登录入口 我们可以根据id标签找到账号密码入口 登录标签也可以通过id找到 代码如下 fro ...

  9. python 如何调试uc浏览器_Python爬虫教程-10-UserAgent和常见浏览器UA值

    有时候使用爬虫会被网站封了IP,所以需要去模拟浏览器,隐藏用户身份, UserAgent包含浏览器信息,用户身份,设备系统信息 UserAgent:用户代理,简称UA,属于headers的一部分,服务 ...

最新文章

  1. android-sqlite小实例
  2. python简单界面实现-python实现的简单窗口倒计时界面实例
  3. 如何将视频设置为网页背景
  4. Microsoft Visual Studio Code
  5. html页面可以用在webview,使用WebView加载HTML代码
  6. 图片底侧空白缝隙解决方案(HTML、CSS)
  7. spdlog: undefined reference to `fmt::SystemError::init(int, fmt::BasicCStringRef<char>, fmt::ArgList
  8. 【codevs2333】【BZOJ2002】弹飞绵羊[HNOI2010](分块)
  9. 计算机excer试题,计算机电子表格excel练习题
  10. 怎么使用计算机公式,在excel怎么运用计算公式进行运算?
  11. html caption属性的值,如何设置caption属性
  12. python爬取LOL皮肤
  13. 哈工大人工智能研究院院长刘劼:打造从科研到产业的创新生态
  14. IP地址和域名的关系
  15. 5.8 使用轮廓化描边命令制作心形艺术图标 [Illustrator CC教程]
  16. Matlab 将计算结果制作成 gif 动画
  17. 在团体沙盘游戏实操中分析“自我、本我、超我”
  18. 计算机的硬盘 u盘启动,【电脑bios设置硬盘启动】电脑bios设置光驱启动_电脑bios设置u盘启动...
  19. 百舸争流,通信云市场还有哪些变数?
  20. Vue3 + Element-Plus upload组件封装限制上传数量,再次上传则覆盖

热门文章

  1. 达人评测 r7 7730u和i7 12700h差距 锐龙r77730u和酷睿i712700h对比
  2. 微信可以设置雪花昵称和彩色昵称了
  3. 三、道阻且长之单例模式
  4. Vue实现购物车全选及价格计算
  5. GetLastError函数封装显示具体错误信息
  6. 7. 伪随机数的生成
  7. 操作系统【用户接口】命令解释程序的主要功能、系统调用与一般过程调用的不同之处、系统调用的参数传递方式、系统调用的处理步骤
  8. 华为鸿蒙系统烤箱,华为鸿蒙OS系统如何支持形态各异的产品?
  9. vs怎么配置c语言codemac,在Mac上使用vs-code快速上手c语言学习(入门文,老鸟退散)...
  10. 新知实验室 腾讯云实时音视频产品体验