如何使用Selenium实现自动化控制浏览器爬取指定网站数据

前言

需要借助Python中的第三方库selenium才可以实现。

*此篇博客仅供学习! *
*此篇博客仅供学习! *
*此篇博客仅供学习! *

操作步骤

下载所需环境

下载第三方库 -> selenium(这里我使用CMD终端进行下载
1.找到当前脚本所在的目录下(我是在D:\xiangmu\Web crawler
2.打开CMD窗口输入 pip install 第三方库名 -i 镜像网址
在这里插入图片描述
这里提供阿里云的PyPI镜像网址:https://mirrors.aliyun.com/pypi/simple
3.下载完成后可以继续输入命令 pip list 查看目录下是否有刚下载的第三方包名
在这里插入图片描述

导入并使用到达指定网站


推荐使用谷歌浏览器
dr = webdriver.Chrome()
使用谷歌浏览器
dr.maximize_window()
打开谷歌浏览器后全屏显示
dr.get(‘https://www.dongchedi.com/’)
输入网站网址并使用get方法到达 这里是懂车帝的网址
time.sleep(1)
到达网站加载完成后等待一秒钟

模拟真人操作并爬去一些数据或信息

在这里插入图片描述
dr.find_element(By.XPATH,“//div[@id=‘__next’]/header/div/div/div/input”).send_keys(“小米SU7”)
找到输入框的标签并使用send_keys模拟键盘输入数据
XPATH用法:
//<1>[@<2>=‘<3>’]/<4>
在这里插入图片描述往上面定位到一个标签 div 它有详细的 id 值 _next
<1>:标签名称
<2>:它的属性是id就是id是class就是class
<3>:属性的值
<4>:你需要一直向下定位到你输入框的标签,例如上图:
div向下的标签是header在向下是div一直定位到输入框的标签
注意:标签的展开与关闭!没展开的标签并不是需要定位的标签
在XPATH中后面一个标签就以/分割开
dr.find_element(By.XPATH,“//div[@id=‘__next’]/header/div/div/div/button[text()=‘搜索’]”).click()
同样的定位方法找到搜索按钮的标签,使用click进行点击
点击之后页面就会进行跳转 那么需要在给selenium一个窗口否则接下来操作都会无效
代码如下:
windows = dr.window_handles
dr.switch_to.window(windows[1])
在第一个打开网站操作已经是第一个窗口了在python中第一个下标为0
time.sleep(1)
等待一秒钟时间
想要爬去信息的话找到定位标签print()就可以打印在编辑器中了

想要爬去的数据不止一个

使用 find_elements 方法 在循环便利
在这里插入图片描述
我想要拿到四个标签中的网址
URL = dr.find_elements(By.XPATH,“//section[@class=‘tw-ml-16 tw-flex tw-items-center tw-pt-3’]/a”)
for w in URL:
print(w.get_attribute(“href”))
get_attribute方法拿去指定属性后面的值
find_element与find_elements的区别是前者是拿取单个值的后者则是拿取多个值的

页面滑动到顶部

在定位标签时记得注意我们看不到的按钮(要滑动滚轮)代码也看不到
wg = dr.find_element(By.XPATH,“//div/span[text()=‘外观’]”).click
我要点击外观按钮
js_gd = “window.scrollTo(0,0)”
使页面自动滚动到顶部(0,0)是窗口左上角的坐标
dr.execute_script(js_gd)
执行JS代码
XPATH中的[text()='外观']是用来更加准确定位的
在这里插入图片描述

修改标签的属性值

在这里插入图片描述
如上图第三个

  • 标签中style属性的意思就是隐藏 如何修改
    if style.get_attribute(“style”):
    del_js = “arguments[0].removeAttribute(‘style’)”
    dr.execute_script(del_js,style)
  • 标签优先级

    在定位标签是一定要注意哪个标签在前,你要拿去哪个标签
    在这里插入图片描述
    我想要拿的标签是在第二个

  • 标签中第二个

    我在XPATH定位标签是就要详细一点
    第二个
  • 标签就要写/li[2]
    第二个
    标签就要写/div[2]
  • 总结

    以上都是在使用selenium时容易遇到的几种问题
    通过以上方法可以实现简单网页抓取或自动化

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值