Python爬虫编程6——selenium

目录

爬虫和反爬虫的斗争

爬虫建议

ajax基本介绍

动态了解HTML技术

获取ajax数据的方式

一.Selenium+chromedriver

Selenium介绍

Phantomjs快速入门

Phantomjs案例

selenium快速入门

定位元素

操作表单数据

鼠标行为链

Selenium页面等待

Cookie操作

页面等待

打开多窗口和切换页面

特征识别和设置无头窗口

selenium常用的js操作

二.图形验证码识别

Tesseract安装以及操作

云打码平台的使用


爬虫和反爬虫的斗争

爬虫建议

(1)尽量减少请求次数,保存或取的HTML,供查错和重复使用;

(2)关注网站的所有类型的页面,H5页面,APP等等;

(3)设置多伪装,代理IP,随即请求头等;

(4)利用多线程分布式,再不被发现的情况下我们尽可能提高速度。

ajax基本介绍

动态了解HTML技术

(1)JS:是网络上最常用的脚本语言,它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页;

(2)jQuery:jQuery是一个快速,简介的JavaScript框架,封装了JavaScript常用的功能代码;

(3)ajax:ajax可以使用网页实现异步更新,可以在不重新加载整个页面的情况下,对页面的某部分进行更新。

获取ajax数据的方式

(1)直接分析ajax调用的接口。然后通过代码请求这个接口;

(2)使用Selenium+chromedriver模拟浏览器行为获取数据;

一.Selenium+chromedriver

Selenium介绍

1.selenium是一个web的自动化测试工具,最初是为网站自动化测试而开发的,selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接受指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。

2.chromedriver是一个驱动Chorme浏览器的驱动程序,使用它才可以驱动浏览器。当然针对不同的浏览器有不同的driver。以下列出了不同浏览器及其对应的driver:

(1)Chrome:https://sites.google.com/a/chromium.org/chromedriver/downloads

(2)Firefox:Releases · mozilla/geckodriver · GitHub

(3)Edge:Microsoft Edge Driver - Microsoft Edge Developer

(4)Safari:WebDriver Support in Safari 10 | WebKit

Phantomjs快速入门

无头浏览器:一个完整的浏览器内核,包含js解析引擎,渲染引擎,请求处理等,但是不包含显示和用户的页面的浏览器。

Phantomjs案例

# 1.加载网页
from selenium import webdriver
driver = webdriver.PhantomJS("安装目录")
driver.get("https://www.baidu.com")
driver.save_screenshot("baidu.png")

# 2.定位和操作
driver.find_element_by_id("kw").send_keys("长城")
driver.find_element_by_id("su").click()

# 3.查看请求信息
driver.page_source
driver.get_cookies()
driver.current_url

# 4.退出
driver.quit() 

注意:在新版的selenium中没有Phantomjs,所以这里不做更多的解释。

selenium快速入门

from selenium import webdriver

# 实例化浏览器
driver = webdriver.Chrome()

# 发送请求
driver.get('https://www.baidu.com')

# 退出浏览器
driver.quit()

定位元素

(1)find_element_by_id:根据id查找某个元素:

submitTag = driver.find_element_by_id('su')
submitTag1 = driver.find_element(By.ID,'su')

(2)find_element_by_class_name:根据类名查找某个元素:

submitTag = driver.find_element_by_class_name('su')
submitTag1 = driver.find_element(By.CLASS_NAME,'su')

(3)find_element_by_name:根据name属性值查找某个元素:

submitTag = driver.find_element_by_name('email')
submitTag1 = driver.find_element(By.NAME,'email')

(4)find_element_by_tag_name:根据标签名查找某个元素:

submitTag = driver.find_element_by_tag_name('div')
submitTag1 = driver.find_element(By.TAG_NAME,'div')

(5)find_element_by_xpath:根据xpath语法查找某个元素:

submitTag = driver.find_element_by_xpath('//div')
submitTag1 &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值