栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python+selenium(selenium反爬)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python+selenium(selenium反爬)

一、Selenium交互

用selenium打开网页后,也可以做一系列真人的操作,也就是利用selenium和浏览器交互。以下几个函数较为重要:

    input.send_keys() 传递输入内容给某输入框button.click() 点击某按钮browser.execute_script()执行某脚本例如滑动页面browser.back()回到上一页面browser.forward()前往下一页面

下面的示例代码可以实现自动打开百度搜索,输入周杰伦,滑动页面到最底部,点击下一页,回退到上一页面,前进到下一页面,关闭浏览器的一系列操作(自动化,神奇!):

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

path = 'chromedriver.exe'
browser = webdriver.Chrome(path)

url = 'https://www.baidu.com'
browser.get(url)

time.sleep(2)

# 找到输入框,并输入‘周杰伦’
input_ = browser.find_element(By.ID, 'kw')
input_.send_keys('周杰伦')

time.sleep(2)

# 找到’百度一下‘,并点击
button = browser.find_element(By.ID, 'su')
button.click()

time.sleep(2)
# 滑动页面到底部
js_bottom = 'document.documentElement.scrollTop=100000'
browser.execute_script(js_bottom)

time.sleep(2)

# 找到’下一页‘,并点击
next_page = browser.find_element(By.CLASS_NAME, 'n')
next_page.click()

# 返回上一页
browser.back()
time.sleep(2)

# 前进一页
browser.forward()
time.sleep(2)

# 关闭页面
browser.quit()

不过运行次数多了,百度会弹出一个安全验证,以判断你是不是真人,之后再研究如何破解。。


二、Chrome headless

selenium运行的速度较慢,一部分原因是它有界面。在selenium中还有两个可以让你不打开UI界面使用浏览器的方式,Phantomjs和headless。Phantomjs已经被弃用停止维护,所以这里只介绍headless。

其配置方式很固定,一般将其封装为一个函数。虽然没有UI界面,但是可以通过browser.save_screenshot()来获取浏览器屏幕截图。

代码如下

from selenium import webdriver
from selenium.webdriver.chrome.options import Options


def share_browser():
    chrome_options = Options()
    chrome_options.add_argument('headless')  #是--headless不是__headless
    chrome_options.add_argument('--disable-gpu')

    # 本机chrome浏览器所在位置
    path = r'C:Program Files (x86)GoogleChromeApplicationchrome.exe'
    chrome_options.binary_location = path

    broswer = webdriver.Chrome(chrome_options=chrome_options)
    return broswer


browser = share_browser()
url = 'https://www.baidu.com'
browser.get(url)
browser.save_screenshot('baidu.png')

总结
    selenium交互分为有界面和无界面两种方式有界面交互能看到每一个步骤,但速度慢无界面交互Phantomjs已被弃用,headless配置方法和函数封装直接copy即可。save_screenshot()可以浏览器截屏。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/772830.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号