selenium也可用于爬虫,有时它比request库要强,这里我们就爬取boos招聘网站,爬过的同学就知道boos的反爬很难,如果不是大佬级别的人,很难攻克它的反爬机制,boos的cookie好像是每隔几分钟就失效,它一直在变,非常的烦,使用selenium能很好的绕过他的这个反爬机制。

这里可能有一些地方表达不是太清楚或者有误,还请多多包涵

首先安装selenium库

pip install selenium

查看自己电脑上的浏览器版本

谷歌浏览器:设置 -> 关于Chrome就可以看到谷歌浏览器的版本

接下来就需要下载自己电脑上所对应的浏览器版本,下面是下载链接

谷歌

火狐

如果在下载过程中有什么疑问的可在留言区问我

把下载好的浏览器驱动放在py文件同级目录下

1、导入所需要的模块

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

2、打开浏览器

# 打开谷歌驱动
driver = webdriver.Chrome()
# 打开火狐驱动, 下载的是哪个驱动就用所对应的驱动名打开,这里我使用的是谷歌
# driver = webdriver.Firefox()
# 输入需要搜索的网址,这里直接输入boos的首页网址,也可以根据自己的需要来输入对应的网址,修改括号中的网址即可
driver.get("https://www.zhipin.com/")

3、在输入框中输入想要搜索的内容

F12检查,用小箭头定位到输入框,查看input的class属性值

定位一个元素 定位多个元素 含义
find_element_by_id find_elements_by_id 通过元素id定位
find_element_by_name find_elements_by_name 通过元素name定位
find_element_by_xpath find_elements_by_xpath 通过xpath表达式定位
find_element_by_link_text find_elements_by_link_tex 通过完整超链接定位
find_element_by_partial_link_text find_elements_by_partial_link_text 通过部分链接定位
find_element_by_tag_name find_elements_by_tag_name 通过标签定位
find_element_by_class_name find_elements_by_class_name 通过类名进行定位
find_elements_by_css_selector find_elements_by_css_selector 通过css选择器进行定位

send_keys()是模拟键盘输入

find_element_by_css_selector()就是类似于把鼠标放到某处,这里是把鼠标放到输入框中。
# 输入搜索内容
driver.find_element_by_css_selector(".ipt-search").send_keys("python")

全自动,不需要自己输入

4、查看搜索内容

# # 模拟回车键
driver.find_element_by_css_selector(".ipt-search").send_keys(Keys.ENTER)

这里需要设置 driver.implicitly_wait(10) 等待10秒, 否则会报错。

# implicitly_wait(): 隐式等待
# 当使用了隐士等待执行测试的时候,如果
# WebDriver没有在
# DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常
# 换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找
# DOM,默认的时间是0
# 一旦设置了隐式等待,则它存在整个
# WebDriver
# 对象实例的声明周期中,隐式的等到会让一个正常响应的应用的测试变慢,
# 它将会在寻找每个元素的时候都进行等待,这样会增加整个测试执行的时间。
driver.implicitly_wait(10)

拿到属性名为job-list下面的每一个li,这里需要注意elements是加s的,因为是获取多个所以需要加s,如果是单个就直接使用element即可。


lis = driver.find_elements_by_css_selector(".job-list li")
print(lis)

这里我们爬取下图中圈起来的信息

for li in lis:# print(li)title = li.find_element_by_css_selector(".job-name").text   #岗位名称位置 = li.find_element_by_css_selector(".job-area").text薪资 = li.find_element_by_css_selector(".red").text经验 = li.find_element_by_css_selector(".job-limit p").textcompany = li.find_element_by_css_selector(".company-text .name a").text  #公司名称commpany_type = li.find_element_by_css_selector(".company-text p a").text    #公司分类print(title, 位置, 薪资, 经验, company, commpany_type)

接下来就是保存信息,我使用的是csv保存,在导入库的代码后输入如下代码

f = open("boos直聘.csv", "w", encoding="utf-8", newline="")
csv.writer(f).writerow(["职位", "位置", "薪资", "经验", "公司名", "类型"])

写入csv

csv.writer(f).writerow([title, 位置, 薪资, 经验, company, commpany_type])

参考文章:Python Selenium库的使用

代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import csvf = open("php_boos直聘.csv", "w", encoding="utf-8", newline="")
csv.writer(f).writerow(["职位", "位置", "薪资", "经验", "公司名", "类型"])# 打开谷歌驱动
driver = webdriver.Chrome()
# 打开火狐驱动, 下载的是哪个驱动就用所对应的驱动名打开,这里我使用的是谷歌
# driver = webdriver.Firefox()
# 输入需要搜索的网址,这里直接输入boos的首页网址,也可以根据自己的需要来输入对应的网址,修改括号中的网址即可
driver.get("https://www.zhipin.com/")# 输入搜索内容
driver.find_element_by_css_selector(".ipt-search").send_keys("php")#
# # 模拟回车键
driver.find_element_by_css_selector(".ipt-search").send_keys(Keys.ENTER)# 搜索全国
driver.find_element_by_link_text("全国").click()# 回车搜索
driver.find_element_by_css_selector(".ipt-search").send_keys(Keys.ENTER)
# driver.find_element_by_css_selector("#btn btn-search")# implicitly_wait(): 隐式等待
# 当使用了隐士等待执行测试的时候,如果
# WebDriver没有在
# DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常
# 换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找
# DOM,默认的时间是0
# 一旦设置了隐式等待,则它存在整个
# WebDriver
# 对象实例的声明周期中,隐式的等到会让一个正常响应的应用的测试变慢,
# 它将会在寻找每个元素的时候都进行等待,这样会增加整个测试执行的时间。
driver.implicitly_wait(10)def index():
#     # 获取所有的li标签lis = driver.find_elements_by_css_selector(".job-list li")# print(lis)for li in lis:# print(li)title = li.find_element_by_css_selector(".job-name").text位置 = li.find_element_by_css_selector(".job-area").text薪资 = li.find_element_by_css_selector(".red").text经验 = li.find_element_by_css_selector(".job-limit p").textcompany = li.find_element_by_css_selector(".company-text .name a").textcommpany_type = li.find_element_by_css_selector(".company-text p a").textprint(title, 位置, 薪资, 经验, company, commpany_type)csv.writer(f).writerow([title, 位置, 薪资, 经验, company, commpany_type])for j in range(10):index()driver.find_element_by_css_selector(".next").click()
driver.quit()

python使用selenium爬取boos,100%爬取成功,绕过cookie相关推荐

  1. 使用Python和selenium的Chromedriver模拟登陆爬取网站信息(beautifulsoup)

    爬取的信息很多,所以需要设置断点,在程序重启时能继续爬取.并且能在断掉之后自动重启. 1.setting.py 对爬取的常量进行设置 """ 基本信息设置 "& ...

  2. Python爬虫 selenium自动化 利用搜狗搜索爬取微信公众号文章信息

    少年最好的地方就是:虽然嘴上说要放弃,心底却总会憋着一口气.--刘同 文章目录 一.需求和网页分析 二.selenium爬虫 一.需求和网页分析 URL:https://weixin.sogou.co ...

  3. python 爬虫动态网页的区别_Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取...

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

  4. [python爬虫] Selenium爬取内容并存储至MySQL数据库

    前面我通过一篇文章讲述了如何爬取CSDN的博客摘要等信息.通常,在使用Selenium爬虫爬取数据后,需要存储在TXT文本中,但是这是很难进行数据处理和数据分析的.这篇文章主要讲述通过Selenium ...

  5. Python 不用selenium 带你高效爬取京东商品评论

    文章目录 一.项目说明 1.项目背景 2.项目环境 二.项目实施 1.项目分析 2.代码实现 导入模块和定义常量 爬取评论主体函数 主函数 三.项目分析和说明 1.运行测试 2.改进分析 3.其他说明 ...

  6. python爬取论坛图片_[python爬虫] Selenium定向爬取虎扑篮球海量精美图片

    前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员 ...

  7. python爬虫selenium和bs4_python爬虫――selenium+bs4爬取选股宝‘利好‘or’利空'股票信息...

    一.前言.(1)我个人比较喜欢先看结果,再看内容,so,结果如图: (2)信息抓取自选股宝https://xuangubao.cn/(我这里设定抓取加载20页,下面只列举几个): (3)本次主要应用到 ...

  8. python爬取物流信息_手把手教你用Python爬取快递100查询你的物流信息

    前言 我们经常会去查快递的物流单号,可是这些物流单号是从哪里来的呢? 快递鸟集合了多家快递公司查询接口,输入相应快递公司编码和快递单号就可以获取到对应的物流信息很方便快捷. 项目目标 教会大家如何用P ...

  9. Python爬虫——selenium爬取网易云评论并做词云

    大家好!我是霖hero 到点了上号网易云,很多人喜欢到夜深人静的时候,在网易云听音乐发表评论,正所谓:自古评论出人才,千古绝句随口来,奈何本人没文化,一句卧槽行天下!评论区集结各路大神,今天我们来爬取 ...

最新文章

  1. 那个计算机应用没有广告,为什么别人的电脑没有什么广告,而你的电脑一大堆呢?答案在这里...
  2. jquery控制只监听数字_无源!模拟!颜值高!简单实用!TC Level Pilot监听音量控制器...
  3. 用javascript自制ctf词频分析工具
  4. 安卓StepView事件进度条的简单实现
  5. [BZOJ2179]FFT快速傅立叶
  6. html长图滚动,Axure教程:长页或长图滚动效果
  7. Spring-3.2.4 + Quartz-2.2.0集成实例
  8. curl 请求日志_Java 日志实践:简明配置、日志抽样和级别动态修改
  9. yum [Errno 256] No more mirrors to try 解决方法
  10. 基于OSSIM平台的信息系统安全风险评估实施指南
  11. 2022年上半年系统集成项目管理工程师上午真题及答案解析
  12. JAVA安卓植物大战僵尸主题四子棋游戏
  13. Ceres-Solver使用指南
  14. 一阶线性齐次,非齐次方程的通解和解的结构定理,推导过程。
  15. 手机兼容性测试--testin云测
  16. NSGA 2 学习笔记 -- crowding distance
  17. css 五彩斑斓的黑,b站老陈打码。
  18. oracle 如何导入txt,Oracle中导入TXT并进行处理
  19. TSO 时间戳转换为自然时间
  20. 吉里吉里2中TJS2 VM的dispatch loop

热门文章

  1. 【已解决】Defects4J v2.0 Jsoup checkout失败
  2. WebRTC 系列(二、本地通话,H5、Android、iOS)
  3. 富有哲理的五个小故事
  4. 富文本编辑的图片在手机,移动端显示图片img太大,超出屏幕,出现滚动条,富文本中的图片如何修改样式
  5. 安装mysql对电脑有什么要求_在同台电脑上再次安装MySql需要注意的事项
  6. OSC职位推荐:腾讯 SNG 喊你来面试啦
  7. 【湃哒星说安全】内网渗透技巧之RdpThief实践
  8. 【OpenCV(C++)】分离颜色通道、多通道图像混合
  9. 简单几步实现Android 一键锁屏,一键卸载程序,一键激活设备管理权限
  10. 无线蓝牙耳机哪款音质好?四款音质好的蓝牙耳机推荐