网络爬虫“一课一得”

抓取动态网络数据

对于动态网页的数据可以直接使用模拟浏览器运行的方式进行实现,这样做可以不用管网页内部是如何使用javaScript渲染页面的,也不用管Ajax请求中到底有没有加密参数,在浏览中看到是什么样的内容,抓取的结果便是什么样的内容。Python中提供了许多模拟浏览器运行的库,包括Slenium、Splash、PyAytoGUI等。

-Slenium可以直接运行在浏览器中,模拟用户使用浏览器完成一些动作,包括自动加载页面、输入文本、选择下框、单击按钮、单机超链接等。不过,Selenium本身不带浏览器,它通过一个浏览器驱动程序WebDriver才能与所选浏览器进行交互。

-Solash

1.采用异步方式并处理多个网页渲染过程

2.获取渲染后面的源代码

3.通过关闭图像或使用Adblock Plus规则加快页面渲染速度。

4.可以执行特定的javaScript脚本

5.可以通过Lua脚本控制页面的渲染过程。

6.以HAR格式呈现获取渲染的详细过程。

-PyAutoGUI

1.移动鼠标并在其他应用程序的窗口中单击或键入文本。

2.想应用程序发送按键,比如填写表格。

3.截图屏幕并发送一张图像,在屏幕上找到它。

4.定位应用程序的窗口,并移动、调整大小、最大化、最小化或关闭该窗口。

WebDriver类的床用属性和方法

为模仿用户真实操作浏览器的过程,webdriver模块的WebDriber类中提供了一些执行诸如打开浏览器、关闭浏览器、页面刷新、前进、后退等入门操作的方法或属性。

定位元素

Selenium的WebDriver类中提供了定位元素的方法,这些方法元素的熟练可以分为定位单个元素个定位多个元素。

1.通过class属性定位元素

2.通过指定方式定位元素

find_element()方法是定位元素的通用方法,与其他几个方法相比,它更加灵活,可以通过参数指定定位方式。(find_element()方法中的参数by表示定位方式,该参数支持取值)

3.通过指定方式定位元素

使用find_element()方法定位豆瓣电影的评论数据中class属性值为short的元素

鼠标操作

常用的鼠标操作有双击、右击、拖拽、按住不动等,它们都封装为ActionChains类的方法。

1.单击鼠标左键

 2.鼠标指针悬停

3.鼠标拖拽 

下拉列表框操作 

Selenium中,select类专门用于处理下拉框,该类提供了一下几个方法从下拉框中选择或者取消选项。

#select_by_index():根据索引选择下拉框中的选项,且索引是从0开始的。

#sekect_by_value():根据值选择下拉框中的选项,这里的值是<option>元素中value属性的值,而不是下拉框中选项的值。

#sekect_by_visible_text():根据文字选择下拉框的选项,这里的文字是<option>元素的文本内容。

#deselect_all():取消全部选择。

弹出框的处理

selenium中的Alert类用于处理这3类弹出框,不过在处理弹框之前需要先使用WebDriver类对象的switch_to_alert选中弹出框。

1.要想处理警告框,Selenium的Alert类提供了text属性和accept()方法,其中text属性用于获取警告框中的警告消息;accpet()方法用于单击确定按钮。

 要想处理确认框,Selenium的Alert类中提供了text属性、accept()方法和dismiss()方法,其中text属性和acccept()方法与警告框中的作用相同,dismiss()方法用于单击"取消"按钮。

弹出框处理

要想处理提升框,Selenium的Alert类中提供了text属性、accept()方法、dismiss()方法和send_keys(),前三个属性或方法的作用与确认框中的作用相同,send_keys方法用于接收用户输入的内容。

 页面切换

在浏览器中建议同事打开多个窗口,但每次只能显示一个窗口的页面。拖希望显示其他窗口的页面,则需要单击窗口上方的选项卡,达到页面切换的效果。

Selenium通过窗口句柄来区分浏览器的窗口,它为每个浏览器窗口分配了唯一句柄ID,通过这个句柄Id可以切换到指定页面。Selenium的WebDriver类中提供了一些操作窗口句柄的属性或方法。

window_handles:获取所有窗口的句柄ID

current_window_hanle:获取当前窗口的句柄ID

switch_to.window():跳转到指定窗口

好文

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值