爬虫笔记5 向动态HTML迈进,selenium入门,获取响应后的element代码以及网页COOKIE

1.加载网页代码

  • from selenium import webdriver

使用游览器(支撑绝大多数游览器)

  • driver = webdriver.PhantomJS()

游览器进行游览

  • driver.get(“http://www.baidu.com”)

由于PhantomJS无界面,可以使用下面代码保存界面

  • driver.save_screenshot(“百度.png”)

2.定位和操作

在这里插入图片描述
支持所有element的搜寻比如id(id用的最多)(send_keys是输入,可以用来输入账户密码)

  • driver.find_element_by_id(“kw”).send_keys(“python”)

click()是模拟点击

  • driver.find_element_by_id(“su”).click()

get_attribute()获取对应元素的属性

  • driver.find_element_by_id(“su”).get_attribute(“src”)

text获取文本

  • driver.find_element_by_id(“su”).text

主要定位用法

element是返回一个元素
elements返回一个列表的元素

语法 作用
driver.find_element_by_id 通过查找id,返回一个元素
driver.find_elements_by_xpath 通过使用xpath语法返回一个列表
driver.find_elements_by_link_text 通过匹配text来返回一个列表,比如“>下一页”
driver.find_elements_by_partial_link_text 通过匹配一段text(不用完整text)来返回一个列表,比如"下一页"
driver.find_elements_by_tag_name 匹配name,返回一个列表
driver.find_elements_by_class_name 匹配class,返回一个列表
driver.find_elements_by_css_selector 匹配css选择器(往里面丢CSS选择器语法),返回一个列表

CSS3选择器语法:
W3SCHOOL_CSS3选择器
ps:感觉css_selector用得不多,可能最多的用法就是找密码了find_element_by_css_selector("input[type='password']")

注意

如果使用element寻找,没有找到对应element则会报错
使用elements寻找,没有找到对应的elements则会返回空列表
怎么写才能避免报错,就要利用这两个机制

3.查看请求信息

获取element源代码(这是属性无返回)

  • driver.page_source

获取cookies

  • driver.get_cookies()

获取此时的网页url地址

  • driver.current_url

用get_cookies的方法生成一个字典(方便requests使用)

{cookie['name']:cookie['value'] for cookie in driver.get_cookies()}

4.退出

  • driver.close() 推出当前界面,不常用,功能相当于关闭游览器的一个界面
  • driver.quit() 关闭游览器

5.关于selenium针对iframe的解决方法

爬虫笔记5 向动态HTML迈进,selenium入门,获取响应后的element代码以及网页COOKIE_第1张图片
因为很多网站都会在主界面里面嵌套iframe或者frame导致selenium无法找到对应的元素,所以得通过以下方法先定位到iframe

#参数既可以填id值,也可以填name值
driver.switch_to.frame("login_frame")

你可能感兴趣的:(爬虫)