Python网络爬虫之动态网络爬取(二)

动态网络爬取(二)

一.入门操作

1. 获取页面内容

driver.get("输入网站")

2. 创建浏览器对象

driver=webdriver.PhantomJS()

3.获取页面名为wrapper的id标签的文本内容

data=driver.find_element_by_id("wrapper").text
data

4.打印页面标题

print(driver.tltle)

5.生成当前页面快照并保存

driver.save_screenshot("*.png")
True

6.打印页面源码

print(driver.page_source)

二.鼠标动作链

1.导入ActionChains类

from selenium.webdriver import ActionChains

2.鼠标移动到元素位置

ac=driver.find_element_by_xpath('element')
ActionChains(driver).move_to_element(ac).perform()

3.在元素位置单击

ac=driver.find_element_by_xpath('elementA')
ActionChains(driver).move_to_element(ac).click(ac).perform()

4.在元素位置双击

ac=driver.find_element_by_xpath('elementB')
ActionChains(driver).move_to_element(ac).double_click(ac).perform()

5.在元素位置右击

ac=driver.find_element_by_xpath('elementC')
ActionChains(driver).move_to_element(ac).context_click(ac).perform()

6.在元素位置左键单击并保持

ac=driver.find_element_by_xpath('elementD')
ActionChains(driver).move_to_element(ac).click_and_hold(ac).perform()

7.将元素拖动到另一位置

ac1=driver.find_element_by_xpath('elementE')
ac2=driver.find_element_by_xpath('elementE')
ActionChains(driver).drag_and_drop(ac1,ac2).perform()

三.填充表单

对于下拉列表框,selenium专门提供了select类来处理,该类提供了选择下拉列表框的3种方式:

#导入select类
from selenium.webdriver.support.ui import Select
#找到下拉框元素
select=Select(driver.find_element_by_name('status')
#选择下拉框的某一个选项
select.select_by_index(0)#根据索引选择
select.select_by_value("0")#根据值选择
select.select_by_visible_text(u"未审核")#根据文字选择

取消全部选择

select.deselect_all()

四.弹窗处理

alert=driver.switch_to_alert()

五.页面切换

切换窗口的方法:

driver.switch_to.window('this is window name')

也可以使用window_handles()方法来获取每个窗口的操作对象:

for handle in driver.window_handles:
driver.switch_to_window(handle)

六.页面前进与后退

driver.forward() #前进
driver.back()    #后退

七.获取页面Cookies

获取cookies:

for cookies in driver.get_cookies():
print("%s=%s;"%(cookies['name'],cookies['values']))

删除Cookies:

driver.delete_cookies("BAIDUID")#根据cookies名称删除
driver.delete_all_cookies()#删除该页面上的所有cookies

八.页面等待

1.显示等待
显示等待指定某个条件,然后设置最长等待时间。如果这个时间结束时还没有找到元素,就会抛出异常

WebDriverWait(driver,timeout,poll_frequency=0.5,
ignored_excepptions=None)

2.隐式等待
只要超出时间,就会抛出异常,较暴力,不再赘述

实例:模拟登录豆瓣,并截图登录后的页面

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import getpass
username=getpass.getpass('username')
password=getpass.getpass('password')


driver=webdriver.Chrome()
driver.get("https://www.douban.com/")

iframe=driver.find_element_by_xpath("//div[@class='login']/iframe")
driver.switch_to_frame(iframe)

driver.find_element_by_xpath('//li[@class="account-tab-account"]').click()

driver.find_element_by_id("username").send_keys(username)
driver.find_element_by_id("password").send_keys(password)

driver.find_element_by_xpath("//a[contains(@class,'btn-account')]").click()

try:
    element=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'wrapper')))
    print("ok")
    driver.save_screenshot("2018060358.png")

    print(driver.page_source)
    print("ok!")
except Exception as e:
    print(e)
finally:
    driver.quit()


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值