本文是基于python的selenium爬虫操作

文章目录

    • 本文是基于python的selenium爬虫操作
  • 前言
  • 一、selenium爬虫
  • 二、使用步骤
    • 1.安装
    • 2.爬虫代码部分
  • 三、简单有用的操作

前言

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
这个地方百度百科过来的,主要是让模拟人的操作,或者自动化之类的操作


一、selenium爬虫

selenium爬虫是爬虫板块一个比较重要的部分,他可以解决很多问题,比如:直接解析网页解析不了,或者动态加载的网页,还有需要点击之类的操作,selenium是一个很好的解决办法。


这里值得一提的是:js加载或者ajax加载,emm,可以考虑抓包的方式。

推荐抓包软件:Fiddler

抓包的话后面有空再说这里先说selenium
加一个selenium官方文档链接:selenium官方文档.
emm,看不懂的可以选择中午文档了解

二、使用步骤

1.安装

说明一下安装

pip install selenium

这玩意结束后
下载一个chromedriver插件,这里我只说谷歌版的,我用的谷歌。
下载链接好了插件下载链接.
这有个小细节,就是你要先确认你的谷歌版本号然后再去选择你要的,一般x64就下载64位,但是64也会兼容32,一般是向下兼容。

方法一:
下载好了就把这个放在有环境配置的地方,就可以了
方法二:
这个办法不行的话
可以换一个:
直接调用:

from selenium import webdriver
option = webdriver.ChromeOptions()
option.binary_location = 'D:\Program Files\Google\Chrome\Application\chrome.exe'
driver = webdriver.Chrome(chrome_options=option)

这个是自己定位chrome的位置去调用。

2.爬虫代码部分

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
import pandas as pd
import re
from lxml import etree
import timeoption = webdriver.ChromeOptions()
option.binary_location = 'D:\Program Files\Google\Chrome\Application\chrome.exe'
driver = webdriver.Chrome(chrome_options=option)
driver.get('https://search.51job.com/list/060000,000000,0000,00,9,99,%2B,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=')
wait = WebDriverWait(driver, 10)search_btn = driver.find_element_by_css_selector('#keywordInput'
)
input1 = search_btn.send_keys('数据分析')# 点击搜索
confirm_btn = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#search_btn'))
)
data1 = confirm_btn.click()
#点击连接
#对点击连接作循环
a=1
while True:next_to_page = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'body > div:nth-child(4) > div.j_result > div > div.leftbox > div:nth-child(4) > div.j_page > div > div > div > ul > li.next > a')))html = etree.HTML(driver.page_source)rqq = html.xpath('//div[@class="j_joblist"]/div[@class="e"]')job3=[]for p in rqq:item2={}link = p.xpath('./a/@href')[0]driver.get(link)html2 = etree.HTML(driver.page_source)info = html2.xpath('/html/body/div[3]/div[2]/div[2]/div/div[1]/p[2]/text()')info1 = re.sub('\s',"",info[0]).split('|')item2['条件'] = ",".join(info1[1:-2])num = re.findall("(\d+)人",info[-2])[0] if len(re.findall("(\d+)人",info[-2]))>0 else "若干"item2['招聘人员'] = numtreatment = html2.xpath('/html/body/div[3]/div[2]/div[2]/div/div[1]/div/div/span/text()')item2['待遇'] = treatmentjob3.append(item2)time.sleep(3)if a > 1:breakelse:a = a + 1next_to_page.click()data3=pd.DataFrame(job3)
print(data3)

运行结果:


三、简单有用的操作

这里讲一些selenium的简单操作:

动态加载只显示部分的网页需要滑动网页到最下面的:

driver.execute_script("window.scrollTo(0,1680)")# 直接拖动到底部
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

比如爬取京东selenium可以将网页拉到最下面进行点击


 windows = driver.window_handles
# 切换到当前最新打开的窗口
driver.switch_to.window(windows[-1])

切换到新打开的页面。


网页的向前向后

driver.back() #向后
driver.forward() #向前
driver.close() #关闭当前页面
driver.quit() #直接关闭你打开的网页,整个
driver.page_source()  #这个获取网页源码

这个地方还得提一点:
网页等待,这玩意分为显式和隐式以及强制等待:
①显式等待:
这个地方可以这么理解:直到什么才做什么,同时也在不断的检测,返回,确定需要的地方是否已经加载完毕
上面的爬虫代码中就运用了很多的显式等待

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
import pandas as pd
import re
from lxml import etree
import timeoption = webdriver.ChromeOptions()
option.binary_location = 'D:\Program Files\Google\Chrome\Application\chrome.exe'
driver = webdriver.Chrome(chrome_options=option)
driver.get('https://search.51job.com/list/060000,000000,0000,00,9,99,%2B,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=')
wait = WebDriverWait(driver, 10)
# 点击搜索
confirm_btn = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#search_btn'))
)
data1 = confirm_btn.click()

②隐式等待:
一般这个是等到网页加载完毕后,在进行下一步,否则会等到时间结束才进行下一步,但是这个缺点也是比较明显的,容易造成加载超时。

driver.implicitly_wait(15)
一般用于加载网页的等待

③强制等待:强制性等待时间结束:然后才运行接下来的代码部分
一般是time模块下的

import time
import random
time.sleep(3)
或者考虑随机随眠时间
time.sleep(random.randint(1,5))
随机取1到5之内的数

emm,到这里应该也差不多了,后面还有什么东西,我再来补充
干饭干饭!!!


注:本文中如有错误部分,劳烦指正,谢谢啦。

python-selenium爬虫操作相关推荐

  1. Python Selenium爬虫实战应用

    本节讲解 Python Selenium 爬虫实战案例,通过对实战案例的讲解让您进一步认识 Selenium 框架. 实战案例目标:抓取京东商城(https://www.jd.com/)商品名称.商品 ...

  2. python selenium爬虫实例_python使用selenium爬虫知乎的方法示例

    说起爬虫一般想到的情况是,使用 python 中都通过 requests 库获取网页内容,然后通过 beautifulSoup 进行筛选文档中的标签和内容.但是这样有个问题就是,容易被反扒机制所拦住. ...

  3. python selenium爬虫

    python selenium爬虫 1 前言 博主是一名经管研究生,以自身经历为例.如今大学生写论文大部分都需要数据支撑来论证研究结果,数据除了从数据库直接下载外,有些是需要通过网络爬虫来获得.网络爬 ...

  4. python selenium爬虫_详解基于python +Selenium的爬虫

    详解基于python +Selenium的爬虫 一.背景 1. Selenium Selenium 是一个用于web应用程序自动化测试的工具,直接运行在浏览器当中,支持chrome.firefox等主 ...

  5. python selenium爬虫代码示例_python3通过selenium爬虫获取到dj商品的实例代码

    先给大家介绍下python3 selenium使用 其实这个就相当于模拟人的点击事件来连续的访问浏览器.如果你玩过王者荣耀的话在2016年一月份的版本里面就有一个bug. 安卓手机下载一个按键精灵就可 ...

  6. python+selenium爬虫自动化批量下载文件

    一.项目需求 在一个业务网站有可以一个个打开有相关内容的文本,需要逐个保存为TXT,数据量是以千为单位,人工操作会麻木到崩溃. 二.解决方案 目前的基础办法就是使用python+selenium自动化 ...

  7. python selenium 爬虫 模拟浏览网站内容

    使用python selenium编写的爬虫代码,模拟用户浏览某个网站内容,废话少说进入正文. 1.爬虫界面如下: 界面使用说明: 第一步:填写要访问的网站地址 第二步:填写每天访问该网址的次数 第三 ...

  8. python+selenium爬虫按照名单循环爬取作者知网下载量等信息

    主要爬取下面的表格内的信息如文献篇数,被引用数等等 用的是selenium爬虫 from selenium import webdriver from selenium.common.exceptio ...

  9. 手把手教你Python+selenium爬虫百度文库源码+解析

    免费资源猫-爱分享的猫. 最近小编在弄python爬虫项目,可能大家一听爬虫,就觉得高大上,其实爬虫并没有多难,只要你稍微研究一下,掌握了基础的东西,后续爬虫就是重复利用的事情了.今天给大家来一下普及 ...

  10. Python Selenium爬虫实现歌曲免费下载

    最近发现越来越多的歌曲下载都需要缴费了,对维护正版是好事.但有的时候也想钻个空子,正好最近在学习python,随手写了一个建议爬虫,用来爬取某播放软件的在线音乐. 主要思路就是爬取播放页里的播放源文件 ...

最新文章

  1. java获取object属性值_java反射获取一个object属性值代码解析
  2. java map集合遍历方法,Java的Map集合的三种遍历方法
  3. 【转载】SVD在推荐系统中的应用
  4. 【Python基础】Pandas参数设置的八个小技巧
  5. SpringMVC获取请求参数-集合类型
  6. nano编辑器使用教程
  7. Hyper-V与VMware的技术特性对比
  8. java 对象深拷贝_java深入理解浅拷贝和深拷贝
  9. 【PowerShell】逐行处理文本示例
  10. 调用vba_VBA代码解决方案的第86讲内容:VBA代码的优化篇
  11. 统计学习(三):假设检验与 p-values
  12. 阿里云云计算 27 在线实验--SLB初体验
  13. vim的异常退出处理
  14. 项目经理也分三六九等,初级项目经理和高级项目经理的区别
  15. JavaWeb开发前景
  16. fairplay密码
  17. Win10 Linux子系统编译Android系统源码
  18. 滚动控件(ScrollBar)
  19. VMWare虚拟机识别USB设备
  20. Http强缓存和协商缓存

热门文章

  1. java中构造函数使用(一)
  2. Python3网络爬虫(一):利用urllib进行简单的网页抓取
  3. 微软office 2016_如何升级到Microsoft Office 2016
  4. python global和nonlocal_python global和nonlocal用法解析
  5. 分清ul和li的边界
  6. Webshell河马后门查杀工具配合shell脚本实现多站点自动化查杀
  7. 转:线程中CreateEvent和SetEvent及WaitForSingleObject的用法
  8. Linux之awk命令详解
  9. ORACLE数据库DG备库配置,配置DG物理备库
  10. Lucene SmartChineseAnalyzer 自定义扩展 同义词