动态网页爬虫

本文介绍了动态网页爬虫的概念,讲解了AJAX技术在网页异步更新中的作用。并详细阐述了动态网页爬虫的解决方案,特别是利用selenium和chromedriver模拟浏览器行为。文中还涉及到selenium的各种操作,如关闭浏览器、定位元素、表单操作、行为链、处理cookie、等待策略、切换窗口以及设置代理等实用技巧。
摘要由CSDN通过智能技术生成

什么是动态网页爬虫和AJAX技术:

  1. 动态网页,是网站在不重新加载的情况下,通过ajax技术动态更新网站中的局部数据。比如拉勾网的职位页面,在换页的过程中,url是没有发生改变的,但是职位数据动态的更改了。
  2. AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML。前端与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用Ajax)如果需要更新内容,必须重载整个网页页面。因为传统的在传输数据格式方面,使用的是XML语法。因此叫做AJAX,其实现在数据交互基本上都是使用JSON。使用AJAX加载的数据,即使使用了JS,将数据渲染到了浏览器中,在右键->查看网页源代码还是不能看到通过ajax加载的数据,只能看到使用这个url加载的html代码。

动态网页爬虫的解决方案:

  1. 直接分析ajax调用的接口。然后通过代码请求这个接口。
  2. 使用Selenium+chromedriver模拟浏览器行为获取数据。

selenium和chromedriver:

使用selenium关闭浏览器:

  1. driver.close():关闭当前的页面。
  2. driver.quit():关闭整个浏览器。

示例:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
print(driver.page_source)
driver.close()

selenium定位元素:

  1. find_element_by_id:根据id来查找某个元素。
  2. find_element_by_class_name:根据类名查找元素。
  3. find_element_by_name:根据name属性的值来查找元素。
  4. find_element_by_tag_name:根据标签名来查找元素。
  5. find_element_by_xpath:根据xpath语法来获取元素。
  6. find_element_by_css_selector:根据css选择器选择元素。

要注意,find_element是获取第一个满足条件的元素。find_elements是获取所有满足条件的元素。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# InputTag = driver.find_element_by_id('kw')  #通过id查找
# InputTag = driver.find_element_by_class_name('s_ipt')  #通过类名查找
# InputTag = driver.find_element_by_name('wd')  #通过name查找
# InputTag = driver.find_element_by_tag_name('input')  #通过标签名查找
# InputTag = driver.find_element_by_xpath('//input[@id="kw"]')  #通过标签名查找
InputTag = driver.find_element_by_css_selector('#form #kw')  #通过标签名查找

InputTag.send_keys('python')

selenium表单操作:

  1. webelement.send_keys:给输入框填充内容。
  2. webelement.click:点击。
  3. 操作select标签:需要首先用from selenium.webdriver.support.ui import Select来包装一下选中的对象,才能进行select
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值