3-Python爬虫-动态HTML/Selenium+PhantomJS/chrome无头浏览器-chromedriver

动态HTML

爬虫跟反爬虫

动态HTML介绍

  • JavaScrapt
  • jQuery
  • Ajax
  • DHTML
  • Python采集动态数据
    • 从Javascript代码入手采集
    • Python第三方库运行JavaScript,直接采集你在浏览器看到的页面

Selenium + PhantomJS

  • Selenium: web自动化测试工具
  • PhantomJS(幽灵)
  • Selenium 库有有一个WebDriver的API
  • WebDriver可以跟页面上的元素进行各种交互,用它可以来进行爬取
  • 案例 v36
  • chrome + chromedriver
    • 下载安装chrome: 下载+安装
    • 下载安装chromedriver:
  • Selenium操作主要分两大类:
    • 得到UI元素
      • find_element_by_id
      • find_elements_by_name
      • find_elements_by_xpath
      • find_elements_by_link_text
      • find_elements_by_partial_link_text
      • find_elements_by_tag_name
      • find_elements_by_class_name
      • find_elements_by_css_selector
    • 基于UI元素操作的模拟
      • 单击
      • 右键
      • 拖拽
      • 输入
      • 可以通过导入ActionsChains类来做到
    • 案例37

      案例v36
      ```
      '''
      通过webdriver操作进行查找1
      '''

from selenium import webdriver
import time

通过Keys模拟键盘

from selenium.webdriver.common.keys import Keys

操作哪个浏览器就对哪个浏览器建一个实例

自动按照环境变量查找相应的浏览器

driver = webdriver.PhantomJS()

如果浏览器没有在相应环境变量中,需要指定浏览器位置

driver.get("http://www.baidu.com")

通过函数查找title标签

print("Title: {0}".format(driver.title))


**案例v37**

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys

可能需要手动添加路径

driver = webdriver.Chrome()

url = "http://www.baidu.com"

driver.get(url)

text = driver.find_element_by_id('wrapper').text
print(text)
print(driver.title)

得到页面的快照

driver.save_screenshot('index.png')

id="kw" 的是百度的输入框,我们得到输入框的ui元素后直接输入“大熊猫"

driver.find_element_by_id('kw').send_keys(u"大熊猫")

id="su"是百度搜索的按钮,click模拟点击

driver.find_element_by_id('su').click()

time.sleep(5)
driver.save_screenshot("daxiongmao.png")

获取当前页面的cookie

print(driver.get_cookies())

模拟输入两个按键 ctrl+ a

driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a')

ctr+x 是剪切快捷键

driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'x')

driver.find_element_by_id('kw').send_keys(u'航空母舰')
driver.save_screenshot('hangmu.png')

driver.find_element_by_id('su').send_keys(Keys.RETURN)

time.sleep(5)
driver.save_screenshot('hangmu2.png')

清空输入框 , clear

driver.find_element_by_id('kw').clear()
driver.save_screenshot('clear.png')

关闭浏览器

driver.quit()
```

猜你喜欢

转载自www.cnblogs.com/xuxaut-558/p/10031382.html
今日推荐