selenium以及IP相关介绍

- selenium以及IP相关介绍
selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击、下拉等动作,同时还可以获取浏览器当前呈现页面的源代码,做到可见即可爬。因为一些JavaScript动态渲染的页面来说,有很多接口或者加密参数,难以找出其规律。利用selenium可以模拟浏览器爬取。
1、准备工作
以火狐Firefox浏览器为例 ,安装好火狐浏览器以及python中安装好selenium模块。selenium还支持其他很多的浏览器,比如 Chorme,Firefox,Edge,还有Android,BlackBerry 等手机端的浏览器。无界面浏览器PhantomJS.
2、声明浏览器对象

from selenium import webdriver
#浏览器初始化对象并赋值给browser
browser = webdriver.Chorme()
browser = webdriver.Firefox()
browser = webdriver.Edge()
#接下来调用browser
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('https://www.baidu.com/')
print(browser.page_source)
browser.close  #弹出火狐浏览器并访问了百度网页,在关闭

3、查找节点
获取单个节点的方法:假设这个节点 id = “q”,name = “q”
find-element-by-id(‘q’)
find-element-by-name(“q”)
find-element-by-xpath(’//*[@id=“q”]’)
find-element-by-css-selector(’#q’)以及
find-element-by-link-text
find-element-by-partial-link-text
find-element-by-tag-name
find-element-by-class-name方法
4、查找多个节点
find-element()只能得到一个节点,find-elements()可以找到多个节点,结果内容就变成list型,,列表中优又是webelement型。
5、节点交互
输入文字send-keys(‘输入内容’)方法,清空文字clear(),点击按钮click()方法。
6、动作链
键盘按键、鼠标拖动,这些动作没有特定的对象,需要动作链来完成。

from selenium import webdriver
from selenium.webdriver import ActionChains

browser = webdriver.Firefox()
url ='     '
browser.get(url)
source = browser.find_element_by_css_selector('选择一个节点')
target = browser.find_element-by_css_selector('选择一个节点')
actions = ActionChains(browser)
actions.darg_and_drop(source,target)
actions.perform()
browser.excute_script()将进度拉到最底部

6、获取节点信息

#先获取节点
logo = browser.browser.find_element_by_css_selector('q')
#获取节点属性
print(logo.get_attribute('class'))
#获取文本get_text(),和text()方法
print(logo.text)

7、切换frame
selenium打开之后,默认在父级frame里面操作,而有些信息在子frame里面,子frame结构与父级结构是一样的。要获取子frame里面的信息,需要用到如下

browser.switch_to.frame('iframeResult') #转到子frame
browser.switch_to.parent_frame('iframeResult') #再转到f父级frame

8、使用selenium模拟登录163邮箱

import time
from selenium import webdriver
browser  =  webdriver.Firefox()
url = 'https://mail.163.com/'
browser.get(url)
time.sleep(3)
browser.maximize_window()#打开网页窗口
time.sleep(4)
browser.switch_to.frame(0)
email = browser.find_element_by_name('email')#账号输入框
email.send_keys('****[email protected]')
password = browser.find_element_by_name("password")#密码输入框
password.send_keys('wq****')#输入密码
login_em = browser.find_element_by_id('dologin')#登录按钮
login_em.click()
time.sleep(5)

IP介绍
IP是英文Internet Protocol的缩写形式。
IP协议要求所有参加Internet的网络节点要有一个统一规定格式的地址,简称IP地址。在Internet网上,每个网络和每一台计算机都被分配有一个IP地址,这个IP地址在整个Internet网络中是唯一的。
1、IP为什么会被封?
服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误的信息,这种情况可以称为服务。
2、防止IP被封的一种有效方式就是代理。
我们正常请求一个网站时,是向web服务器发送了请求,web服务器把响应传回给我们。如果设置了代理服务,此时不是直接向web服务器发起请求,而是向代理服务发出请求,请求会发送给代理服务,然后由代理服务发送给web服务器,接着由代理服务器将响应传回给我们。这个过程中web服务器识别出的IP就不是我们真实的本机的IP了。就成功实现了IP伪装。这就是基本代理原理。
3、构建代理池

你可能感兴趣的:(逼着自己学习的girl,selenium基础学习)