python3爬虫学习(7)

文章目录[x]
  1. 0.1:Selenium和PhantomJS
  2. 0.2:模拟豆瓣登录

动态HTML处理---Selenium模拟豆瓣登录

先大致了解一下动态HTML

其实也可以说是异步加载技术,举个例子假如你在网页上看到某些文字,当你检查源代码时你发现并没有这些文字,那么该网页很有可能使用了异步加载技术。

Selenium和PhantomJS


  • Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。
  • PhantomJS 是一个基于Webkit的“无界面”(headless)浏览器,它会把网站加载到内存并执行页面上的 JavaScript。

注意这里所说的无界浏览器指的是看不到界面,但是程序已经在内存中运行。

具体的安装教程在这里我推荐一篇文章(linux环境下):https://www.jianshu.com/p/54dbb6b18ecd

还需要说的是如果安装Selenium默认版本,则不能使用PhantomJS,所以安装时应该选用较低版本。

看一些基本用法

先看一下下面的基本用法

 

# coding=utf-8
from selenium import webdriver
import time

# 实例化一个浏览器
driver = webdriver.Chrome()
# driver = webdriver.PhantomJS()

driver.get("http://www.baidu.com")
#最大化窗口
driver.maximize_window()

#元素定位
# driver.find_element_by_id("kw").send_keys("python")
# driver.find_element_by_id("su").click()
# driver.save_screenshot("./baidu.png")

cookie = driver.get_cookies()
print(cookie)
print("*"*50)
cookie = {i["name"]:i["value"] for i in cookie}
print(cookie)

time.sleep(3)

# 退出浏览器
driver.quit()

模拟豆瓣登录


 

先看一下源码(这里没用面向对象)

 

# coding=utf-8
from selenium import webdriver
import time
#实例化

driver = webdriver.Chrome()

driver.get("https://www.douban.com/")
time.sleep(1)
# 这里是重点,就是先转到子框架
driver.switch_to.frame(driver.find_elements_by_tag_name('iframe')[0])
# bottom2 = driver.find_element_by_xpath('/html/body/div[1]/div[1]/ul[1]/li[2]')
# 然后就是先点击按钮转到账号密码输入框
bottom = driver.find_element_by_class_name("account-tab-account")
bottom.click()
time.sleep(1)
# 进行账号密码输入
# 也可以在中间加一个clear()函数清空输入框
driver.find_element_by_id("username").send_keys("你的账号")
driver.find_element_by_id("password").send_keys("密码")

time.sleep(3)

driver.find_element_by_class_name("account-form-field-submit ").click()

cookie = {i["name"]:i["value"] for i in driver.get_cookies()}
print(cookie) # 打印得到的cookie

time.sleep(3)
driver.quit()

 

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

Title - Artist
0:00