利用Selenium实现动态渲染页面的爬取------Selenium的安装与使用

JS动态渲染的页面不只是Ajax,还有其他的,这就不能用requests模拟Ajax请求了,我们就得使用另一种方法------利用Selenium来爬取网页。

那么什么是Selenium呢???请戳-------什么是Selenium

如何安装

 使用Selenium需要安装Selenium库和webdriver

安装Selenium:

pip install selenium

安装webdriver

因为我的电脑是win10的,我直接用的Edge浏览器,具体的安装方式我参考了-----如何安装Edge的webdriver

以上就是Selenium的安装了 

 如何使用

 一个简单的实例

from selenium import webdriver

声明浏览器对象,把b看作是一个浏览器会更好理解一点
b = webdriver.Edge()

访问界面
b.get("https://www.baidu.com")

打印网页的源代码
print(b.page_source)

关闭浏览器
b.close()

上面是一个简单的实例,下面主要介绍如何查找节点以及节点交互并最终实现百度自动搜索关键词

 查找结点

查找节点的方式有很多种,我一般会用比较熟悉的这几种,用个例子来更好的理解如何查找结点

具体的查找代码如下:

input_tag1 = b.find_element_by_id("kw")
input_tag2 = b.find_element_by_name("wd")
input_tag3 = b.find_element_by_class_name("s_ipt")
input_tag4 = b.find_element_by_xpath("//input[@class = 's_ipt']")
input_tag5 = b.find_element_by_css_selector(".s_ipt")

 我基本上就是靠这五种查找方式找到所需要的标签

我有个方法告诉可以快速找到,请看下图:

还有zuizuizuizuizui重要de一点,就是 b.find_element_by_css_selector(".s_ipt")只能查找一个节点,在把element变成elements就会查找所有节点 b.find_elements_by_css_selector(".s_ipt")

 还有一种方式:

b.find_element(By.ID,"kw")

这种方式把通过那种方法作为参数写在函数里面,这样的灵活性很大

接下我们说说节点交互:通俗的讲就是让浏览器执行一些事情,比如输入文字,点击按钮,清空文字等操作!

当我们找到input标签后,假设为inputtag变量

inputtag.send_key("python")------在input标签中输入python

inputtag.clear()------清除input标签中的信息

若遇到按钮 

button.click()------点击按钮  

说了这么多的基本知识点,来实际操作一下------让百度自己去搜索python关键词

参考代码:

from selenium import webdriver
import time


b = webdriver.Edge()
b.get("https://www.baidu.com")
input_tag1 = b.find_element_by_id("kw")
input_tag1.send_keys("苹果")
time.sleep(3)
input_tag1.clear()
input_tag1.send_keys("python")
button = b.find_element_by_id("su")
button.click()
time.sleep(10)
b.close()


 这短短的代码就实现了浏览器的自动化,这样我们就能打印其中的源代码,获取我们所需要的信息!写一篇接着讲述Selenium爬取动态网页的知识!

有兴趣的小伙伴可以一起交流哦!!

猜你喜欢

转载自blog.csdn.net/yanzhiguo98/article/details/86667051
今日推荐